我想授予我的 ec2 实例对 s3 存储桶的访问权限。
在此 ec2 实例上,启动了一个包含我的应用程序的容器。现在我没有获得 s3 存储桶的许可。
这是我的存储桶政策
{
"Version": "2012-10-17",
"Id": "Policy1462808223348",
"Statement": [
{
"Sid": "Stmt1462808220978",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::714656454815:role/ecsInstanceRole"
},
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::bucket-name/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": "private-ip/32"
}
}
}
]
}
但在我授予存储桶允许每个人访问它之前,它不起作用。
我尝试从 ec2 实例内部卷曲 s3 存储桶中的文件,但这也不起作用。
至少现在,2019 年,有一种更简单、更干净的方法来做到这一点(凭证不必存储在实例中,而是可以自动查询它们):
- 为您的实例创建 IAM 角色并分配它
- 创建策略以授予对 s3 存储桶的访问权限
- 将策略分配给实例的 IAM 角色
- 上传/下载对象,例如通过适用于 s3 的 aws cli - cp https://docs.aws.amazon.com/cli/latest/reference/s3/cp.html e.g.
aws s3 cp <S3Uri> <LocalPath>
@2:JSON 策略的示例允许对 S3 存储桶中的对象进行读写访问 https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_policies_examples_s3_rw-bucket.html is:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "ListObjectsInBucket",
"Effect": "Allow",
"Action": ["s3:ListBucket"],
"Resource": ["arn:aws:s3:::bucket-name"]
},
{
"Sid": "AllObjectActions",
"Effect": "Allow",
"Action": "s3:*Object",
"Resource": ["arn:aws:s3:::bucket-name/*"]
}
]
}
您必须调整允许的操作,并替换“bucket-name”
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)