Wenn Sie AWS S3 testen möchten, zeige ich Ihnen, wie Sie mit MinIO lokal ein Modell von S3 erstellen.
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
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.
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.
127.0.0.1
an.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.
Wir empfehlen die Verwendung von Profilen anstelle von Umgebungsvariablen.
-Bitte installieren Sie aws CLI.
--Erstelle ein Profil mit aws configure --profile test
. Bitte ändern Sie den Test entsprechend.
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