尽管允许 "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/*"