尝试使用基于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 策略

为啥我的 lambda 函数在尝试访问 S3 存储桶时会被拒绝访问?

使用 Amazon S3 阻止公有访问

S3 拒绝管理员访问

基于 Cognito ID 的 S3 文件夹访问的 IAM 策略

允许用户访问特定 S3 存储桶进行备份的 AWS IAM 策略