У меня есть клиент 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
параметр как в:или вы можете иметь регион по умолчанию, связанный с вашим профилем в вашем
~/.aws/config
файле, как в:или вы можете использовать переменную окружения, как в:
но вам нужно сказать boto3, какой регион использовать.
источник
В моем случае чувствительность имела значение.
источник
Я считаю, что по умолчанию boto выбирает регион, заданный в aws cli. Вы можете запустить команду #aws configure и дважды нажать клавишу ввода (она показывает, какие кредиты вы установили в aws cli с регионом), чтобы подтвердить свой регион.
источник
Вы также можете установить переменные окружения в самом скрипте вместо передачи параметра region_name
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
чувствительность к регистру может иметь значение.
источник
AWS_DEFAULT_REGION
чувствителен к регистру.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(верхний регистр)Для Python 2 я обнаружил, что библиотека boto3 не получает регион из,
~/.aws/config
если регион определен в другом профиле по умолчанию. Таким образом, вы должны определить это при создании сеанса.Где мой
~/.aws/config
файл выглядит так:Я делаю это, потому что я использую разные профили для разных входов в AWS, Personal и Work.
источник
Для тех, кто использует шаблон CloudFormation. Вы можете установить
AWS_DEFAULT_REGION
переменную окружения, используя UserData иAWS::Region
. Например,источник