创建可自动访问私有 S3 的 Amazon EC2 实例

创建可自动访问私有 S3 的 Amazon EC2 实例

我在想。假设我在私有 S3 存储桶中有一个文件,然后我部署了一个 EC2 实例,该实例的 rc.local 中有类似这样的内容:

得到http://privateamazons3url.com

我怎样才能使我部署的 EC2 实例自动地可以访问我的私有 S3 存储桶,而无需我通过 AWS 控制面板手动明确添加它。

我之所以问这个问题是因为我计划使用快照映像从另一台服务器使用 python boto 脚本远程部署我的 EC2 实例,并且快照映像将包括从我的私有 S3 存储桶下载文件。

答案1

选项1

如果您的新实例在启动后很快就要下载文件,那么您可以创建一个有时间限制的公共文件:

  1. 生成要下载的文件的限时 URL。请参阅http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_QSAuth.html
  2. 启动您的新实例,并在用户数据中传递生成的 URL。
  3. 在新实例中,读取用户数据并下载文件。

通过执行上述操作,您的 EC2 实例上不需要任何凭据。但是,您的公共 URL 会在短时间内公开。

选项 2

在 EC2“角色”中启动新实例。请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances

当您使用 EC2 角色时,您的实例会定期获得自动生成、自动过期的访问密钥。因此,您不必在服务器上保留凭证。相反,您的 AWS 客户端将不断向 AWS 请求使用新密钥,这些密钥会随时间而变化。

这样,您可以为您的 EC2 角色提供允许 S3 访问您的文件的 IAM 策略。

答案2

如果要在快照的查询字符串中公开 S3 API 信息,可以使用以下命令

http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_QSAuth.html

您还可以使用 IAM 来创建仅对该存储桶具有受限访问权限的用户,它将生成一个新的 api 密钥对以在查询字符串中使用。

相关内容