首页 > 解决方案 > 从 python 获取 boto3 配置文件设置

问题描述

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

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

另一种表述方式是:是否有一个 boto API 调用(或一系列调用)将检索给定 boto 会话的“当前活动/有效”设置?

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

标签: amazon-web-servicesboto3

解决方案


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

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

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

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

推荐阅读