我们一直在努力解决与S3和Lambda相关的资源权限问题。
我们有一个root帐户,其中包含 - 帐户A - 桶主人 帐户B - 用于上传(通过CORS)并提供对S3图像的访问 ROLE L - 我们有一个lambda函数,它为此角色分配了完全S3访问
存储桶具有如下的访问策略 -
{
"Version": "2012-10-17",
"Id": "Policyxxxxxxxxx",
"Statement": [
{
"Sid": "Stmt44444444444",
"Effect": "Deny",
"NotPrincipal": {
"AWS": [
"arn:aws:iam::xxxxxxxxxxxx:user/account-A",
"arn:aws:iam::xxxxxxxxxxxx:role/role-L"
]
},
"Action": [
"s3:*",
],
"Resource": [
"arn:aws:s3:::bucket",
"arn:aws:s3:::bucket/*"
]
}
]
}
问题 - 仅当对象ACL设置为Public / read-only时,lambda才能访问S3资源。但是,当资源设置为“私有”时,Lambda会失败。
Bucket策略只允许访问存储桶。有没有办法给角色L读取资源访问权限?
答案 0 :(得分:2)
存储在Amazon S3存储桶中的对象默认为私有。除非您希望覆盖授予对内容的访问权限的其他策略,否则无需使用Deny
策略。
我建议:
Deny
政策根据需要随意添加 Bucket Policy 以供正常使用,但这不应影响您通过角色授予的Lambda函数访问权限。