227 votes

Comment spécifier les informations d'identification lors de la connexion à boto3 S3?

Sur boto, j'avais l'habitude de spécifier mes informations d'identification lors de la connexion à S3 de la manière suivante:

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

Je pourrais ensuite utiliser S3 pour effectuer mes opérations (dans mon cas, supprimer un objet d'un compartiment).

Avec boto3, tous les exemples que j'ai trouvés sont tels:

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

Je ne pouvais pas spécifier mes informations d'identification. Par conséquent, toutes les tentatives échouent avec l'erreur InvalidAccessKeyId .

Comment puis-je spécifier des informations d'identification avec boto3?

342voto

Alasdair Points 36535

Vous pouvez créer une session :

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

Puis utilisez cette session pour obtenir une ressource S3:

 s3 = session.resource('s3')
 

174voto

Rajez Points 1646

Vous pouvez obtenir un client avec une nouvelle session directement comme ci-dessous.

  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
                      )
 

2voto

user1571299 Points 306

Il existe de nombreuses façons de stocker les informations d'identification tout en utilisant toujours boto3.resource (). J'utilise moi-même la méthode AWS CLI. Ça fonctionne parfaitement.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X