我在想。 假设我在一个专用的S3存储桶中有一个文件,然后我在其rc.local中部署一个类似这样的EC2实例:
GET http://privateamazons3url.com
我该如何做到这一点,以便我自动部署的EC2实例可以访问我的私有S3存储桶,而无需通过AWS控制面板手动添加它。
我问的原因是因为我打算从另一台服务器使用快照映像使用Python boto脚本远程部署我的EC2实例,并且快照映像将包括从我的私有S3存储桶下载文件。
选项1
如果您的新实例在启动后立即下载文件,那么您可以创build一个有时间限制的公用文件:
通过以上操作,您的EC2实例不需要凭证。 不过,您的公开url在短时间内是公开的。
选项2
在EC2“angular色”中启动您的新实例。 请参阅http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UsingIAM.html#UsingIAMrolesWithAmazonEC2Instances
当您使用EC2angular色时,您的实例会定期自动生成自动生成的访问密钥。 所以你不必在你的服务器上保存凭据。 相反,您的AWS客户端将不断向AWS请求使用随时间而改变的新密钥。
这样,您可以给EC2angular色一个允许S3访问您的文件的IAM策略。
如果您想在快照的查询string中公开s3 api信息,则可以使用以下命令
http://docs.aws.amazon.com/AmazonS3/latest/dev/S3_QSAuth.html
你也可以使用IAM来创build一个限制访问这个桶的用户,并且它将生成一个新的API密钥对用于查询string。