我想将视频存储在 Amazon S3 存储桶中。 我想将它们加载到我的网站上。 我想使用 Amazon CloudFront 进行 CDN/缓存等。
理想情况下,最后我想限制视频仅在我设置的域上播放。
但最初我什至加载视频时都遇到 403 错误。
控制台中显示:
加载资源失败:服务器响应状态为403()
单击它会显示此 XML
<Error> <Code>AccessDenied</Code> <Message>Access Denied</Message> <RequestId>9PW32M02SZR567DF</RequestId> <HostId>ukPRxDlFq9TYiJcHLnnAhryAewPoAd/ijm/GxHvdB774cMwK4PdQ0yr1CQqa1msCV+CkYj+nkL0=</HostId> </Error>
经过大量阅读后,我尝试了很多事情。
最初,我使用密钥设置了发行版,并且我相信使用 OAI。
我现在禁用了它的 WAF 部分,以尝试排除它作为一个变量。
我直接在浏览器中加载视频。在某一时刻,视频播放器已加载,但视频本身并未加载。
我创建了公钥
我创建了关键组
我在 CloudFront 中选择了我的 S3 存储桶,因此我不可能输入错误。
我创建了一个“原始访问”,并且尝试了签名和不签名请求。
我设置了身份(旧版)
我已禁用加密和存储桶密钥。
所有公共访问均被阻止。
我从 CloudFront 复制了权限并将其添加到 S3 存储桶的权限中。
这是我的存储桶政策。
{ "Version": "2008-10-17", "Id": "PolicyForCloudFrontPrivateContent", "Statement": [ { "Sid": "AllowCloudFrontServicePrincipal", "Effect": "Allow", "Principal": { "Service": "cloudfront.amazonaws.com" }, "Action": "s3:GetObject", "Resource": "arn:aws:s3:::tpwc-co-uk--media/*", "Condition": { "StringEquals": { "AWS:SourceArn": "arn:aws:cloudfront::240479180938:distribution/E17GLPD7918NNC" } } } ] }
服务器端加密设置为:
Server-side encryption with Amazon S3 managed keys (SSE-S3)
这是我的网址(如果有帮助的话):https://d2tzr0xka0eqcu.cloudfront.net
任何人都可以帮助我了解我哪里出了问题吗?
阻止公共访问设置可能是问题所在。 建议尝试这些步骤。
1 - 存储视频的 S3 存储桶应配置为静态网站,确保阻止公共访问设置为关闭。
2 - 创建一个 S3 存储桶策略,向 *
授予 S3:GetObject 权限3 - 首先测试它是否有效。
4 - 在 Cloudfront 中将 S3 存储桶设置为自定义源
5 - 在 Cloudfront 中配置源访问控制 - AWS 将生成源访问策略。复制它。
6 - 转到 S3 存储桶并编辑策略以仅允许 OAI 访问(粘贴策略)
7 - 返回 CloudFront 配置行为,以便发送对存储桶的请求。
路径模式:/*.mp4(示例) 原点:选择第 4 步中创建的原点。
希望对您有用。