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é.
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:
- Identifiants passés en paramètres à la méthode
boto.client ()
- Identifiants passés en paramètres lors de la création de l'objet
Session
- Variables d'environnement
- Fichier d'informations d'identification partagé (
~ / .aws / credentials
)- Fichier de configuration AWS (
~ / .aws / config
)- Souscription par rouleau d'offre
- Fichier de configuration Boto2 (
/etc/boto.cfg et ~ / .boto
)- 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.
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())
Session
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()
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()
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é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()
~ / .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.
~ / .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.
/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.
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.
À 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