如何配置Amazon S3与CloudFront实现MP4文件公开访问?求助故障排查
解决Amazon S3+CloudFront视频托管问题(适配S3最新规则)
一、公开可访问的Everwebinar视频配置(适配S3最新权限规则)
近期S3默认禁用公开桶访问,旧教程里直接开桶公开的方法已经失效,正确流程如下:
- S3存储桶设置:
- 新建/使用现有存储桶,确保「阻止所有公共访问」处于开启状态(S3默认开启,不要手动关闭)。
- 上传视频文件,无需给单个文件设置「公开读取」权限。
- CloudFront分发配置(用OAC替代旧OAI):
- 创建CloudFront分发时,源选择你的S3存储桶,在「源访问控制」中选择「Origin Access Control (OAC)」,点击「创建新的OAC」,采用默认配置即可。
- 缓存行为设置:路径匹配
/*,允许HTTP方法选GET, HEAD,其余保持默认。 - 保存分发后,复制CloudFront自动生成的Bucket Policy,粘贴到S3存储桶的「权限 > Bucket Policy」中,覆盖原有政策(旧OAI政策已不适配当前S3权限规则)。
- 验证:
等待CloudFront分发状态变为「Deployed」,用https://[你的CloudFront域名]/[视频文件名]访问,能正常播放就可以把这个地址给到Everwebinar。
二、高安全性课程视频配置
在上述基础上增加访问限制,确保只有授权用户能访问:
- 保持S3存储桶私有、CloudFront+OAC配置不变。
- 开启CloudFront签名访问:
- 在CloudFront控制台的「密钥管理 > 公有密钥」中,创建或上传密钥对(用于签名URL/Cookie)。
- 编辑CloudFront缓存行为,开启「限制查看器访问」,选择「签名URL或签名Cookie」,关联刚才创建的密钥。
- 用AWS CLI生成签名URL,命令示例:
aws cloudfront sign --url "https://[你的CloudFront域名]/[课程视频文件名]" --key-pair-id "[你的密钥ID]" --private-key "[本地私钥文件路径]" --expires "[过期时间,比如2024-12-31T23:59:59Z]"
常见排障点
- 403错误:检查S3的Bucket Policy是否是CloudFront生成的OAC专属政策,确认CloudFront分发的源访问控制已关联正确OAC。
- 404错误:确认视频文件路径与访问URL中的路径一致,文件名无特殊字符(如空格、中文建议转成英文/拼音)。
- 加载缓慢:检查CloudFront价格类是否覆盖用户所在区域,可开启缓存优化(视频文件默认缓存策略即可)。
内容的提问来源于stack exchange,提问作者winsurfer
相关产品推荐
相关产品推荐

