【问题标题】:Are there real logs anywhere for S3 AccessDenied?S3 AccessDenied 的任何地方都有真实的日志吗?
【发布时间】:2021-07-19 10:22:28
【问题描述】:

使用无服务器框架。我正在使用 python 在 lambda 中进行一些图像处理,并将结果放入 S3 存储桶中,以便通过 URL 公开访问。

我花了几个小时阅读我能找到的每个堆栈溢出答案、示例代码等,以展示这是如何完成的。但没有骰子。我根本无法创建有效的最低权限。对于这个python代码:

with open("/tmp/" + filename, "rb") as f:
    s3_client.upload_fileobj(f, bucket_name, filename)

这个大锤子可以很好地获得权限:

iamRoleStatements:
- Effect: 'Allow'
  Action:
    - 's3:*'
  Resource: "arn:aws:s3:::*"

但我无法使用激光聚焦的最小权限使其工作:

iamRoleStatements:
- Effect: 'Allow'
  Action:
    - 's3:PutObject'
    - 's3:PutObjectAcl'
    - 's3:GetObject'
    - 's3:GetObjectAcl'
  Resource: "arn:aws:s3:::mah-bucket/*"
- Effect: 'Allow'
  Action:
    - 's3:ListBucket'
  Resource: "arn:aws:s3:::mah-bucket"

堆栈跟踪没有帮助。 AccessDenied 仅此而已。任何地方似乎都没有有用的日志。是否有什么明显的我做错了,或者在某个地方我可以看到有关写入失败的良好信息?

【问题讨论】:

    标签: python amazon-s3 aws-lambda amazon-iam serverless-framework


    【解决方案1】:

    这些天 iamRoleStatements: 已被弃用,而是使用 I am docs for reference

    用于写入需要 listing and put permission 的存储桶的示例细粒度策略

    iam:
        role:
          statements:
            - Effect: "Allow"
              Action:
                - "s3:ListBucket"
              Resource:
                Fn::Join:
                  - ""
                  - - "arn:aws:s3:::"
                    - "bucket-name"
            - Effect: "Allow"
              Action:
                - "s3:PutObject"
              Resource:
                Fn::Join:
                  - ""
                  - - "arn:aws:s3:::"
                    - "bucket name"
                    - "/*"
    

    没有加入

    provider:
        iam:
         role:
          statements:
           - Effect: "Allow"
             Action:
              - "s3:ListBucket"
             Resource: "arn:aws:s3:::bucket-name"
           -  Effect: "Allow"
              Action:
               - "s3:PutObject"
              Resource: "arn:aws:s3:::buket-name/*"
    

    【讨论】:

    • 感谢您的回复。那里有太多旧的/不推荐使用的代码,我有一段时间没有查看文档了。这么多流血的边缘。您的示例导致无服务器在 SLS 部署时崩溃。我从大约 2 周前安装的任何内容更新到 2.39,它发现了间距问题。具有讽刺意味的是,您链接的页面上的示例立即起作用并演示了 REF 功能的使用。再次感谢。
    • 很高兴为您提供帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 2012-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-24
    相关资源
    最近更新 更多