代码之家  ›  专栏  ›  技术社区  ›  Scofield

对具有预签名URL的S3 PUT请求的访问被拒绝

  •  6
  • Scofield  · 技术社区  · 7 年前

    我正在尝试使用预先签名的URL将文件直接上载到S3 bucket,但在PUT请求中出现访问被拒绝(403禁止)错误。

    bucket的CORS配置中允许PUT请求。

    我是否还需要使用允许更新bucket策略 s3:PutObject , s3:PutObjectAcl 行动

    P、 美国忘记添加。我已经尝试添加 s3:PutObject s3:PutObjectAcl 具有 Principal: * 在这种情况下,上传工作正常,但如何限制上传访问?它应该只对预签名的URL可用,对吗?

    1 回复  |  直到 7 年前
        1
  •  11
  •   Scofield    6 年前

    好吧,我知道怎么修了。以下是步骤:

    1. 代替 Principal: * 具有 "Principal": {"AWS":"arn:aws:iam::USER-ID:user/username"} . 而不是 USER-ID:user/username 放置您可以在Amazon IAM部分找到的理想用户凭据。在此处阅读有关Principal的更多信息: https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html .
    2. 请确保在中指定的用户 Principal s3:PutObject s3:PutObjectAcl 所需bucket的权限。
    3. 检查Lambda的功能权限。它也应该有 s3:PutObject , s3:PutObjectAcl 为所需的铲斗。您可以在IAM角色页面(如果您为Lambda函数创建了单独的角色)或通过函数设计器页面(只读)进行检查

    enter image description here