0

我刚开始使用 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 文档页面中的基本链接部分说我可以访问我上传的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 中的访问密钥?

4

2 回答 2

1

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

我希望这有帮助?

于 2011-09-02T19:26:34.733 回答
0

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

该问题在以下关于 stackoverflow 的 2 个问题中得到解答。

如何使用 php 下载文件和 amazon s3 sdk 在 amazon s3 上使用 php 强制下载

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

于 2013-04-08T12:07:07.350 回答