Informations d'identification utilisées par Boto3 (AWS SDK for Python)

Les informations d'authentification utilisées par Boto 3 sont résumées dans "Credentials - Boto 3" à partir de 8 emplacements. Les informations d'identification sont recherchées dans l'ordre spécifié.

Ordre de recherche des informations d'identification

Boto3 tente d'obtenir des informations d'identification de plusieurs manières, y compris des paramètres et des profils. La méthode et l'ordre peuvent être trouvés dans "Configuring Credentials --Credentials - Boto 3". Ma traduction de la pièce est la suivante.

Le mécanisme de recherche des informations d'identification de boto3 consiste à rechercher selon la liste ci-dessous et à s'arrêter là lorsqu'il trouve les informations d'identification. L'ordre dans lequel Boto3 recherche les informations d'identification est:

  1. Identifiants passés en paramètres à la méthode boto.client ()
  2. Identifiants passés en paramètres lors de la création de l'objet Session
  3. Variables d'environnement
  4. Fichier d'informations d'identification partagé (~ / .aws / credentials)
  5. Fichier de configuration AWS (~ / .aws / config)
  6. Souscription par rouleau d'offre
  7. Fichier de configuration Boto2 (/etc/boto.cfg et ~ / .boto)
  8. Sur les instances Amazon EC2 configurées avec le rôle IAM, ce service de métadonnées d'instance

Nous examinerons certains d'entre eux qui utilisent des clés d'accès API et des clés secrètes API, ou des profils nommés ci-dessous.

1. Spécification directe dans la méthode client () et la méthode resource ()

Dans la méthode boto3.client () ou boto3.session.Session (). Client (), spécifiez ce qui suit avec des paramètres.

Clé Valeur spécifiée
aws_access_key_id Clé d'accès à l'API
aws_secret_access_key Clé secrète de l'API
aws_session_token (Au moment de l'authentification multifacteur) Jeton de session

Voici un exemple d'exécution dans un shell interactif.

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

Vous pouvez spécifier les trois paramètres ci-dessus même si vous utilisez la méthode resource () (boto3.resource () ou boto3.session.Session (). Resource ()) au lieu de client ().

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

2. Informations d'identification passées en paramètres lors de la création de l'objet Session

Spécification des informations d'identification

Lors de la création d'un objet session avec boto3.session.Session (), spécifiez ce qui suit avec des paramètres. Les clients générés par la méthode client () et les ressources générées par la méthode resource () à partir de l'objet Session généré utilisent ces informations d'identification.

Clé Valeur spécifiée
aws_access_key_id Clé d'accès à l'API
aws_secret_access_key Clé secrète de l'API
aws_session_token (Au moment de l'authentification multifacteur) Jeton de session

Voici un exemple d'exécution dans un shell interactif.

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

Spécifier un profil

Lors de la création d'un objet session avec boto3.session.Session (), spécifiez ce qui suit avec des paramètres. Les informations d'identification configurées dans le profil nommé spécifié (https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/cli-configure-profiles.html) seront utilisées. Les clients générés par la méthode client () et les ressources générées par la méthode resource () à partir de l'objet Session généré utilisent ces informations d'identification.

Clé Valeur spécifiée
profile_name Nom de profil

Voici un exemple d'exécution dans un shell interactif.

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

3. Variables d'environnement

Spécification des informations d'identification

Spécifiez les éléments suivants avec les variables d'environnement. Si aucune information d'identification explicite n'est spécifiée jusqu'à la section précédente, elle sera utilisée.

Nom de la variable d'environnement Valeur spécifiée
AWS_ACCESS_KEY_ID Clé d'accès à l'API
AWS_SECRET_ACCESS_KEY Clé secrète de l'API
AWS_SESSION_TOKEN (Au moment de l'authentification multifacteur) Jeton de session

Voici un exemple d'exécution du shell interactif de Python après avoir défini les variables d'environnement ci-dessus dans l'environnement bash.

$ 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()

Spécifier un profil

Spécifiez les éléments suivants avec les variables d'environnement. Si aucune information d'identification explicite n'est spécifiée dans la section précédente, cela a spécifié profil nommé Les informations d'identification configurées en .html) seront utilisées.

Nom de la variable d'environnement Valeur spécifiée
AWS_PROFILE Nom de profil

Ce qui suit est un exemple d'exécution en appelant le shell interactif de Python après avoir défini les variables d'environnement ci-dessus dans l'environnement bash.

$ 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. Fichier d'informations d'identification partagé (~ / .aws / credentials)

S'il n'y a pas de telles informations d'identification, les informations d'identification configurées comme profil par défaut dans le fichier d'informations d'identification ( ~ / .aws / credentials) seront utilisées. Ceci est généralement défini avec la commande ʻaws configure` la première fois que vous utilisez l'AWS CLI. Pour plus de détails, reportez-vous à «AWS CLI Easy Setting». S'il te plait donne moi.

5. Fichier de configuration AWS (~ / .aws / config)

Si vous ne disposez pas des informations d'identification jusqu'à présent, les informations d'identification configurées en tant que profil par défaut dans le fichier de configuration AWS ( ~ / .aws / config) seront utilisées. Cependant, normalement, les informations de profil gérées dans le fichier de configuration AWS sont la région (region) et le format de sortie par défaut (ʻoutput`), et n'incluent pas les informations d'authentification.

7. Fichier de configuration Boto2 (/etc/boto.cfg et ~ / .boto)

S'il n'y a pas d'informations d'authentification jusqu'à présent, les informations d'authentification stockées dans le fichier de configuration Boto2 seront vérifiées si elles existent. Le fichier de configuration Boto2 se trouve par défaut dans / etc / boto.cfg ou ~ / .boto. Voici un exemple du contenu.

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

Ceci est pour la compatibilité descendante et le fichier de configuration Boto2 est ignoré sauf dans la section Credentials.

Méthode d'authentification, méthode de spécification et priorité

Les informations d'identification disponibles dans Boto3 incluent (1) la clé d'accès API et la clé secrète API, (2) le profil par défaut, (3) le profil nommé et (4) le rôle (détails non mentionnés ici). Quatre types sont possibles. En correspondance avec la méthode de spécification jusqu'à présent, cela devient comme suit.

Méthode d'authentification Comment spécifier
Clé d'accès API et clé secrète API 1、2、3、4、5、7
Profil par défaut 4
Profil nommé 2、3
rouleau 6、8

Si vous pensez que la méthode d'authentification attendue n'est pas utilisée, il semble nécessaire de vérifier si une autre spécification est faite avec une méthode de spécification de priorité plus élevée.

Par exemple, même si vous spécifiez un profil nommé dans la variable d'environnement ʻAWS_PROFILE, si un autre nom de profil est spécifié dans boto3.session.Session ()`, cela aura la priorité. Si vous le faites intentionnellement, vous le remarquerez, mais cela peut être déroutant si les valeurs par défaut entrent quelque part.

référence

À propos de l'authentification boto3.

À propos des informations d'identification AWS et des fichiers de configuration.

À propos de chaque méthode de boto3.

À propos du fichier de configuration Boto2.

Recommended Posts

Informations d'identification utilisées par Boto3 (AWS SDK for Python)
Remarque sur boto3 (AWS SDK for Python)
Développement du kit SDK AWS pour Python (Boto3) dans Visual Studio 2017
Utilisez AWS SDK for Python (boto) dans un environnement Proxy
Utiliser l'API Resource plutôt que l'API client dans AWS SDK for Python (Boto3)
Obtenir des informations sur les notes à l'aide du SDK Evernote pour Python 3
Appeler Polly à partir du kit SDK AWS pour Python
Provisionnement de flotte avec AWS IoT SDK for Python v2
Exécutez AWS IoT Device SDK for Python sur Raspberry Pi
Script de création de couche AWS pour python
Obtenez des informations sur la propriété en grattant avec python
[Python] Visualisez les informations acquises par Wireshark
Pandas du débutant, par le débutant, pour le débutant [Python]
Un manuel pour les débutants réalisé par des débutants Python
API Boto3 (manipuler les ressources AWS avec la bibliothèque Python) qui est souvent utilisée en privé
++ et-ne peuvent pas être utilisés pour incrémenter / décrémenter en python
Une vérification des performances du kit AWS SDK par langue
Gérez bien AWS avec la bibliothèque Python Boto
Gestion des informations secrètes avec le service de gestion de clés GCP + Python
[Python] La chaîne de caractères f doit être utilisée pour incorporer la chaîne de caractères
Résumé des tableaux Python fréquemment utilisés (pour moi-même)
Notes sur la création d'un environnement python par les débutants
Astro: modules / fonctions python fréquemment utilisés pour l'analyse
Vérifiez! Comment utiliser Azure Key Vault avec Azure SDK pour Python! (Mesures autour de la certification)