AWS S3阻止从浏览器URL下载文件

时间:2016-04-05 20:54:13

标签: amazon-web-services amazon-s3

我有一个AWS S3存储桶,我想通过网址(我的图像和视频链接等)访问我的大部分文件 - 这已经完成了。我有其他文件,我不想从URL访问,这些将是音频文件(MP3,WAV,flac等)。我只希望用户能够通过php脚本访问我的音频文件,并将其提供给浏览器。或多或少,我不希望用户通过猜测文件所在的AWS桶的URL来访问这些文件。

我很难过。任何人都可以指出我正确的方向。感谢。

3 个答案:

答案 0 :(得分:4)

您可以将文件设为私有并生成已签名的网址,以允许某人临时访问这些文件:Share an Object with Others

或者,您可以设置一项政策,限制用户直接访问这些文件,只允许他们访问从您的网站链接的文件Restricting Access to a Specific HTTP Referrer

或者您可以通过PHP脚本发送文件来提供这些文件,即将文件下载到PHP服务器并从那里返回文件内容。在这种情况下,您可以在S3中将这些文件设为私有,甚至可以将它们移动到完全私有的单独存储桶中。我不推荐这种方法,因为它会给您的服务器带来更多负担。

答案 1 :(得分:0)

听起来像对存储桶策略的更新会有所帮助。以下是允许访问可以修改以拒绝访问的示例:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html#example-bucket-policies-use-case-2

答案 2 :(得分:0)

您可以在存储桶下构建内容:

  • 公共
  • 私有

并创建类似于:

的存储桶策略
{
  "Id": "Policy1459891655092",
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "Stmt1459891443631",
      "Action": [
        "s3:GetObject"
      ],
      "Effect": "Allow",
      "Resource": "arn:aws:s3:::bucketname/public/*",
      "Principal": "*"
    }
  ]
}

更改" bucketname"到你的实际s3桶名。