【问题标题】:AWS EC2 instance with access to S3 bucket for streaming a video可以访问 S3 存储桶以流式传输视频的 AWS EC2 实例
【发布时间】:2026-02-02 03:25:02
【问题描述】:

我对 EC2 实例、IAM(用户、角色、组)、S3 存储桶和策略非常熟悉,希望社区可以在这里帮助我。

假设我有一个运行网络服务器的 EC2 实例。此 EC2 实例托管一个网络视频播放器(视频 js、JWPlayer 等)。理想情况下,我想在不公开 S3 存储桶的情况下在 S3 存储桶上托管 MP4。

我最初的想法是,我可以创建一个对 S3 存储桶具有完全访问权限的角色,也可以为存储桶分配一个允许实例具有访问权限的策略。

我尝试了许多策略和角色,但似乎都不起作用。现在我想知道这是否可能。

我知道这种架构并不完美,您可能会使用云端来提供视频。然而,这只是一个概念证明......如果可能的话。谢谢各位!!

【问题讨论】:

  • 一个简单的 IAM 角色允许 s3:GetObject 访问存储桶(或它的某个子集)将允许 EC2 实例读取 MP4 文件(假设您已使用该 IAM 启动实例角色)。这假设您实际上希望您的 Web 服务器读取 MP4 并将它们代理到客户端,而不是客户端直接转到 S3 来获取 MP4。
  • “似乎都不起作用”是什么意思?
  • presigned URL's 能满足您的需求吗?
  • @jarmod 你提出了一个有趣的观点。是否必须使用 IAM 角色启动/创建 EC2 实例,或者我可以稍后分配该角色?我问是因为看起来您可以为正在运行的 EC2 实例分配角色(也可能会产生误导)
  • @stdunbar 是的,预签名 URL 也可以。我肯定会玩这个。但是,我确实喜欢通过云端提供私人内容的方法(以下作者:John Rotenstein)

标签: amazon-web-services amazon-s3


【解决方案1】:

这是 Amazon S3 pre-signed URL 的完美用例,它提供对私有对象的限时访问。它将流量完全卸载到 S3,使其具有高度可扩展性以提供内容。

基本上:

  • 对象保持私有
  • 您的应用程序确定用户是否有权访问该文件
  • 应用程序生成预签名 URL,时间限制为 5 分钟
  • 应用程序在标准 HTML 页面中包含 URL(例如,如果它是图像,则使用 <img src="...">

是的,用户可以与其他人共享链接,但在给定时间段后它会过期。

您也可以Serve Private Content through CloudFront,因为它可以serve streaming media,所以它可以更好地用于许多媒体播放器。

【讨论】:

    最近更新 更多