我有一个具有s3只读权限的AWS角色。我已经为AWS用户配置了aws cli。因此,我想使用同一用户浏览aws cli中的s3文件。
我所做的是
为角色arn:aws:iam::<1234...>:role/test-role
添加了对root用户的信任关系,以便我可以将其授予所有iam用户
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::<1234..>:root",
"Service": "s3.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
然后,我向用户添加了一个策略以承担上述角色。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Stmt12345",
"Effect": "Allow",
"Action": [
"sts:AssumeRole"
],
"Resource": "arn:aws:iam::<1234...>:role/test-role"
}
]
}
当我尝试列出时,出现权限被拒绝错误。
aws s3 ls
An error occurred (AccessDenied) when calling the ListObjects operation: Access Denied
我确保该角色具有完整的s3读取权限,如下所示。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:Get*",
"s3:List*"
],
"Resource": "*"
}
]
}
有人可以指导问题出在哪里吗?
答案 0 :(得分:1)
如果使用的是CLI,则需要具有正确凭据的配置文件。
您应该将凭据保存在.aws / credentials文件中,例如:
[myprofile]
aws_access_key_id = ... access key ...
aws_secret_access_key = ... secret access key …
然后,您可以将假定角色的配置文件添加到.aws / config文件,例如:
[profile test-role]
source_profile=myprofile
role_arn = arn:aws:iam::<1234...>:role/test-role
最后,您在运行CLI命令之前将AWS_PROFILE设置为test-role
SET AWS_PROFILE=test-role
aws s3 ls
我本来会发布link to the AWS documentation,但此网站不赞成仅链接的答案。