用户数据脚本来调用aws cli

时间:2017-12-10 11:11:25

标签: amazon-web-services amazon-ec2 aws-cli

我试图通过使用用户数据脚本和命令

在EC2实例中启动S3中的一些文件
/usr/bin/aws s3 cp ...

日志告诉我权限被拒绝,我相信这是由于在执行用户数据脚本时aws cli没有找到任何凭据。

在实例启动后使用sudo运行命令可以正常工作。

我已经运行了aws配置sudo和没有。

我不想在启动时使用cronjob来运行某些东西,因为我正在使用AMI并且经常需要更改脚本,因此我更方便地更改用户数据而不是每次都创建新的AMI脚本更改。

如果可能,我还想避免将凭证写入脚本。

如何以运行用户数据脚本时使用凭据的方式配置awscli?

2 个答案:

答案 0 :(得分:2)

我建议您从实例/ AMI中删除AWS凭据。 AWS元数据服务器需要时,将为您的userdata脚本提供临时凭证。

请参阅:IAM Roles for Amazon EC2

  • 从您的实例中清除/删除AWS凭据配置并创建AMI
  • 创建具有运行脚本的最低权限的策略
  • 创建IAM角色并附加刚刚创建的策略
  • 在启动实例时附加IAM角色 (非常重要)
  • 让您的用户数据脚本调用/usr/bin/aws s3 cp ...,而无需明确提供凭据或使用凭据文件

答案 1 :(得分:1)

您可以将EC2实例配置为接收预定义的 IAM角色 ,其中包含凭据"烘焙"在实例化时获取的实例,它将允许它在aws-cli脚本中调用User Data命令,而无需根据需要配置凭据。

以下是 IAM对EC2的角色的更多信息: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html

值得注意的是,您需要将适当的策略附加到您为实例分配的 IAM角色,以便aws-cli命令成功。有关这方面的更多信息,请访问: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/iam-roles-for-amazon-ec2.html#working-with-iam-roles