[PYTHON] Einfacher AWS S3-Test mit MinIO

Einführung

Wenn Sie AWS S3 testen möchten, zeige ich Ihnen, wie Sie mit MinIO lokal ein Modell von S3 erstellen.

Starten Sie den MinIO-Server

MinIO kann verwendet werden, indem einfach Folgendes ausgeführt wird (ohne es zu installieren).

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

Beispiel boto3 mit Umgebungsvariablen

Vorbereitung

import os
import boto3

bucket_name = 'sample'  #Eimername
use_minio = True  #Gibt an, ob MinIO verwendet werden soll
os.environ['AWS_ACCESS_KEY_ID'] = 'AKIA0123456789ABCDEF'
os.environ['AWS_SECRET_ACCESS_KEY'] = '0123456789/abcdefghi/ABCDEFGHI0123456789'

Angenommen, die Umgebungsvariablen "AWS_ACCESS_KEY_ID" und "AWS_SECRET_ACCESS_KEY" enthalten die vom Docker angegebenen.

Einen Eimer erstellen

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)

Wenn Sie MinIO verwenden, können Sie wechseln, indem Sie einfach "http://127.0.0.1:9000" für "endpoint_url" angeben.

Ausführungsbeispiel

Angenommen, die Datei "test_file" ist im aktuellen Verzeichnis vorhanden.

bucket.create()  #Eimererstellung
bucket.upload_file("test_file", "upload_file")  # upload_Als Datei hochladen
print(list(bucket.objects.all()))  #Dateiliste
bucket.download_file("upload_file", "download_file")  # download_Als Datei herunterladen
bucket.Object("upload_file").delete()  #Datei löschen
bucket.delete()  #Löschen des Buckets

Es funktioniert wie ein normaler S3. Bitte überprüfen Sie "http: //127.0.0.1: 9000" entsprechend.

Beispiel boto3 nach Profil

Wir empfehlen die Verwendung von Profilen anstelle von Umgebungsvariablen.

Vorbereitung

-Bitte installieren Sie aws CLI. --Erstelle ein Profil mit aws configure --profile test. Bitte ändern Sie den Test entsprechend.

Einen Eimer erstellen

Erstellen Sie einen Bucket mit dem von Ihnen erstellten Profil. Bei Verwendung von MinIO geben Sie profile_name und endpoint_url an.

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)

Der erstellte Bucket kann auf die gleiche Weise wie das vorherige Beispiel verwendet werden.

das ist alles

Recommended Posts

Einfacher AWS S3-Test mit MinIO
[AWS] Verknüpfen Sie Lambda und S3 mit boto3
Stellen Sie mit AWS Lambda Python eine Verbindung zu s3 her
[AWS] Machen Sie SSI-ähnliche Dinge mit S3 / Lambda
Easy Grad-CAM mit Pytorch-Gradcam
Aggregierte AWS S3-Daten
Testen von Elasticsearch mit Python-tcptest
S3 Uploader mit Boto
Einfaches Debuggen mit ipdb
Einfache TopView mit OpenCV
Ausgabe von CloudWatch-Protokollen an S3 mit AWS Lambda (Pythyon ver)
Einfache toxische Umgebung mit Jenkins
[S3] CRUD mit S3 unter Verwendung von Python [Python]
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Automatisieren Sie Python-Tests mit CircleCI
S3-Betrieb mit Python Boto3
Einfache Ordnersynchronisation mit Python
Linux am schnellsten mit AWS lernen
PyTorch mit AWS Lambda [Lambda-Import]
Probieren Sie lokale Tests mit Travis vor
Einfache Python-Kompilierung mit NUITKA-Utilities
Einfacher HTTP-Server mit Python
Einfache Proxy-Anmeldung mit Django-Hijack
Testen von HTTP-Anforderungen mit ESP-WROOM-32
Verwenden Sie einen AWS-Interpreter mit Pycharm
[AWS] Suchen und Abrufen der erforderlichen Daten aus S3-Dateien mit S3 Select
Senden Sie mit ESP32-WROOM-32 aufgenommene Bilder an AWS (API Gateway → Lambda → S3).