Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

515
Vistas
¿Cómo especificar las credenciales al conectarse a boto3 S3?

En boto, solía especificar mis credenciales cuando me conectaba a S3 de esta manera:

 import boto from boto.s3.connection import Key, S3Connection S3 = S3Connection( settings.AWS_SERVER_PUBLIC_KEY, settings.AWS_SERVER_SECRET_KEY )

Luego podría usar S3 para realizar mis operaciones (en mi caso, eliminar un objeto de un depósito).

Con boto3 todos los ejemplos que encontré son tales:

 import boto3 S3 = boto3.resource( 's3' ) S3.Object( bucket_name, key_name ).delete()

No pude especificar mis credenciales y, por lo tanto, todos los intentos fallan con el error InvalidAccessKeyId .

¿Cómo puedo especificar las credenciales con boto3?

over 4 years ago · Santiago Trujillo
7 Respuestas
Responde la pregunta

0

Me gustaría ampliar la respuesta de @JustAGuy. El método que prefiero es usar AWS CLI para crear un archivo de configuración. El motivo es que, con el archivo de configuración, la CLI o el SDK buscarán automáticamente las credenciales en la carpeta ~/.aws . Y lo bueno es que AWS CLI está escrito en python.

Puede obtener cli de pypi si aún no lo tiene. Estos son los pasos para configurar cli desde la terminal

 $> pip install awscli #can add user flag $> aws configure AWS Access Key ID [****************ABCD]:[enter your key here] AWS Secret Access Key [****************xyz]:[enter your secret key here] Default region name [us-west-2]:[enter your region here] Default output format [None]:

Después de esto, puede acceder a boto y a cualquiera de las API sin tener que especificar claves (a menos que desee usar unas credenciales diferentes).

over 4 years ago · Santiago Trujillo Denunciar

0

Esto es más antiguo, pero también lo coloco aquí para mi referencia. boto3.resource solo está implementando la sesión predeterminada, puede pasar los detalles de la sesión de boto3.resource.

 Help on function resource in module boto3: resource(*args, **kwargs) Create a resource service client by name using the default session. See :py:meth:`boto3.session.Session.resource`.

https://github.com/boto/boto3/blob/86392b5ca26da57ce6a776365a52d3cab8487d60/boto3/session.py#L265

puede ver que solo toma los mismos argumentos que Boto3.Session

 import boto3 S3 = boto3.resource('s3', region_name='us-west-2', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY) S3.Object( bucket_name, key_name ).delete()
over 4 years ago · Santiago Trujillo Denunciar

0

Puedes crear una sesión :

 import boto3 session = boto3.Session( aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, )

Luego use esa sesión para obtener un recurso S3:

 s3 = session.resource('s3')
over 4 years ago · Santiago Trujillo Denunciar

0

Puede obtener un client con una nueva sesión directamente como se muestra a continuación.

 s3_client = boto3.client('s3', aws_access_key_id=settings.AWS_SERVER_PUBLIC_KEY, aws_secret_access_key=settings.AWS_SERVER_SECRET_KEY, region_name=REGION_NAME )
over 4 years ago · Santiago Trujillo Denunciar

0

Existen numerosas formas de almacenar credenciales sin dejar de usar boto3.resource(). Yo mismo estoy usando el método AWS CLI. Funciona perfectamente.

https://boto3.amazonaws.com/v1/documentation/api/latest/guide/configuration.html?fbclid=IwAR2LlrS4O2gYH6xAF4QDVIH2Q2tzfF_VZ6loM3XfXsPAOR4qA-pX_qAILys

over 4 years ago · Santiago Trujillo Denunciar

0

puede establecer variables predeterminadas de aws env para claves secretas y de acceso, de esa manera no necesita cambiar el código de creación de cliente predeterminado, aunque es mejor pasarlo como parámetro si no tiene credenciales predeterminadas

over 4 years ago · Santiago Trujillo Denunciar

0

Si confía en sus .aws/credentials para almacenar la identificación y la clave de un usuario, se recogerá automáticamente.

Por ejemplo

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

Esto seleccionará el perfil de desarrollador (usuario) si su archivo de credentials contiene lo siguiente:

 [dev] aws_access_key_id = AAABBBCCCDDDEEEFFFGG aws_secret_access_key = FooFooFoo region=op-southeast-2
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda