我一直在使用AWS PHP SDK进行一些工作,并且能够将对象上传到存储桶(基础知识)。
我使用此存储的主要目的是使用它将一组相关文件捆绑在一起,其中一个是缩略图,并且这些文件组已显示在站点成员区域的网格中。 / p>
我不想公开S3 URL,但是我希望文件在服务器IP地址上时可以查看/下载。
我尝试使用策略生成器,但不确定这是否是实现我要实现的目标的正确方法?
我应该使用S3 URL来使缩略图显示在后端吗?还是应该使用SDK的GetObject函数?
由于我目前不确定我应该朝哪个方向前进,因此不胜感激。
谢谢, 凯恩
答案 0 :(得分:2)
您可以使用存储桶策略来仅允许来自特定IP的访问,如this example所示:
{
"Version": "2012-10-17",
"Id": "S3PolicyId1",
"Statement": [
{
"Sid": "IPAllow",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:*",
"Resource": "arn:aws:s3:::examplebucket/*",
"Condition": {
"IpAddress": {"aws:SourceIp": "54.240.143.0/24"}
}
}
]
}
确保您指定服务器用来访问S3的公共IP。在上面的示例中,54.240.143.0/24
是CIDR块而不是IP地址。如果您要过滤特定的IP(例如53.22.121.12),请添加/ 32掩码,例如:53.22.121.12/32
我个人更喜欢在权限UI中将存储桶策略编辑为JSON,但是您也可以使用策略生成器。
我建议您使用GetObject将内容从S3检索到应用程序。在这种情况下,您可以使S3存储桶仅对您的应用服务器开放,而不对公众开放。