J'utilise la bibliothèque Boto 3 python et je souhaite me connecter à AWS CloudFront. Je dois spécifier le profil AWS correct (informations d'identification AWS), mais si je regarde la documentation officielle, je ne vois aucun moyen de le spécifier.
J'initialise le client en utilisant le code: client = boto3.client('cloudfront')
Cependant, le profil par défaut est utilisé pour se connecter. Je n'ai pas trouvé de méthode pour spécifier le profil à utiliser.
Je pense que les docs ne sont pas très doués pour expliquer comment faire cela. Cependant, cette fonctionnalité est supportée depuis un certain temps, et il y a quelques détails dans cette demande de pull . Donc, il y a trois façons de faire cela:
a) Créer une nouvelle session avec le profil
dev = boto3.session.Session(profile_name='dev')
b) Modifier le profil de la session par défaut en code
boto3.setup_default_session(profile_name='dev')
c) Modifier le profil de la session par défaut avec une variable d'environnement
$ AWS_PROFILE=dev ipython
>>> import boto3
>>> s3dev = boto3.resource('s3')
Faites ceci pour utiliser un profil avec le nom 'dev':
session = boto3.session.Session(profile_name='dev')
s3 = session.resource('s3')
for bucket in s3.buckets.all():
print(bucket.name)
Cette section de la documentation de boto3 est utile.
Voici ce qui a fonctionné pour moi:
session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')
Il suffit d'ajouter un profil à la configuration de la session avant l'appel du client. boto3.session.Session(profile_name='YOUR_PROFILE_NAME').client('cloudwatch')