繁体   English   中英

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

[英]IAM user can only access S3 bucket when bucket is set to public

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

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

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

如下所示,将Principal设置为public可以使lambda成功运行:

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

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

问题是您在用户和资源权限之间混淆。

您只需要将Resource设置为Resource权限作为策略,将其分配给与lambda.amazonaws.com具有受信任关系的Role,然后将该Role分配给Lambda函数。

在此处输入图片说明

在此处输入图片说明

希望能帮助到你。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM