【发布时间】:2026-01-28 11:10:02
【问题描述】:
我在使用 AWS 策略生成器创建的 S3 存储桶上具有以下策略,以允许以特定角色运行的 lambda 访问存储桶中的文件。但是,当我执行 Lambda 时,我得到 403 权限被拒绝:
"errorMessage": "Access Denied (Service: Amazon S3; Status Code: 403; Error Code: AccessDenied; Request ID: <requestId>)",
"errorType": "com.amazonaws.services.s3.model.AmazonS3Exception",
关于 S3 存储桶的政策:
{
"Version": "2012-10-17",
"Id": "Policy<number>",
"Statement": [
{
"Sid": "Stmt<number>",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<account>:role/<roleName>"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::<bucketName>/*"
}
]
}
政策有什么问题? Lamba 正在使用策略中配置的角色运行。
【问题讨论】:
-
我将首先修改此策略以将所有权限授予所有 .. 基本上删除 Principal 和 bucketname.. 这将告诉您问题是在您的 s3 策略中还是与 lambda 相关。
-
为什么不将 S3 存储桶权限添加到分配给 Lambda 函数的 IAM 角色,而不是尝试通过存储桶策略执行此操作?
-
你对 Lambda 的存储桶做了什么?某些操作需要资源在末尾排除
/*,其他操作需要包含:"Resource": [ "arn:aws:s3:::<bucketName>", "arn:aws:s3:::<bucketName>/*" ]
标签: amazon-web-services amazon-s3 aws-lambda aws-sdk