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

J.Z*_*Zil 2 ubuntu python amazon-s3 amazon-ec2 amazon-web-services

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

获取http://privateamazons3url.com

我如何才能让我自动部署的 EC2 实例可以访问我的私有 S3 存储桶,而不必通过 AWS 控制面板手动显式添加它。

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

Mat*_*ser 5

选项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 角色提供一个 IAM 策略,允许 S3 访问您的文件。