【问题标题】:s3.listObjectsV2 AccessDenieds3.listObjectsV2 拒绝访问
【发布时间】: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


【解决方案1】:

需要 ListBucket 语句。重要的是 Ref 一次使用 /* 一次没有 /* 没有这样设置会导致

操作不适用于声明中的任何资源(服务:亚马逊 S3;状态码:400;错误代码:MalformedPolicy;

这适用于我的情况:

       PolicyDocument: 
          Statement: 
            - 
              Action: 
                - "s3:GetObject"
              Effect: "Allow"
              Resource: 
                Fn::Join: 
                  - ""
                  - 
                    - "arn:aws:s3:::"
                    - 
                      Ref: "S3Bucketampstoryscreenshots"
                    - "/*"
              Principal: "*"
            - 
              Action: 
                - "s3:ListBucket"
              Effect: "Allow"
              Resource: 
                Fn::Join: 
                  - ""
                  - 
                    - "arn:aws:s3:::"
                    - 
                      Ref: "S3Bucketampstoryscreenshots"
              Principal: "*"

感谢 jarmod 的提示

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-24
    • 2021-11-06
    • 2012-09-11
    • 2021-07-27
    • 2013-08-15
    • 2023-03-22
    • 2020-09-30
    • 2013-10-25
    相关资源
    最近更新 更多