当桶设置为public时,IAM用户只能访问S3存储桶

时间:2017-12-14 19:30:53

标签: javascript amazon-web-services amazon-s3 aws-lambda

我一直试图测试我的第一个lambda函数,但是我只能在将bucket策略设置为public时成功测试它。我想只提供对我的IAM用户的访问权限,但每当我尝试这样做时,我都会收到“拒绝访问”错误。我确认IAM用户 具有管理员访问权限。

以下是来自存储桶策略的相关代码段,其中我将Principal设置为我的IAM用户的ARN,这导致"访问被拒绝"错误:

"Principal": {
     "AWS": "arn:aws:iam::12_DIGIT_USER_ID:user/adminuser"
}

将Principal设置为public,如下所示,允许lambda成功运行:

"Principal": {
     "AWS": "*"
}

显然我想避免使用公共存储桶,并且每个博客帖子和StackOverflow问题的解决方案似乎都是将桶策略设置为类似于上面的第一个代码片段,但我绝对无法弄清楚为什么它&#39 ;不适合我。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

问题是您在用户和资源权限之间感到困惑。

您只需将资源权限设置为策略,将其分配给具有lambda.amazonaws.com信任关系的角色,然后将该角色分配给Lambda函数。

enter image description here

enter image description here

希望它有所帮助。

答案 1 :(得分:1)

授予访问Amazon S3资源的权限时:

  • 如果您希望授予公共访问权限,请在存储桶本身上使用存储桶策略
  • 如果您希望授予特定用户或用户组的权限,请将权限直接添加到IAM中的用户/组(不需要principal