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 et toutes les tentatives échouent donc avec l'erreur InvalidAccessKeyId
.
Comment puis-je spécifier des informations d'identification avec boto3?
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')
Vous pouvez obtenir une 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
)