Javascript 如何在AWS lambda代码中为S3指定目录、权限和创建子目录?
我正在实现AWS lambda函数Javascript 如何在AWS lambda代码中为S3指定目录、权限和创建子目录?,javascript,node.js,aws-lambda,Javascript,Node.js,Aws Lambda,我正在实现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
(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) 如何指定目录名(不仅仅是bucket名),
2) 如何定义我正在创建的文件的权限
3) 如何在放置文件之前创建子目录等 如何通过aws sdk(来自JavaScript,node.js代码)完成这些工作
非常感谢 如S3文档中所述: AmazonS3控制台将所有具有正斜杠“/”字符的对象作为键名中的最后一个(尾随)字符作为文件夹处理,例如examplekeyname/。您不能使用AmazonS3控制台上载带有尾随“/”字符的键名的对象但是,通过使用AWS CLI、AWS SDK或REST API,可以使用Amazon S3 API上载以“/”结尾命名的对象。
至于权限,API提供了putObjectAcl函数,该函数允许在放置对象时定义要使用的ACL。首先是文档。其次,您误解了S3的工作原理。S3中没有文件夹/目录(尽管它提供了它们的假象);参见@404本页说明:
API版本:2006-03-01
您确定这是最新版本吗?是的,这是最新版本。请参阅:“AmazonS3API的当前版本是2006-03-01”@404 OK,那么它似乎是一个非常有用的书签URL。谢谢