我需要你的帮助,在这个问题上,我总是得到问题后,许多更多的解决方案适应。
我尝试通过以下链接解决此问题,但没有任何结果:
Getting Access Denied when calling the PutObject operation with bucket-level permissionhttps://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/*"
}
]
}
字符串
你能帮我解决这个问题吗?
谢谢
1条答案
按热度按时间5gfr0r5j1#
首先,修复Bucket策略:您允许任何经过认证的AWS主体对您的Bucket的内容做任何事情。如果我知道它的名称,我可以立即删除您的所有数据。“Principal”字段应该只命名您需要访问Bucket的那些主体。
至于您最初的问题,我怀疑您的Bucket是使用KMS CMK加密的?那么您的调用者也需要CMK的使用权限。在CMK的密钥策略中添加这样的内容,以允许您写入Bucket:
字符串
请参阅https://repost.aws/knowledge-center/s3-bucket-access-default-encryption了解更多详细信息。