Verwendung von MinIO mit derselben Funktion wie S3 Verwenden Sie Docker-Compose

Überblick

Ich habe versucht, es mit Docker für die Entwicklung nutzbar zu machen, selbst wenn AWS-Services aufgrund verschiedener Umstände (Vertragsprobleme, Budget usw.) nicht verwendet werden können. Der Titel lautet MinIO, aber auch DynamoDB und MySQL sind verfügbar.

Vorbereitungen

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 → DynamoDB Benutzer für lokale Ausführung
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

Implementierung der S3-Funktion

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

Verwendung von MinIO mit derselben Funktion wie S3 Verwenden Sie Docker-Compose
[Verarbeitung × Java] Verwendung der Funktion
Verwendung der link_to-Methode
Verwendung der include? -Methode
Verwendung der Wrapper-Klasse
Wie man mssql-tools mit alpine benutzt
So fügen Sie die Löschfunktion hinzu
Verwendung derselben Mapper-Klasse in mehreren Datenquellen mit Spring Boot + MyBatis
[Hinweis] So starten Sie den mit Docker-Compose eingerichteten Windows-Container neu
[Java] Verwendung der File-Klasse
Verwendung von BootStrap mit Play Framework
[Schienen] Verwendung der Kartenmethode
[Java] Verwendung der toString () -Methode
Studieren der Verwendung des Konstruktors (Java)
[Verarbeitung × Java] Verwendung der Schleife
Verwendung der in Kotlins Schnittstelle implementierten Funktion, die in Maven als Standardimplementierung von Java 8 eingeführt wurde
[Verarbeitung × Java] Verwendung der Klasse
So implementieren Sie TextInputLayout mit Validierungsfunktion
So überwachen Sie Nginx mit Docker-Compose mit Datadog
[Java] Verwendung der Calendar-Klasse
Wie kann ich mit NUXTJS Official S3 und CloudFront für AWS bereitstellen? Mit Docker-Compose
So greifen Sie mit der TCP-Funktion von Spring Integration direkt auf Socket zu
Verwendung des Kameramoduls OV7725 (ESP32-WROVER-B)
Verwenden Sie with_options, um dieselben Validierungen zu gruppieren!
Verwendung von MyBatis2 (iBatis) mit Spring Boot 1.4 (Spring 4)
Verwendung des eingebauten h2db mit Federstiefel
Verwendung des Java-Frameworks mit AWS Lambda! ??
So implementieren Sie die Brotkrumenfunktion mit gretel
[Für Anfänger] So implementieren Sie die Löschfunktion
Ausgabe der Verwendung der Slice-Methode
Verwendung der Java-API mit Lambda-Ausdrücken
Verwendung der replace () -Methode (Java Silver)
Verwendung des NFS-Protokolls Version 2 mit Ubuntu 18.04
[Ruby-Grundlagen] Verwendung der Slice-Methode
[Rails6] So verbinden Sie die von Scaffold generierte Buchungsfunktion mit der von devise generierten Benutzerfunktion
So löschen Sie den dem Benutzer zugeordneten Tweet, wenn Sie ihn gleichzeitig löschen
So ändern Sie die Aktion mit mehreren Senden-Schaltflächen
Wenn Sie SQLite mit VSCode verwenden, verwenden Sie die Erweiterung (wie die Binärdatei von sqlite3 angezeigt wird)
So führen Sie die SpringBoot-App als Dienst aus
Verwendung von Map
Wie benutzt man rbenv?
Verwendung von Oracle JDK 9 EA mit Travis CI
So erstellen Sie eine mit Ruby erstellte LINE-Messaging-Funktion
Verwendung mit_option
Verwendung von fields_for
Verwendung von java.util.logging
Verwendung der Z3-Bibliothek in Scala mit Eclipse
Verwendung von collection_select
[Rails] Ich weiß nicht, wie ich das Modell verwenden soll ...