我有两个 EC2 实例:
ec2-1
和 ec2-2
,一个 s3 存储桶:bucket-1
,全部位于同一个 aws 账户中。
两个实例都与具有此信任关系的同一 IAM 角色关联:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "ec2.amazonaws.com"
},
"Action": "sts:AssumeRole"
}
]
}
对于权限策略,此 IAM 角色具有
AmazonS3FullAccess
我已通过
aws configure
设置了 aws 凭证,在两个实例上输入相同的访问/秘密密钥。
这两个实例具有相同的 VPC、安全组,但不知何故,
ec2-1
可以通过 aws cli 访问 bucket-1
,而 ec2-2
则不能并抛出此错误:
aws s3 ls
An error occurred (AccessDenied) when calling the ListBuckets operation: Access Denied
有人可以帮忙提供建议吗?
谢谢!
在这个像 VPC 这样的简单实验室中,除非您设置了 Internet 网关和/或 NAT,否则没有公共 Internet 访问权限。如果您将公共 IP 地址分配给 EC2 实例(并设置公共路由),则不需要 NAT 网关。如果您在专用网络中运行,则需要为 EC2 实例提供一种访问 S3 服务端点的方法 - 通过 Internet 到达公共端点或在 VPC 中放置 S3 的 VPC 端点。
此文档展示了如何在 VPC 中配置 S3 终端节点(如果它是私有子网)。