我有一个Amazon S3存储桶,并希望在特定计算机上使其可用于脚本,而无需部署登录凭证。所以我的计划是只允许从该机器的IP进行匿名访问。我对亚马逊云很陌生,并且存储区策略看起来像是要走的路。我在我的存储桶中添加了以下策略:Amazon S3:授予来自IP的匿名访问(通过存储桶策略)
{
"Version": "2008-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "s3:*",
"Resource": "arn:aws:s3:::name_of_my_bucket/*",
"Condition": {
"IpAddress": {
"aws:SourceIp": [
"my_ip_1/24",
"my_ip_2/24"
]
}
}
}
]
}
但匿名访问仍然不起作用。为了进行测试,我授予了S3管理控制台中“Everyone”的访问权限。这工作正常,但显然不是我想要做的。 ;-)任何提示我做错了什么,以及如何让这个工作?
我的用例是使用EC2和S3进行的一些数据处理,所以通过IP进行访问控制将比用户帐户的操作简单得多。如果有更简单的解决方案,我愿意提供建议。
你到底打的问题。资源名称只是一个前缀?所以假设我有桶'com.mydomain.xxx'和'com.mydomain.yyy'。是否有可能通过'arn:aws:s3 ::: com.mydomain。*'向所有桶(包括内容)授予对所有操作的访问权限? – Achim 2013-04-22 09:50:54
通过ARN的资源规范的确切语法和含义因服务而异,参见例如。 [ARN的语法和示例](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-syntax) - 对于S3,您可以使用前缀(或更确切地说一个[路径](http://docs.aws.amazon.com/general/latest/gr/aws-arns-and-namespaces.html#arns-paths))确实是对象,但是这个存储区必须全部指定暂时不能包含通配符,参见例如AWS团队对[针对s3桶通配符的IAM语句?]的响应(https://forums.aws.amazon.com/message.jspa?messageID=377764#387497)。 – 2013-04-22 10:03:06