S3 PutObject 上的 Lambda 访问被拒绝

Lan*_*onC 9 amazon-s3 amazon-web-services aws-lambda

我创建了一个新的 S3 存储桶,并保留所有默认值。我正在尝试使用 PutObject 方法从 lambda 函数将对象写入存储桶。无论我附加什么策略或执行什么操作,我都会收到“访问被拒绝”的操作,除非我编辑存储桶 ACL 并将其完全公开。显然这不是一个很好的解决方案。我真的不知道发生了什么事:我知道我以前做过这件事,没有任何特殊设置。lambda 和 S3 存储桶位于同一账户中,分配给 lambda 的角色附加了 AWSLambdaFullAccess 策略。我快疯了,任何帮助将不胜感激。

Mic*_*iak 10

不幸的"s3:PutObject"是还不足以让它运行 - 你会不断得到403 Access denied错误。

您应该将"s3:PutObjectAcl"策略添加到您的 Lambda 角色。


cap*_*ack 0

根据您分配给 Lambda 函数的权限集,AWSLambdaFullAccess 不会授予您对 S3 存储桶的访问权限。除了这些权限之外,您还需要允许访问 S3。如果PutObject是您需要的唯一权限,则可以将以下策略添加到您的 Lambda 角色。请记住,这些权限可以进一步锁定到资源级别,但您可以从以下开始:

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

您可以根据需要添加或删除更多 S3 权限。