我需要您就这个问题提供帮助,在经过更多解决方案调整后,我总是遇到问题。
我尝试通过以下链接上发布的答案来解决此问题,但对我来说没有任何效果:
使用桶级权限调用PutObject操作时拒绝访问 https://bobbyhadz.com/blog/aws-s3-access-denied-when-calling-putobject
正在开发部署为 docker 镜像的 lambda 函数,该函数必须将一些数据保存在 S3 上的文件中。
IAM 策略具有
ListBucket
、GetObject
、PutObject
的权限,但在生产中这不起作用:我尝试在存储桶上应用策略,但得到了相同的结果(以下问题)。我最终决定将这个桶公开,不幸的是这也没有成功。
桶政策:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "Statement1", "Effect": "Allow", "Principal": "*", "Action": "s3:*", "Resource": "arn:aws:s3:::bucket-xxx/*" } ] }
你能帮我解决这个问题吗?
谢谢你。
首先,修复存储桶策略:您允许任何经过身份验证的 AWS 主体对您的存储桶的内容执行任何操作。如果我知道它的名字,我现在就可以删除你的所有数据。 “Principal”字段应仅命名您需要访问存储桶的那些主体。
对于你原来的问题,我怀疑你的Bucket是使用KMS CMK加密的?在这种情况下,您的调用者也需要获得使用 CMK 的权限。在您的 CMK 密钥策略中添加类似的内容,以允许您写入存储桶:
{
"Action": [
"kms:GenerateDataKey"
],
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:role/your_lambda_Role"
},
“资源”:“*” }
请参阅 https://repost.aws/knowledge-center/s3-bucket-access-default-encryption 了解更多详细信息。