Eu tenho um cliente boto3:
boto3.client('kms')
Mas acontece em novas máquinas, elas abrem e fecham dinamicamente.
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()
Por que isso está acontecendo? e por que apenas parte do tempo?
Respostas:
De uma maneira ou de outra, você deve informar ao boto3 em que região você deseja que o
kms
cliente seja criado. Isso pode ser feito explicitamente usando oregion_name
parâmetro como em:ou você pode ter uma região padrão associada ao seu perfil no seu
~/.aws/config
arquivo como em:ou você pode usar uma variável de ambiente como em:
mas você precisa informar ao boto3 qual região usar.
fonte
No meu caso, a sensibilidade importava.
fonte
Eu acredito que, por padrão, o boto escolhe a região que está definida no aws cli. Você pode executar o comando #aws configure e pressionar enter (mostra quais creds você definiu no aws cli with region) duas vezes para confirmar sua região.
fonte
você também pode definir variáveis de ambiente no próprio script, em vez de passar o parâmetro region_name
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
a sensibilidade do caso pode ser importante.
fonte
AWS_DEFAULT_REGION
diferencia maiúsculas de minúsculas.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(maiúscula)Para Python 2, descobri que a biblioteca boto3 não origina a região
~/.aws/config
se a região estiver definida em um perfil diferente ao padrão. Então você precisa defini-lo na criação da sessão.Onde meu
~/.aws/config
arquivo se parece com isso:Faço isso porque uso perfis diferentes para logins diferentes no AWS, Personal e Work.
fonte
Para aqueles que usam o modelo CloudFormation. Você pode definir
AWS_DEFAULT_REGION
a variável de ambiente usando UserData eAWS::Region
. Por exemplo,fonte