Se connecter à S3
Pour configurer sa connection à s3, des variables d’environnement et fichiers de configuration sont reconnus par la plupart des librairies. Ainsi, si seul un endpoint est utilisé, on pourra souvent se contenter d’utiliser des variables d’environnement (AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_SESSION_TOKEN, AWS_DEFAULT_REGION, ENDPOINT_URL
). Au delà d’un endpoint, et afin de gagner en flexibilité, il est possible de créer des fichiers de configuration situés à la racine du répertoire utilisateur ($HOME). Les fichiers sont découpés en profiles
permettant de configurer différents paramètres et credentials. Le fichier .aws/config
permet de définir les endpoints d’intérêt, tandis que le fichier .aws/credentials
sert à stocker les credentials associés. Par défaut, s’il existe, le profil default
sera utilisé.
.aws/config
[default]
region = us-east-1
endpoint_url = https://my-minio
[profile test]
region = us-east-1
endpoint_url = https://my-minio2
.aws/credentials
[default]
aws_access_key_id = default_access_key
aws_secret_access_key = default_secret_access_key
aws_session_token = default_token
[test]
aws_access_key_id = test_access_key
aws_secret_access_key = test_secret_acess_key
En utilisant s3fs
import s3fs
fs = s3fs.S3FileSystem(
client_kwargs={'endpoint_url': ENDPOINT_URL},
key = AWS_ACCESS_KEY_ID,
secret = AWS_SECRET_ACCESS_KEY,
token = AWS_SESSION_TOKEN"),
Avec des fichiers de config
import s3fs
fs = s3fs.S3FileSystem()
files = fs.ls('inesh')
print(files)
Si on veut changer de profil
import s3fs
fs = s3fs.S3FileSystem(profile="toto")
files = fs.ls('inesh')
print(files)
En utilisant boto3
import boto3
client = boto3.client(
's3',
aws_access_key_id=ACCESS_KEY,
aws_secret_access_key=SECRET_KEY,
aws_session_token=SESSION_TOKEN,
endpoint_url=ENDPOINT_URL,
)
Avec des fichiers de config,
import boto3
client = boto3.client('s3)
response = client.list_objects_v2(Bucket='inesh')
print(response)
Si on veut changer de profil
import boto3
session = boto3.Session(profile_name='toto')
s3_client = session.client(service_name='s3')
En utilisant mc (cli)
Pour configurer mc : une variable d’environnement suffit : MC_HOST_ALIAS = “https://
export MC_HOST_s3 = "https://$AWS_ACCESS_KEY_ID$:AWS_SECRET_ACCESS_KEY:AWS_SESSION_TOKEN@$ENDPOINT_URL$"
Une fois le tout configuré, nous pouvons lister le contenu de notre bucket
mc ls s3/my-bucket
copier un fichier
mc cp s3/my-bucket/my-file.txt s3/my-bucket/somewhere-else/my-file.txt
le télécharger
mc get s3/my-bucket/my-file.txt ./data/my-file.txt
le supprimer
mc rm s3/my-bucket/my-file.txt
l’uploader
mc cp ./data/my-file.txt s3/my-bucket/my-second-file.txt