从 Lambda 函数读取 s3 存储桶时拒绝访问

Jay*_*dha 5 python amazon-s3 amazon-web-services amazon-iam aws-lambda

我正在尝试使用 lambda 函数从我的 s3 存储桶中读取 json 文件。

我因以下错误而被拒绝访问:

Starting new HTTPS connection (1): test-dev-cognito-settings-us-west-2.s3.us-west-2.amazonaws.com 
An error occurred (AccessDenied) when calling the GetObject operation: Access Denied: ClientError
Run Code Online (Sandbox Code Playgroud)

我的代码片段如下:

import boto3
import logging

def trigger_handler(event, context):
logger = logging.getLogger()
logger.setLevel(logging.INFO)

s3 = boto3.resource('s3')

obj = s3.Object('test-dev-cognito-settings-us-west-2', 'test/map.json') // This line working
regions=obj.get()['Body'].read() // This line giving Access Denied :(

logger.info('received event: %s ',obj)

return event
Run Code Online (Sandbox Code Playgroud)

我附加到 lambda 函数的 IAM 角色如下:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "Test",
            "Effect": "Allow",
            "Action": "s3:Get*",
            "Resource": "arn:aws:s3:::*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

附加到 s3 存储桶的 IAM 角色如下。

{
    "Sid": "AllowForSpecificLambda",
    "Effect": "Allow",
    "Principal": {
        "AWS": "arn:aws:iam::XXXXXXXXXX:role/lambda_allow_pretoken_generation_jdtest"
    },
    "Action": "s3:*",
    "Resource": [
        "arn:aws:s3:::test-dev-cognito-settings-us-west-2/*",
        "arn:aws:s3:::test-dev-cognito-settings-us-west-2"
    ]
},
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?

谢谢