Ich habe einen boto3-Client:
boto3.client('kms')
Aber es passiert auf neuen Maschinen. Sie öffnen und schließen sich dynamisch.
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()
Warum passiert dies? und warum nur ein Teil der Zeit?
Antworten:
Auf die eine oder andere Weise müssen Sie boto3 mitteilen, in welcher Region der
kms
Client erstellt werden soll. Dies könnte explizit unter Verwendung desregion_name
Parameters wie folgt erfolgen:oder Sie können einen Standardbereich mit Ihrem Profil in Ihrer
~/.aws/config
Datei verknüpfen, wie in:oder Sie können eine Umgebungsvariable wie folgt verwenden:
Sie müssen boto3 jedoch mitteilen, welche Region verwendet werden soll.
quelle
In meinem Fall war Sensibilität wichtig.
quelle
Ich glaube, Boto wählt standardmäßig die Region aus, die in aws cli festgelegt ist. Sie können den Befehl #aws configure ausführen und zweimal die Eingabetaste drücken (er zeigt an, welche Creds Sie in aws cli mit region festgelegt haben), um Ihre Region zu bestätigen.
quelle
Sie können Umgebungsvariablen auch im Skript selbst festlegen, anstatt den Parameter region_name zu übergeben
os.environ['AWS_DEFAULT_REGION'] = 'your_region_name'
Groß- und Kleinschreibung kann von Bedeutung sein.
quelle
AWS_DEFAULT_REGION
unterscheidet zwischen Groß- und Kleinschreibung.os.environ['AWS_DEFAULT_REGION'] = 'us-east-1'
(Großbuchstaben)Für Python 2 habe ich festgestellt, dass die boto3-Bibliothek die Region nicht aus dem Standard bezieht,
~/.aws/config
wenn die Region in einem anderen Profil definiert ist. Sie müssen es also bei der Sitzungserstellung definieren.Wo meine
~/.aws/config
Datei so aussieht:Ich mache das, weil ich unterschiedliche Profile für unterschiedliche Anmeldungen bei AWS, Personal und Work verwende.
quelle
Für Benutzer der CloudFormation-Vorlage. Sie können
AWS_DEFAULT_REGION
Umgebungsvariablen mit UserData und festlegenAWS::Region
. Beispielsweise,quelle