Tengo un cliente boto3:
boto3.client('kms')
Pero sucede en máquinas nuevas, se abren y cierran dinámicamente.
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 qué está pasando esto? ¿Y por qué solo una parte del tiempo?
Respuestas:
De una forma u otra, debe decirle a boto3 en qué región desea
kms
que se cree el cliente. Esto podría hacerse explícitamente usando elregion_name
parámetro como en:o puede tener una región predeterminada asociada con su perfil en su
~/.aws/config
archivo como en:o puede usar una variable de entorno como en:
pero necesita decirle a boto3 qué región usar.
fuente
En mi caso, la sensibilidad importaba.
fuente
Creo que, por defecto, boto elige la región que se establece en aws cli. Puede ejecutar el comando #aws configure y presionar enter (muestra los créditos que ha establecido en aws cli con region) dos veces para confirmar su región.
fuente
También puede establecer variables de entorno en el script en sí, en lugar de pasar el parámetro region_name
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
mayúsculas y minúsculas pueden importar.
fuente
AWS_DEFAULT_REGION
es sensible a mayúsculas y minúsculasos.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(mayúscula)Para Python 2, descubrí que la biblioteca boto3 no obtiene la región de
~/.aws/config
si la región está definida en un perfil diferente al predeterminado. Entonces debes definirlo en la creación de la sesión.Donde mi
~/.aws/config
archivo se ve así:Hago esto porque utilizo diferentes perfiles para diferentes inicios de sesión en AWS, Personal y Trabajo.
fuente
Para aquellos que usan la plantilla CloudFormation. Puede establecer
AWS_DEFAULT_REGION
la variable de entorno utilizando UserData yAWS::Region
. Por ejemplo,fuente