尝试使用基于S3资源的策略允许Lambda访问S3,为什么它不起作用?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试使用基于S3资源的策略允许Lambda访问S3,为什么它不起作用?相关的知识,希望对你有一定的参考价值。
我显然是天真地尝试允许任何Lambda访问从S3存储桶读取。
[如果这是一个好的做法,请不要介意,但是为了理解,我将底部的资源策略应用于S3存储桶(存储桶,权限标签,存储桶策略)。
我以为他会允许任何lambda从桶中读取。但这没用。唯一起作用的是设置lambda的策略以允许从此存储桶中进行读取。
我的问题是,此基于S3资源的策略是什么意思? ui允许这样做,所以我认为这是有效的。但是呢谢谢!
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"Service": "lambda.amazonaws.com"
,
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
]
答案
它不起作用,因为您的函数承担其执行角色。
因此,您必须将功能的角色添加到存储桶策略中,而不是lambda服务:
"Version": "2012-10-17",
"Statement": [
"Effect": "Allow",
"Principal":
"AWS": "arn:aws:iam::xxxxxxx:role/service-role/<function-role>"
,
"Action": [
"s3:GetObject*",
"s3:GetBucket*",
"s3:List*"
],
"Resource": [
"arn:aws:s3:::mybucket",
"arn:aws:s3:::mybucket/*"
]
]
以上是关于尝试使用基于S3资源的策略允许Lambda访问S3,为什么它不起作用?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的 lambda 函数在尝试访问 S3 存储桶时会被拒绝访问?