从python

时间:2019-06-08 01:47:26

标签: amazon-web-services boto3

Boto和aws-cli用户使用一系列不同的配置文件在一个或多个文件(例如〜/ .aws / config)中编写ini样式的配置。我正在写一个包装boto API调用的库,但是我想根据用户的活动配置文件设置(即AWS_PROFILE和好友)更改其行为。

如何以编程方式检索有效用户的配置文件设置(即boto默认设置,被用户的配置文件设置覆盖,被任何具有优先级的环境变量覆盖)。我对配置文件的“区域”键特别感兴趣,但是我怀疑其他键的操作过程与此类似。

另一种说法是:是否存在一个boto API调用(或一系列调用),它将检索给定boto会话的“当前有效/有效”设置?

作为反例:提取用户区域设置的一种非常粗略,脆弱且不正确的方法是检查环境AWS_PROFILE,寻找〜.aws / config,然后从中解析出关键的“区域”。我宁愿让boto应用自己的规则,然后提取结果。

3 个答案:

答案 0 :(得分:0)

您可以通过读取AWS_PROFILE环境变量并将其传递到boto3 Session对象中来实现。

enter image description here

答案 1 :(得分:0)

可以从许多不同的位置加载配置,仅查看“ AWS_PROFILE”是不正确的。

请参阅在配置计算中应用的配置源列表:https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html

一种简单的方法是简单地创建一个默认会话(适用于许多配置源),然后从创建的对象中提取设置:

import boto3
sess = boto3.Session()
print(session.region_name)

答案 2 :(得分:0)

我还没有测试过,但我认为这是一个很好的起点:

https://stackoverflow.com/a/41270744/220949

特别是对于区域,region_name 中有一个 Session 属性