尽管允许 "s3:GetObject" 操作,但来自 S3 的 403
403 from S3 despite allowing "s3:GetObject" action
我正在使用无服务器将我的 Lambda 函数部署到 AWS,其中一个函数读取 S3 对象。我在 serverless.yml
文件中设置了这些权限:
iamRoleStatements:
- Effect: Allow
Action:
- s3:ListBucket
- s3:GetObject
Resource: "arn:aws:s3:::myBucket"
但是,在部署 API 之后,当我尝试访问 Serverless 提供的端点时,我得到了 403。我还进入了 AWS 控制台中的 IAM,以检查适用区域的 lambdaRole 和对于 S3,我看到 "Limited: List" 的 "Access Level"。我的理解是,根据我允许的操作,我也应该在此处看到 "Read"。
任何人都可以指出我可能缺少的方向吗?
GetObject
操作对对象而不是存储桶进行操作,因此您的策略不正确。尝试以下操作:
iamRoleStatements:
- Effect: Allow
Action:
- s3:ListBucket
Resource: "arn:aws:s3:::myBucket"
- Effect: Allow
Action:
- s3:GetObject
Resource: "arn:aws:s3:::myBucket/*"
我正在使用无服务器将我的 Lambda 函数部署到 AWS,其中一个函数读取 S3 对象。我在 serverless.yml
文件中设置了这些权限:
iamRoleStatements:
- Effect: Allow
Action:
- s3:ListBucket
- s3:GetObject
Resource: "arn:aws:s3:::myBucket"
但是,在部署 API 之后,当我尝试访问 Serverless 提供的端点时,我得到了 403。我还进入了 AWS 控制台中的 IAM,以检查适用区域的 lambdaRole 和对于 S3,我看到 "Limited: List" 的 "Access Level"。我的理解是,根据我允许的操作,我也应该在此处看到 "Read"。
任何人都可以指出我可能缺少的方向吗?
GetObject
操作对对象而不是存储桶进行操作,因此您的策略不正确。尝试以下操作:
iamRoleStatements:
- Effect: Allow
Action:
- s3:ListBucket
Resource: "arn:aws:s3:::myBucket"
- Effect: Allow
Action:
- s3:GetObject
Resource: "arn:aws:s3:::myBucket/*"