J'ai un client boto3:
boto3.client('kms')
Mais cela arrive sur les nouvelles machines, ils s'ouvrent et se ferment dynamiquement.
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()
Pourquoi cela arrive-t-il? et pourquoi seulement une partie du temps?
Réponses:
D'une manière ou d'une autre, vous devez indiquer à boto3 dans quelle région vous souhaitez que le
kms
client soit créé. Cela pourrait être fait explicitement en utilisant leregion_name
paramètre comme dans:ou vous pouvez avoir une région par défaut associée à votre profil dans votre
~/.aws/config
fichier comme dans:ou vous pouvez utiliser une variable d'environnement comme dans:
mais vous devez indiquer à boto3 quelle région utiliser.
la source
Dans mon cas, la sensibilité importait.
la source
Je crois que, par défaut, boto choisit la région définie dans aws cli. Vous pouvez exécuter la commande #aws configure et appuyez sur Entrée (elle montre les crédits que vous avez définis dans aws cli avec région) pour confirmer votre région.
la source
vous pouvez également définir des variables d'environnement dans le script lui-même, plutôt que de passer le paramètre region_name
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
la sensibilité à la casse peut être importante.
la source
AWS_DEFAULT_REGION
est sensible à la casse.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(majuscules)Pour Python 2, j'ai trouvé que la bibliothèque boto3 ne source pas la région à partir du
~/.aws/config
si la région est définie dans un profil différent de celui par défaut. Il faut donc le définir lors de la création de session.Où mon
~/.aws/config
fichier ressemble à ceci:Je fais cela parce que j'utilise différents profils pour différentes connexions à AWS, Personal et Work.
la source
Pour ceux qui utilisent le modèle CloudFormation. Vous pouvez définir
AWS_DEFAULT_REGION
une variable d'environnement à l'aide de UserData etAWS::Region
. Par exemple,la source