[PYTHON] Tests faciles d'AWS S3 avec MinIO

introduction

Si vous souhaitez tester AWS S3, je vais vous montrer comment utiliser MinIO pour créer une maquette de S3 localement.

Démarrer le serveur MinIO

MinIO peut être utilisé en exécutant simplement ce qui suit (sans l'installer).

docker run -d -p 9000:9000 --name minio -v $PWD/data:/data \
  -e "MINIO_ACCESS_KEY=AKIA0123456789ABCDEF" \
  -e "MINIO_SECRET_KEY=0123456789/abcdefghi/ABCDEFGHI0123456789" \
  minio/minio server /data

Exemple de boto3 avec des variables d'environnement

Préparation

import os
import boto3

bucket_name = 'sample'  #Nom du godet
use_minio = True  #Utiliser ou non MinIO
os.environ['AWS_ACCESS_KEY_ID'] = 'AKIA0123456789ABCDEF'
os.environ['AWS_SECRET_ACCESS_KEY'] = '0123456789/abcdefghi/ABCDEFGHI0123456789'

Supposons que les variables d'environnement ʻAWS_ACCESS_KEY_ID et ʻAWS_SECRET_ACCESS_KEY contiennent celles spécifiées par docker.

Créer un bucket

kwargs = dict(
    region_name="ap-northeast-1",
    aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
    aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
)

if use_minio:
    kwargs["endpoint_url"] = "http://127.0.0.1:9000"

bucket = boto3.resource("s3", **kwargs).Bucket(bucket_name)

Lorsque vous utilisez MinIO, vous pouvez changer en spécifiant simplement "" http://127.0.0.1:9000 " dans ʻendpoint_url.

Exemple d'exécution

Supposons que le fichier test_file existe dans le répertoire courant.

bucket.create()  #Création de seau
bucket.upload_file("test_file", "upload_file")  # upload_Télécharger en tant que fichier
print(list(bucket.objects.all()))  #Liste des fichiers
bucket.download_file("upload_file", "download_file")  # download_Télécharger en tant que fichier
bucket.Object("upload_file").delete()  #Supprimer le fichier
bucket.delete()  #Suppression du bucket

Cela fonctionne comme un S3 normal. Veuillez cocher http: //127.0.0.1: 9000 selon le cas.

Exemple de boto3 par profil

Nous vous recommandons d'utiliser des profils plutôt que des variables d'environnement.

Préparation

-Veuillez installer aws CLI. --ʻAws configure --profile testpour créer un profil. Veuillez changertest` comme il convient.

Créer un bucket

Créez un bucket à l'aide du profil que vous avez créé. Lorsque vous utilisez MinIO, vous spécifierez profile_name et ʻendpoint_url`.

profile_name = "test"

cr = boto3.Session(profile_name=profile_name).get_credentials()
kwargs = dict(aws_access_key_id=cr.access_key, aws_secret_access_key=cr.secret_key)

if use_minio:
    kwargs["endpoint_url"] = "http://localhost:9000"

bucket = boto3.resource("s3", **kwargs).Bucket(bucket_name)

Le bucket créé peut être utilisé de la même manière que l'exemple précédent.

c'est tout

Recommended Posts

Tests faciles d'AWS S3 avec MinIO
[AWS] Associez Lambda et S3 à boto3
Connectez-vous à s3 avec AWS Lambda Python
[AWS] Faites des choses de type SSI avec S3 / Lambda
Easy Grad-CAM avec pytorch-gradcam
Agréger les données AWS S3
Tester Elasticsearch avec python-tcptest
Téléchargeur S3 avec boto
Débogage facile avec ipdb
TopView facile avec OpenCV
Exporter les journaux CloudWatch vers S3 avec AWS Lambda (Pythyon ver)
Environnement toxique facile avec Jenkins
[S3] CRUD avec S3 utilisant Python [Python]
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Automatisez les tests python avec CircleCI
Opération S3 avec python boto3
Synchronisation facile des dossiers avec Python
L'apprentissage le plus rapide sous Linux avec AWS
PyTorch avec AWS Lambda [importation Lambda]
Pré-essayez les tests locaux avec Travis
Compilation facile de Python avec NUITKA-Utilities
Serveur HTTP facile avec Python
Connexion proxy facile avec django-hijack
Test des requêtes HTTP avec ESP-WROOM-32
Utiliser l'interpréteur AWS avec Pycharm
[AWS] Recherchez et acquérez les données nécessaires à partir des fichiers S3 avec S3 Select
Envoyer les images prises avec ESP32-WROOM-32 vers AWS (API Gateway → Lambda → S3)