从在 VPC 内运行的 EC2 实例,我需要使用 awscli 访问 S3 存储桶,以便将文件从 EC2 复制到 S3。
我成功创建了一个带有附加自定义策略的端点,该策略是使用亚马逊提供的策略构建器构建的。
EC2 正在以特定角色运行,如果我将此类角色“ARN:...”分配给主体,则会收到“拒绝访问”提示。如果我将角色替换为“*”,则一切正常。我做错了什么?这是策略,如您所见,我只允许上传和检索对象:
{
"Version": "2012-10-17",
"Id": "Policy14467516498654",
"Statement": [
{
"Sid": "Stmt1446751649837",
"Effect": "Allow",
"Principal": {
"AWS": "*" <-- it's not working with specific role
},
"Action": [
"s3:ListAllMyBuckets",
"s3:ListBucket",
"s3:PutObject",
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:CreateMultipartUpload"
],
"Resource": "arn:aws:s3:::thebucket/thechildbucket/*"
}
]
}
该角色具有完全 EC2 访问权限。我已尝试分配完全 S3 访问权限,但不起作用。
答案1
角色本身的策略也必须具有对目标存储桶的 S3:[权限] 访问权限。
{
"Sid": "Stmt1234",
"Effect": "Allow",
"Action": [
"s3:*"
],
"Resource": [
""arn:aws:s3:::thebucket/thechildbucket",
""arn:aws:s3:::thebucket/thechildbucket/*"
]
}