我正在实现AWS lambda函数
(JavaScript,node.js环境)
它使用了一个类似这样的调用:
const aws = require('aws-sdk');
const s3 = new aws.S3();
function work1(obj, cb_Work1) {
console.log(">>> Calling work");
s3.putObject({
Bucket: bucketName,
Key: 'test.txt',
Body: JSON.stringify(obj)
})
.promise()
.then(() => {
console.log('S3 -> UPLOAD SUCCESS');
work2(obj, (resp) => {
cb_Work1(resp);
});
})
.catch(e => {
console.log('S3 -> UPLOAD ERROR');
console.log(e);
cb_Work1({
error: e
});
});
}
所以这里Key
似乎是文件名。
但问题是我还没有找到s3.putObject
的详细文档,所以我不知道
1)如何指定目录名(而不仅仅是存储桶名),
2)如何定义正在创建文件的权限
3)如何创建一个子目录之前,把文件,等等,等等。
如何通过aws-sdk
(从JavaScript,node.js代码)完成这些事情?
非常感谢。
2条答案
按热度按时间b5buobof1#
如S3文档here所述:
Amazon S3控制台将所有在键名中以正斜杠“/”字符作为最后一个(尾随)字符的对象视为文件夹,例如examplekeyname/。您无法使用Amazon S3控制台上传键名末尾带有“/”字符的对象。但是,可以使用AWS CLI、AWS SDK或REST API通过Amazon S3 API上传以结尾“/”命名的对象。
对于权限,API提供了 putObjectAcl 函数,允许定义放置对象时使用的ACL。
mw3dktmi2#
Key(文件名)包含对象的完整路径,例如:
所以,如果你想上传到一个特定的文件夹,只需在Key中包含完整的路径,它就会工作。
您可以将其复制到不存在的文件夹中,系统将为您创建该文件夹。然后,如果您删除对象,文件夹将被删除,因为它实际上从未存在!