AWS S3仅允许来自存储桶的映像显示在特定IP地址上

问题描述 投票:0回答:1

我一直在使用AWS PHP SDK做一些工作,我已经能够将对象上传到存储桶,这是基础知识。

我使用此存储的主要目的是使用它将一组相关文件捆绑在一起,其中一个是缩略图,这些文件组显示在网站成员区域的网格中。

我不希望S3 URLS公开,但我确实希望在我的服务器IP地址上查看/下载这些文件。

我尝试过使用策略生成器,我不确定这是否是正确的方法来实现我想要实现的目标?

我应该使用S3 URL来缩略图显示在后端吗?或者我应该使用SDK的GetObject函数?

我会非常感激任何一点点的帮助,因为我目前还不确定我应该向哪个方向前进。

谢谢,凯恩

php amazon-web-services amazon-s3 ip
1个回答
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"}
      } 
    } 
  ]
}

确保指定服务器的公共IP,以便访问S3。在上面的示例中,54.240.143.0/24是CIDR块而不是IP地址。如果你想过滤特定的IP(如53.22.121.12)添加/ 32掩码,如下所示:53.22.121.12/32

我个人更喜欢在权限UI中将存储桶策略编辑为JSON,但您也可以使用策略生成器。

我建议您使用GetObject将S3中的内容检索到应用程序。在这种情况下,您可以将S3存储桶仅对应用服务器而不是对公众开放。

© www.soinside.com 2019 - 2024. All rights reserved.