【问题标题】:Simple image delivery with AWS CloudFront and PHP?使用 AWS CloudFront 和 PHP 进行简单的图像传输?
【发布时间】:2013-04-08 20:07:07
【问题描述】:

我刚开始使用 Amazon S3 和 CloudFront,并设法在 CloudFront 上创建了一个 S3 存储桶和一个分发。

我的目的是使用 CloudFront 从边缘位置进行简单的图像/css 交付 - 所以我正在研究最基本的 AWS 功能。

我在 S3 存储桶中上传了一些图像,当我尝试使用 http://xxx.cloudfront.net/image.jpg 访问相同的图像以进行测试时,我收到以下错误:

<Error>
    <Code>AccessDenied</Code>
    <Message>Access Denied</Message>
    <RequestId>ABCD1234</RequestId>
    <HostId>
        xxxxx
    </HostId>
</Error>

我猜我需要在开始交付内容之前验证自己?我已经使用了 AWS-PHP 开发工具包,但不知道该怎么做。 AWS Docs 中提供的所有示例都是针对更复杂的功能...似乎没有用于简单图像交付的直接代码示例。

这里有人设置过吗?你是怎么做的?

我的网站是用 PHP 编写的。

任何帮助将不胜感激。

谢谢,
m^e

更新

AWS Doc page 中的 基本链接 部分说我可以访问我上传的 http://xxx.cloudfront.net/image.jpg 格式的资源。

但是,当我这样做时,我得到了拒绝访问的 XML 转储。

所以我回到 S3 存储桶,右键单击图像并单击打开。它以以下链接格式在弹出窗口中打开图像:
http://xxx.cloudfront.net/1st-open-house-jan-2011.jpg?AWSAccessKeyId=yyy

每当我尝试以这种格式(包括 AccessKey)轮询我的图像时,它似乎都可以工作。 URL 中没有 AccessKey,nada。

这是否意味着,我必须在整个网站的每个图像请求中都包含该访问密钥?或者是否有任何其他方法可以在单个点预先验证请求,然后继续正常加载图像,减去 url 中的访问密钥?

【问题讨论】:

    标签: php image amazon-web-services cdn amazon-cloudfront


    【解决方案1】:

    为什么不公开你的图片?我可以想象你想保持视频或音频的私密性,但是图像呢?无论如何都可以抓住它们,所以为什么还要保护它们呢? 只需将Everyone权限设置为Read,问题就解决了。

    我希望这会有所帮助?

    【讨论】:

    • 谢谢约翰。通过阅读他们的文档,我最终能够自己弄清楚权限系统。不过,感谢您的回答 :) 干杯。
    • 有谁知道权限传播需要多长时间?
    【解决方案2】:

    啊哈,我想我知道这个,主要是我自己一直在研究。

    在stackoverflow的以下2个问题中回答了这个问题。

    How do I download a file with php and the amazon s3 sdk Force download with php on amazon s3

    这与在您的通话中设置 Content-Type 和 Content-Disposition 有关。但正如 John R 提到的,对于图像、css 和 js,我个人只会将它们公开。

    【讨论】:

      猜你喜欢
      • 2011-09-26
      • 2014-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-10
      • 1970-01-01
      相关资源
      最近更新 更多