使用 AWS S3 和 CloudFront 从我的网站流视频是 403 禁止的

问题描述 投票:0回答:1

我想将视频存储在 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

任何人都可以帮助我了解我哪里出了问题吗?

amazon-web-services amazon-s3 amazon-cloudfront http-status-code-403
1个回答
0
投票

阻止公共访问设置可能是问题所在。 建议尝试这些步骤。

1 - 存储视频的 S3 存储桶应配置为静态网站,确保阻止公共访问设置为关闭。

2 - 创建一个 S3 存储桶策略,向 *

授予 S3:GetObject 权限

3 - 首先测试它是否有效。

4 - 在 Cloudfront 中将 S3 存储桶设置为自定义源

5 - 在 Cloudfront 中配置源访问控制 - AWS 将生成源访问策略。复制它。

6 - 转到 S3 存储桶并编辑策略以仅允许 OAI 访问(粘贴策略)

7 - 返回 CloudFront 配置行为,以便发送对存储桶的请求。

路径模式:/*.mp4(示例) 原点:选择第 4 步中创建的原点。

希望对您有用。

© www.soinside.com 2019 - 2024. All rights reserved.