Si vous souhaitez tester AWS S3, je vais vous montrer comment utiliser MinIO pour créer une maquette de S3 localement.
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
http: //127.0.0.1: 9000
.data
du répertoire courant.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.
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
.
127.0.0.1
.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.
Nous vous recommandons d'utiliser des profils plutôt que des variables d'environnement.
-Veuillez installer aws CLI.
--ʻAws configure --profile testpour créer un profil. Veuillez changer
test` comme il convient.
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