Comment utiliser MinIO avec la même fonction que S3 Utiliser docker-compose

Aperçu

J'ai essayé de le rendre utilisable avec docker pour le développement même dans la situation où les services AWS ne peuvent pas être utilisés en raison de diverses circonstances (problèmes de contrat, budget, etc.). Le titre est MinIO, mais DynamoDB et MySQL sont également disponibles.

Préparation préalable

docker-compose

version: '3.7'
services:
  dynamodb-local:
    build: ./dynamodb
    volumes:
      - dynamodb_data:/home/dynamodblocal/data
    ports:
      - 8000:8000
    command: -jar DynamoDBLocal.jar -dbPath ./data
  mysql:
    image: mysql:5.7
    command: mysqld --character-set-server=utf8 --collation-server=utf8_unicode_ci
    volumes:
      - db_data:/var/lib/mysql
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: 'password'
    ports:
      - 3306:3306
  minio1:
    image: minio/minio:RELEASE.2020-08-27T05-16-20Z
    volumes:
      - data1-1:/data1
      - data1-2:/data2
    ports:
      - "9000:9000"
    environment:
      MINIO_ACCESS_KEY: minio
      MINIO_SECRET_KEY: minio123
    command: server data1
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3
volumes:
  dynamodb_data:
  db_data: {}
  data1-1:
  data1-2:
FROM amazon/dynamodb-local

WORKDIR /home/dynamodblocal

# UID=1000 → Utilisateur d'exécution locale DynamoDB
RUN mkdir data && chown -R 1000 data
minio1_1          | Endpoint:  http://172.20.0.4:9000  http://127.0.0.1:9000
minio1_1          |
minio1_1          | Browser Access:
minio1_1          |    http://172.20.0.4:9000  http://127.0.0.1:9000

Implémentation de la fonction S3

import boto3
import os
from datetime import datetime

endpoint_url = os.getenv('S3_ENDPOINT', 'http://192.168.99.100:9000/')
aws_access_key_id = os.getenv('S3_ACCESS_KEY_ID', 'minio')
aws_secret_access_key_id = os.getenv('S3_SECRET_ACCESS_KEY_ID', 'minio123')

s3 = boto3.resource(
    's3',
    aws_access_key_id=aws_access_key_id,
    aws_secret_access_key=aws_secret_access_key_id,
    endpoint_url=endpoint_url
)

bucket=s3.Bucket('testbukcet')
bucket.create()
bucketPath=os.path.join('dir',datetime.now().strftime('%Y%m%d%H%M%S'),'out','test.csv')
filePath=bucketPath.replace('\\','/')
bucket.upload_file('test.csv',filePath)

Recommended Posts

Comment utiliser MinIO avec la même fonction que S3 Utiliser docker-compose
[Traitement × Java] Comment utiliser la fonction
Comment utiliser la méthode link_to
Comment utiliser la méthode include?
Comment utiliser la classe wrapper
Comment utiliser mssql-tools avec Alpine
Comment ajouter la fonction de suppression
Comment utiliser la même classe Mapper dans plusieurs sources de données avec Spring Boot + MyBatis
[Note] Comment redémarrer le conteneur Windows configuré avec docker-compose
[Java] Comment utiliser la classe File
Comment utiliser BootStrap avec Play Framework
[Rails] Comment utiliser la méthode de la carte
[Java] Comment utiliser la méthode toString ()
Etudier comment utiliser le constructeur (java)
[Traitement × Java] Comment utiliser la boucle
Comment utiliser la fonction implémentée dans l'interface de Kotlin introduite dans Maven comme implémentation par défaut de Java 8
[Traitement × Java] Comment utiliser la classe
Comment implémenter TextInputLayout avec la fonction de validation
Comment surveiller nginx avec docker-compose avec datadog
[Java] Comment utiliser la classe Calendar
Comment déployer sur AWS à l'aide de NUXTJS S3 et CloudFront officiels? Avec docker-compose
Comment accéder directement à Socket avec la fonction TCP de Spring Integration
Comment utiliser le module caméra OV7725 (ESP32-WROVER-B)
Utilisez with_options pour regrouper les mêmes validations!
Comment utiliser MyBatis2 (iBatis) avec Spring Boot 1.4 (Spring 4)
Comment utiliser h2db intégré avec Spring Boot
Comment utiliser le framework Java avec AWS Lambda! ??
Comment mettre en œuvre la fonction de chapelure avec Gretel
[Pour les débutants] Comment implémenter la fonction de suppression
Sortie de la façon d'utiliser la méthode slice
Comment utiliser l'API Java avec des expressions lambda
Comment utiliser la méthode replace () (Java Silver)
Comment utiliser le protocole NFS version 2 avec Ubuntu 18.04
[Introduction à Ruby] Comment utiliser la méthode slice
[Rails6] Comment connecter la fonction d'affichage générée par Scaffold avec la fonction utilisateur générée par devise
Comment supprimer le tweet associé à l'utilisateur lorsque vous le supprimez en même temps
Comment changer l'action avec plusieurs boutons d'envoi
Si vous utilisez SQLite avec VSCode, utilisez l'extension (comment voir le fichier binaire de sqlite3)
Comment exécuter l'application SpringBoot en tant que service
Comment utiliser Map
Comment utiliser rbenv
Comment utiliser Oracle JDK 9 EA avec Travis CI
Comment créer une fonction de messagerie LINE avec Ruby
Comment utiliser with_option
Comment utiliser fields_for
Comment utiliser java.util.logging
Comment utiliser la bibliothèque Z3 dans Scala avec Eclipse
Comment utiliser collection_select
[Rails] Je ne sais pas comment utiliser le modèle ...