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.
docker-compose
Cette fois, créez yml pour commencer par docker-compose.
Créez en vous référant à Officiel.
En l'état, une erreur de Arguments de ligne de commande non valides: utiliser le point de terminaison de style de chemin pour la configuration FS. s'est produite, donc corrigez-la en vous référant à here. Fait.
Un seul est utilisé pour le développement, mais il semble utiliser quatre nœuds.
En plus de MinIO, MySQL et DynamoDB sont également disponibles.
Le fichier final est le suivant.
docker-compose.yml
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
http: //192.168.99.100: 9000 / minio / (l'adresse IP est différente à cause du Docker Quickstart Terminal), vous pouvez vérifier et créer l'intérieur du bucket sur le navigateur. Je vais.os.path.join, elle sera connectée avec \\, donc elle est convertie avec replace.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