Boto3 client NoRegionError: вы должны указывать ошибку региона только иногда
У меня есть клиент 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()
Почему это происходит? и почему только часть времени?
Ответы
Ответ 1
Так или иначе, вы должны сказать boto3 в каком регионе вы желать kms
клиент должен быть создан. Это можно сделать явно, используя параметр region_name
как в:
kms = boto3.client('kms', region_name='us-west-2')
или у вас может быть регион по умолчанию, связанный с вашим профилем в вашем ~/.aws/config
как в:
[default]
region=us-west-2
или вы можете использовать переменную окружения, как в:
export AWS_DEFAULT_REGION=us-west-2
но вам нужно сказать boto3, какой регион использовать.
Ответ 2
Я полагаю, что по умолчанию boto выбирает регион, заданный в aws cli. Вы можете запустить команду #aws configure и дважды нажать клавишу ввода (она показывает, какие кредиты вы установили в aws cli с регионом), чтобы подтвердить свой регион.
Ответ 3
Вы также можете установить переменные окружения в самом скрипте, а не передавать параметр region_name
os.environ['aws_default_region'] = 'your_region_name'
чувствительность к регистру может иметь значение.
Ответ 4
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
В моем случае чувствительность имела значение.