我有一个boto3客户端:
boto3.client('kms')
但这发生在新机器上,它们动态地打开和关闭。
if endpoint is None:
if region_name is None:
# Raise a more specific error message that will give
# better guidance to the user what needs to happen.
raise NoRegionError()
为什么会这样?为什么只是部分时间?
您必须以某种方式告诉boto3您希望在哪个区域创建kms客户端。这可以显式地使用region_name参数来完成,如下所示:
kms = boto3.client('kms', region_name='us-west-2')
或者您可以在~/中有一个与您的配置文件相关联的默认区域。Aws /配置文件如下:
[default]
region=us-west-2
或者你可以使用环境变量,如下所示:
export AWS_DEFAULT_REGION=us-west-2
但是您需要告诉boto3使用哪个区域。
对于python2,我发现boto3库并没有从~/。如果区域定义在与default不同的配置文件中,则使用Aws /config。
所以你必须在会话创建中定义它。
session = boto3.Session(
profile_name='NotDefault',
region_name='ap-southeast-2'
)
print(session.available_profiles)
client = session.client(
'ec2'
)
我的~/。Aws /配置文件是这样的:
[default]
region=ap-southeast-2
[NotDefault]
region=ap-southeast-2
我这样做是因为我使用不同的配置文件登录AWS,个人和工作。