python - 如何在 EC2 实例中使用 boto3

标签 python amazon-web-services amazon-ec2 boto3 ssm

我有一个 Python 应用程序在 ECS 管理的 EC2 实例上的 Docker 容器中运行(嗯,这就是我想要的......)。但是,要使用 SSM 之类的服务使用 boto3,我需要知道实例运行的区域。我不需要任何凭据,因为我为授予服务访问权限的实例使用角色,因此默认 Session没问题。

我知道可以使用 curl 获取该区域。获取动态元数据,但是有没有更优雅的方法来在 EC2 实例中使用区域名称(凭据)实例化客户端?

我跑过boto3 documentation并发现

Note that if you've launched an EC2 instance with an IAM role configured, there's no explicit configuration you need to set in boto3 to use these credentials. Boto3 will automatically use IAM role credentials if it does not find credentials in any of the other places listed above.



那么为什么我需要为 SSM 传递区域名称?例如客户?有解决方法吗?

最佳答案

区域是 必需参数 让 SSM 客户端知道它应该与哪个区域进行交互。即使您在 AWS 云中,它也不会尝试假设。

如果您希望它在您的容器中假设,最简单的实现方式是使用 AWS environment variables .

在您的 container definition指定环境属性指定一个名为 AWS_DEFAULT_REGION 的变量和您当前区域的值。

通过这样做,您不必在容器内的 SDK 中指定区域。

This example使用环境属性获取更多信息。

关于python - 如何在 EC2 实例中使用 boto3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62311872/

相关文章:

mysql - 如何设计一个架构来处理定期批量插入/更新?

python - AWS DynamoDB Stream python 转换原生格式

ssh - 如何通过 SSH 启动进程,让它继续运行?

ruby-on-rails-3 - 无法运行 cap deploy :setup on ec2, 任务 `deploy:setup' 不存在

amazon-ec2 - 使用 Boto 获取 ec2 实例状态

python:构造函数参数表示法

python - git 存储库包的 PIP 安装错误

python - 如何为不同语言设置 matplotlib.dates.DateFormatter

python - 在python中将域名转换为idn

java - 如何使用 java sdk 将新的 EBS 卷附加到现有的 EC2 实例?