我正在尝试使用预先签名的URL将文件直接上传到S3存储桶,但在PUT请求上出现AccessDenied(禁止访问403)错误。
存储桶的CORS配置中允许PUT请求。
我还需要通过允许s3:PutObject
和s3:PutObjectAcl
操作来更新存储桶策略吗?
P.S.忘记添加。我已经尝试过将s3:PutObject
和s3:PutObjectAcl
与Principal: *
添加在一起,在这种情况下,上传工作正常,但是如何限制上传的访问权限?它应该仅适用于预签名的URL,对吗?
最佳答案
好的,我想出了解决方法。步骤如下:
Principal: *
替换"Principal": {"AWS":"arn:aws:iam::USER-ID:user/username"}
。您可以在Amazon IAM部分中找到所需的用户凭证,而不是USER-ID:user/username
。在此处阅读有关Principal的更多信息:https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_elements_principal.html。 Principal
中指定的用户具有所需存储桶的s3:PutObject
和s3:PutObjectAcl
权限。 s3:PutObject
,s3:PutObjectAcl
。您可以在IAM角色页面(如果您为Lambda函数创建了单独的角色)上或通过函数设计器页面(只读)进行检查关于amazon-web-services - 带有预签名URL的S3 PUT请求拒绝访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48340823/