我正在配置一个环境 Amazon S3 Bucket 用于存储媒体文件, Amazon CloudFront 用于限制分发目的 .
对这些媒体文件的访问需要是私有的,应该通过 signed URL 来完成 . 所以我在 South America (São Paulo)
区域创建了 S3 Bucket 并上传了一些测试文件 . 然后我创建了一个 CloudFront Distribution ,其前一个 bucket 为 Origin
,它的 Bucket Access
是 restricted . 我创建了一个新的 OAI (Origin Access Identity)并选择了 Yes, Update Bucket Policy
选项,以便自动配置 S3 Bucket Policies
. 我只使用 default Behavior
,并配置了 HTTP and HTTPS
viewer protocol policy 和 GET, HEAD
allowed methods . Restrict Viewer Access (Use Signed URLs or Signed Cookies)
已设置且 Trusted Signer
设置为 Self
.
这里有一些图片来阐明设置:
S3 Bucket Policy
Distribution's Origin
Distribution's Behavior
我在尝试访问使用 awscli 或 cfsign.pl 生成的签名URL时收到 HTTP 403
<Error>
<Code>AccessDenied</Code>
<Message>Access denied</Message>
</Error>
有什么遗失我不知道吗?看起来我做了 docs 所说的一切 .
3 回答
重新创建 Amazon S3 Bucket 和 Amazon CloudFront Distribution 后,我仍然遇到问题 . 与我的橡皮鸭会话后,我发现我使用的
Private Key
文件属于已删除的CloudFront Key-pair
.现在我已经解释了为什么第一个 bucket 和 distribution 没有工作,因为在那个特定情况下我使用的是 same 配置集和正确的
Private Key
文件 .我也遇到了同样的问题 . 可能,我们必须重新生成Clouf Front密钥对 .
我收到了相同的
Access Denied
错误,花了最后几个小时试图弄清楚发生了什么 . 我终于意识到Expires
参数是在过去设置的,因为我使用的是本地时间而不是UTC . 确保根据UTC设置Expires
.