Von Boto3 verwendete Anmeldeinformationen (AWS SDK für Python)

Die von Boto 3 verwendeten Authentifizierungsinformationen sind in "Anmeldeinformationen - Boto 3" an 8 Standorten zusammengefasst. Die Anmeldeinformationen werden in der angegebenen Reihenfolge durchsucht.

Suchreihenfolge für Anmeldeinformationen

Boto3 versucht auf verschiedene Weise, Anmeldeinformationen abzurufen, einschließlich Parameter und Profile. Die Methode und Reihenfolge finden Sie unter "Anmeldeinformationen konfigurieren - Anmeldeinformationen - Boto 3". Meine Übersetzung des Teils lautet wie folgt.

Der Suchmechanismus für Anmeldeinformationen von boto3 besteht darin, gemäß der folgenden Liste zu suchen und dort anzuhalten, wenn der Berechtigungsnachweis gefunden wird. Die Reihenfolge, in der Boto3 nach Anmeldeinformationen sucht, lautet:

  1. Anmeldeinformationen, die als Parameter an die Methode boto.client () übergeben wurden
  2. Anmeldeinformationen, die beim Erstellen des "Session" -Objekts als Parameter übergeben wurden
  3. Umgebungsvariablen
  4. Gemeinsame Anmeldeinformationsdatei (~ / .aws / credentials)
  5. AWS-Konfigurationsdatei (~ / .aws / config)
  6. Roll Underwriting anbieten
  7. Boto2-Konfigurationsdatei (/etc/boto.cfg und ~ / .boto)
  8. Auf Amazon EC2-Instanzen, die mit der IAM-Rolle konfiguriert wurden, dieser Instanz-Metadatendienst

Wir werden uns einige davon ansehen, die API-Zugriffsschlüssel und geheime API-Schlüssel oder benannte Profile verwenden.

1. Direkte Angabe in der Methode "client ()" und der Methode "resource ()"

Geben Sie in der Methode "boto3.client ()" oder in der Methode "boto3.session.Session (). Client ()" Folgendes mit Parametern an.

Schlüssel Spezifizierter Wert
aws_access_key_id API-Zugriffsschlüssel
aws_secret_access_key API geheimer Schlüssel
aws_session_token (Zum Zeitpunkt der Multi-Faktor-Authentifizierung) Sitzungstoken

Das Folgende ist ein Beispiel für die Ausführung in einer interaktiven Shell.

>>> import boto3
>>> client = boto3.client('iam', aws_access_key_id='YOURACCESSKEY', aws_secret_access_key='YOURSECRETKEY')
>>> client.list_users()

Sie können die obigen drei Parameter auch dann angeben, wenn Sie anstelle von "client ()" die Methode "resource ()" ("boto3.resource ()" oder "boto3.session.Session (). Resource ()") verwenden.

>>> import boto3
>>> resource = boto3.resource('iam', aws_access_key_id='YOURACCESSKEY', aws_secret_access_key='YOURSECRETKEY')
>>> list(resource.users.all())

2. Anmeldeinformationen, die beim Erstellen des Sitzungsobjekts als Parameter übergeben wurden

Anmeldeinformationen angeben

Geben Sie beim Erstellen eines Sitzungsobjekts mit "boto3.session.Session ()" Folgendes mit Parametern an. Clients, die von der Methode "client ()" generiert wurden, und Ressourcen, die von der Methode "resource ()" aus dem generierten Sitzungsobjekt generiert wurden, verwenden diesen Berechtigungsnachweis.

Schlüssel Spezifizierter Wert
aws_access_key_id API-Zugriffsschlüssel
aws_secret_access_key API geheimer Schlüssel
aws_session_token (Zum Zeitpunkt der Multi-Faktor-Authentifizierung) Sitzungstoken

Das Folgende ist ein Beispiel für die Ausführung in einer interaktiven Shell.

>>> import boto3
>>> session = boto3.session.Session(aws_access_key_id='YOURACCESSKEY', aws_secret_access_key='YOURSECRETKEY')
>>> client = session.client('iam')
>>> client.list_users()

Profil angeben

Geben Sie beim Erstellen eines Sitzungsobjekts mit "boto3.session.Session ()" Folgendes mit Parametern an. Die im angegebenen benannten Profil (https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html) konfigurierten Anmeldeinformationen werden verwendet. Clients, die von der Methode "client ()" generiert wurden, und Ressourcen, die von der Methode "resource ()" aus dem generierten Sitzungsobjekt generiert wurden, verwenden diesen Berechtigungsnachweis.

Schlüssel Spezifizierter Wert
profile_name Profilname

Das Folgende ist ein Beispiel für die Ausführung in einer interaktiven Shell.

>>> import boto3
>>> session = boto3.session.Session(profile_name='YOURPROFILENAME')
>>> client = session.client('iam')
>>> client.list_users()

3. Umgebungsvariablen

Anmeldeinformationen angeben

Geben Sie Folgendes mit Umgebungsvariablen an. Wenn bis zum vorherigen Abschnitt keine expliziten Anmeldeinformationen angegeben wurden, wird dies verwendet.

Name der Umgebungsvariablen Spezifizierter Wert
AWS_ACCESS_KEY_ID API-Zugriffsschlüssel
AWS_SECRET_ACCESS_KEY API geheimer Schlüssel
AWS_SESSION_TOKEN (Zum Zeitpunkt der Multi-Faktor-Authentifizierung) Sitzungstoken

Das folgende Beispiel zeigt die Ausführung der interaktiven Python-Shell, nachdem die oben genannten Umgebungsvariablen in der Bash-Umgebung festgelegt wurden.

$ export AWS_ACCESS_KEY_ID=YOURACCESSKEY
$ export AWS_SECRET_ACCESS_KEY=YOURSECRETKEY
$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> client = boto3.client('iam')
>>> client.list_users()

Profil angeben

Geben Sie Folgendes mit Umgebungsvariablen an. Wenn im vorherigen Abschnitt keine expliziten Anmeldeinformationen angegeben wurden, wurde dieses [benannte Profil] angegeben (https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles). Die in .html konfigurierten Anmeldeinformationen werden verwendet.

Name der Umgebungsvariablen Spezifizierter Wert
AWS_PROFILE Profilname

Das folgende Beispiel zeigt die Ausführung der interaktiven Python-Shell, nachdem die oben genannten Umgebungsvariablen in der Bash-Umgebung festgelegt wurden.

$ export AWS_PROFILE=YOURPROFILENAME
$ python3
Python 3.6.9 (default, Nov  7 2019, 10:44:02)
[GCC 8.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import boto3
>>> client = boto3.client('iam')
>>> client.list_users()

4. Freigegebene Anmeldeinformationsdatei (~ / .aws / credentials)

Wenn keine solchen Anmeldeinformationen vorhanden sind, werden die als "Standard" -Profil in der Anmeldeinformationsdatei ("~ / .aws / credentials") konfigurierten Anmeldeinformationen verwendet. Dies wird normalerweise mit dem Befehl aws configure festgelegt, wenn Sie die AWS CLI zum ersten Mal verwenden. Weitere Informationen finden Sie unter "AWS CLI Easy Setting". Bitte gib mir.

5. AWS-Konfigurationsdatei (~ / .aws / config)

Wenn Sie die Anmeldeinformationen noch nicht haben, werden die als "Standard" -Profil in der AWS-Konfigurationsdatei ("~ / .aws / config") konfigurierten Anmeldeinformationen verwendet. Normalerweise sind die in der AWS-Konfigurationsdatei verwalteten Profilinformationen jedoch die Region ("Region") und das Standardausgabeformat ("Ausgabe") und enthalten keine Authentifizierungsinformationen.

7. Boto2-Konfigurationsdatei (/etc/boto.cfg und ~ / .boto)

Wenn bisher keine Authentifizierungsinformationen vorhanden sind, werden die in der Boto2-Konfigurationsdatei gespeicherten Authentifizierungsinformationen überprüft, falls vorhanden. Die Boto2-Konfigurationsdatei befindet sich standardmäßig in / etc / boto.cfg oder ~ / .boto. Das Folgende ist ein Beispiel für den Inhalt.

 Example ~/.boto file
[Credentials]
aws_access_key_id = foo
aws_secret_access_key = bar

Dies dient der Abwärtskompatibilität und die Boto2-Konfigurationsdatei wird außer im Abschnitt Anmeldeinformationen ignoriert.

Authentifizierungsmethode, Spezifikationsmethode und Priorität

Zu den in Boto3 verfügbaren Anmeldeinformationen gehören (1) API-Zugriffsschlüssel und API-Geheimschlüssel, (2) Standardprofil, (3) benanntes Profil und (4) Rolle (Details hier nicht erwähnt). Es sind vier Typen möglich. Wenn man dies mit der bisherigen Spezifikationsmethode korrespondiert, wird es wie folgt.

Authentifizierungsmethode Wie zu spezifizieren
API-Zugriffsschlüssel und geheimer API-Schlüssel 1、2、3、4、5、7
Standard Profil 4
Benanntes Profil 2、3
rollen 6、8

Wenn Sie der Meinung sind, dass die erwartete Authentifizierungsmethode nicht verwendet wird, müssen Sie überprüfen, ob eine andere Spezifikation mit einer Spezifikationsmethode mit höherer Priorität erstellt wurde.

Selbst wenn Sie beispielsweise in der Umgebungsvariablen "AWS_PROFILE" ein benanntes Profil angeben, hat dies Vorrang, wenn in "boto3.session.Session ()" ein anderer Profilname angegeben wird. Wenn Sie es absichtlich tun, werden Sie es bemerken, aber es kann verwirrend sein, wenn die Standardwerte irgendwo eingehen.

Referenz

Informationen zur Boto3-Authentifizierung.

Informationen zu AWS-Anmeldeinformationen und Konfigurationsdateien.

Über jede Methode von boto3.

Informationen zur Boto2-Konfigurationsdatei.

Recommended Posts

Von Boto3 verwendete Anmeldeinformationen (AWS SDK für Python)
boto3 (AWS SDK für Python) Hinweis
Entwicklung des AWS SDK für Python (Boto3) in Visual Studio 2017
Verwenden Sie das AWS SDK für Python (boto) in einer Proxy-Umgebung
Verwenden Sie die Ressourcen-API anstelle der Client-API im AWS SDK für Python (Boto3).
Mit dem Evernote SDK für Python 3 erhalten Sie Informationen zu Notizen
Rufen Sie Polly aus dem AWS SDK für Python auf
Flottenbereitstellung mit AWS IoT SDK für Python v2
Führen Sie das AWS IoT Device SDK für Python auf Raspberry Pi aus
AWS Layer Creation Script für Python
Abrufen von Eigenschaftsinformationen durch Scraping mit Python
[Python] Visualisieren Sie die von Wireshark erfassten Informationen
Pandas des Anfängers, vom Anfänger, für den Anfänger [Python]
Ein Lehrbuch für Anfänger von Python-Anfängern
Boto3-API (AWS-Ressourcen mit Python-Bibliothek bearbeiten), die häufig privat verwendet wird
++ und-können nicht zum Inkrementieren / Dekrementieren in Python verwendet werden
Eine Überprüfung der AWS SDK-Leistung nach Sprache
Verwalten Sie AWS mit der Python-Bibliothek Boto
Geheime Informationsverwaltung mit GCP Key Management Service + Python
[Python] Die f-Zeichenfolge sollte zum Einbetten der Zeichenfolge verwendet werden
Zusammenfassung häufig verwendeter Python-Arrays (für mich)
Hinweise zum Erstellen einer Python-Umgebung durch Anfänger
Astro: Häufig verwendete Python-Module / -Funktionen zur Analyse
Überprüfen Sie, wie Sie Azure Key Vault mit Azure SDK für Python verwenden! (Maßnahmen rund um die Zertifizierung)