【发布时间】:2019-10-21 08:27:40
【问题描述】:
您好,我尝试列出 S3 存储桶的“文件夹”中的所有文件。所以我尝试:
const params = {
Bucket: s3bucketname,
Prefix: foldername + "/"
};
const data = await s3.listObjectsV2(params).promise()
console.log(data)
这给了我一个 AccessDenied 错误。
文件本身就是这样存储的
const params = {
Bucket: s3bucketname,
Key: foldername + "/" + filename,
ContentType: 'image/jpeg',
ACL: 'public-read',
Body: data
};
await s3.upload(params, tags).promise();
并且公开可用。效果很好。也使用
const params = {
Bucket: s3bucketname,
Key: folderfilename
};
await s3.headObject(params).promise()
工作正常。
yml 文件是这样的
S3BucketampstoryscreenshotsPolicy:
Type: AWS::S3::BucketPolicy
Properties:
Bucket:
Ref: S3Bucketampstoryscreenshots
PolicyDocument:
Statement:
-
Action:
- "s3:Get*"
Effect: "Allow"
我测试了多个小的变体,但在这里找不到问题?
【问题讨论】:
-
您需要 s3:ListBucket 来列出存储桶的内容。
-
与正在使用的凭证关联的 IAM 权限是什么? (这不是存储桶策略,它是与用于进行
ListBucketsV2()调用的 IAM 用户关联的 IAM 权限。) -
s3:ListBucket 丢失。谢谢。将发布解决方案
标签: node.js amazon-web-services amazon-s3 serverless