AWS 权限 - 我们是否需要在 Lambda 和 S3 上设置权限

AWS permissions - do we need to set permissions on both Lambda and S3

当我们希望一个Lamdba函数能够访问一个s3 bucket时,例如:

actions: ["s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject"]

将 S3 存储桶 ARN 和操作添加到 Lambda 上的 IAM 策略语句是否足够,或者我们是否需要向存储桶添加任何授予权限?

将策略附加到 Lambda 角色就足够了。

政策示例:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "ExampleStmt",
      "Action": [
        ["s3:ListBucket", "s3:GetObject", "s3:PutObject", "s3:DeleteObject"]
      ],
      "Effect": "Allow",
      "Resource": [
        "arn:aws:s3:::AWSDOC-EXAMPLE-BUCKET/*"
      ]
    }
  ]
}

如果 Lambda 与 S3 存储桶在同一个帐户中,您可以将其添加到 Lambda 的 IAM 角色。

如果它在单独的账户中,您需要将 Lambda 函数的 IAM 角色 Arn 添加为存储桶策略中的主体,然后将权限添加到 Lambdas IAM 角色。