Cómo elegir un perfil de AWS al usar boto3 para conectarse a CloudFront


Estoy usando la biblioteca de python Boto 3 y quiero conectarme a AWS CloudFront. Necesito especificar el perfil de AWS correcto (Credenciales de AWS), pero mirando la documentación oficial, no veo manera de especificarlo.

Estoy inicializando el cliente usando el código: client = boto3.client('cloudfront')

Sin embargo, esto resulta en el uso del perfil predeterminado para conectarse. No pude encontrar un método donde pueda especificar qué perfil usar.

Author: billwanjohi, 2015-10-28

3 answers

Creo que los documentos no son maravillosos exponiendo cómo hacer esto. Sin embargo, ha sido una característica soportada durante algún tiempo, y hay algunos detalles en esta solicitud de extracción . Así que hay tres maneras de hacer esto:

A) Crear una nueva sesión con el perfil

    dev = boto3.session.Session(profile_name='dev')

B) Cambiar el perfil de la sesión predeterminada en code

    boto3.setup_default_session(profile_name='dev')

C) Cambiar el perfil de la sesión predeterminada con una variable de entorno

    $ AWS_PROFILE=dev ipython
    >>> import boto3
    >>> s3dev = boto3.resource('s3')
 76
Author: Jordon Phillips,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-13 07:58:55

Haga esto para usar un perfil con el nombre'dev':

session = boto3.session.Session(profile_name='dev')
s3 = session.resource('s3')
for bucket in s3.buckets.all():
    print(bucket.name)
 11
Author: asmaier,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-04 16:40:33

Esta sección de la documentación de boto3 es útil.

Esto es lo que funcionó para mí:

session = boto3.Session(profile_name='dev')
client = session.client('cloudfront')
 4
Author: mgig,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-03 17:59:21