如何为指定IAM用户添加允许s3:ListBucket的内联策略?
解决方法说明
错误原因
你写的是资源策略格式(带Principal元素),但误将其作为IAM身份内联策略(附加到用户/角色/组的策略)添加。身份策略不需要指定Principal——因为策略本身就是绑定到某个IAM身份的,这个身份就是默认的授权主体,额外添加Principal会触发格式错误。
两种可行方案
方案1:修改为正确的IAM用户内联策略
直接移除Principal元素,策略仅定义允许的操作和目标资源即可,因为策略会直接附加到目标IAM用户上,自动关联该用户为授权主体。修改后的代码如下:
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "s3:ListBucket", "Resource": "arn:aws:s3:::bucket-name" } ] }
注意:将bucket-name替换为你的实际存储桶名称(不要包含空格),同时确保用户ARN和存储桶ARN的账号ID、名称信息准确。
方案2:将策略作为S3存储桶的资源策略添加
如果想通过资源策略的方式直接在存储桶上配置访问权限,可保留原策略结构,但不要添加到IAM用户的内联策略中,而是进入S3控制台找到对应存储桶,在「权限」→「桶策略」页面粘贴这段代码。需要注意:
- 确认存储桶
Resource的ARN格式正确(桶名无空格) - 确保目标IAM用户没有被其他策略拒绝该操作
- 若为跨账号授权,需确保对方账号的用户有对应的身份策略允许该操作
内容的提问来源于stack exchange,提问作者mugi
相关产品推荐
相关产品推荐

