我需要启动一个S3存储桶,以便我的EC2实例可以访问存储图像文件。 EC2实例需要读/写权限。我不想让S3存储桶公开,我只希望EC2实例能够访问它。
另一个问题是我的EC2实例正在由OpsWorks管理,我可以根据负载/使用情况启动不同的实例。如果我通过IP限制它,我可能并不总是知道EC2实例具有的IP。我可以通过VPC限制吗?
我是否必须为静态网站托管启用我的S3存储桶?我是否需要公开存储桶中的所有文件以使其正常工作?
您不需要将存储桶公开读取,也不需要将文件公共可读。桶和它的内容可以保密。
不要基于IP地址限制对存储桶的访问,而是根据EC2实例正在使用的IAM角色对其进行限制。
例如:
{
"Version": "2012-10-17",
"Statement":[{
"Effect": "Allow",
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
]
}
例如:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": ["arn:aws:iam::111122223333:role/my-ec2-role"]
},
"Action": "s3:*",
"Resource": ["arn:aws:s3:::my_bucket",
"arn:aws:s3:::my_bucket/*"]
}
]
}
IAM角色是您的解决方案。
您需要创建具有s3访问权限的角色,如果ec2实例在没有任何角色的情况下启动,则必须使用分配的角色重新构建它。