【问题标题】:How to configure AWS CLI in an elastic-beanstalk instance如何在 elastic-beanstalk 实例中配置 AWS CLI
【发布时间】:2016-05-10 22:14:03
【问题描述】:
我使用eb init 创建了一个elastic-beanstalk 配置,并使用eb create 命令部署了它。当我 ssh 到实例时,我可以看到我已经安装了 AWS CLI。
我要做的是使用我的访问密钥 ID 和 AWS 秘密访问密钥配置 CLI,使用 eb create 或 init 命令,这样我就不必每次都通过 SSH 连接到环境并进行手动配置。
有没有办法将 CLI 与环境部署一起配置(在首次启动时)?我尝试传递环境变量,但这似乎没有任何作用。
谢谢
【问题讨论】:
标签:
amazon-web-services
amazon-elastic-beanstalk
【解决方案2】:
如果您希望使用安装在作为 beanstalk 环境一部分的 EC2 实例上的 AWS CLI,我建议您根据实例配置文件凭证而不是复制/粘贴 access_key_id 和 secret_access_key。
实例配置文件基本上是 IAM 角色,允许您在启动时将 IAM 角色传递给实例,并且实例具有自动可用于 EC2 实例的凭证。除了 AWS CLI 等标准 AWS 工具外,AWS 开发工具包会在可用时自动使用实例配置文件凭证。您可以找到 AWS CLI 用于查找记录在 here 的凭证的优先顺序。
您可以使用命名空间“aws:autoscaling:launchconfiguration”和选项名称“IamInstanceProfile”的选项设置将实例配置文件传递到您的环境。使用控制台和 eb cli 可以更轻松地完成此操作。
由于您已经在使用 eb cli 创建环境,因此您已经在传递实例配置文件以启动环境。通常,实例配置文件名为“aws-elasticbeanstalk-ec2-role”(默认名称),但也可以命名为其他名称。如果您无法找到适合您环境的实例配置文件,请告诉我。
此外,您需要更新与必要策略关联的 IAM 角色,以便为角色提供对您要使用 AWS CLI 调用的服务的访问权限。 This 页面记录了您的角色运行弹性 beanstalk 所需的最低权限。如果需要,您可以使用 IAM 控制台添加更多权限。
最后,如果您仍想直接传递 ACCESS_KEY 和 SECRET_KEY,则可以使用 AWS 管理控制台中定义的环境变量或通过 ebextensions 执行此操作,然后使用 ebextensions 运行命令,将这些环境变量复制到 ~/.aws/凭证,这是 AWS CLI 查找的凭证来源之一,如 here 所示。如果您在编写 ebextensions 时需要帮助,请告诉我。 ebextensions 的文档在 here 和 here 可用。
我强烈建议使用实例配置文件。