2016-11-02 5 views
22

У меня есть boto3 клиента:boto3 клиент NoRegionError: Вы должны указать ошибку региона только иногда

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() 

Почему это происходит? и почему только часть времени?

+0

Поскольку клиент boto3 не может найти профиль AWS из набора методов учетных данных по умолчанию: http://docs.aws.amazon.com/sdk-for-java/v1/developer-guide/credentials.html. – mootmoot

ответ

47

Так или иначе вы должны указать 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 какой регион использовать.

+0

Как я могу узнать, какой регион использовать? – jononomo

+0

Если вы пытаетесь получить доступ к существующим ресурсам, выберите регион, в котором эти ресурсы существуют. Если вы собираетесь создавать новые ресурсы, большинство людей выбирают регион, который ближе всего к ним географически, для более быстрого реагирования. Не все регионы поддерживают один и тот же набор сервисов, поэтому, если вам нужен конкретный сервис, убедитесь, что вы выбрали регион, который его поддерживает. – garnaat

+0

Я думаю, мой вопрос: откуда я узнаю, какой регион я уже выбрал? Я полагаю, что это должно быть в интерфейсе AWS где-то ... – jononomo

 Смежные вопросы

  • Нет связанных вопросов^_^