-
Docker 로 Minio Storage 구현하기BigData 2024. 1. 12. 06:38728x90반응형
- 목차
들어가며.
Docker Container 를 기반으로 Minio Storage 를 생성하는 방법에 대해서 알아보도록 하겠습니다.
AWS S3 같은 Object Storage 는 Data-Lake 의 용도로 활용됩니다.
그래서 Kafka-Connect, Spark, Flink 와 같은 데이터 프로세싱 어플리케이션에 의해서 DataSource, DataSink 의 타겟으로 활용됩니다.
DataLake 를 구성하기 위한 첫단계로서 로컬 환경에서 Minio Storage 를 구성하는 방법에 대해서 알아보도록 하겠습니다.
Minio Container 실행하기.
Production 환경에서 bitnami 의 도커 이미지나 Helm Chart 가 흔히 사용됩니다.
이번에서도 bitnami/minio 이미지를 사용해 볼 예정입니다.
Docker Run Command.
아래의 명령어는 Minio Docker Container 를 실행하기 위한 기본적인 형태입니다.
환경변수를 통해서 Root User & Password 를 설정하여 Credential 정보를 생성하구요.
Publish 옵션으로 9001, 9000 포트를 Forwarding 합니다.
docker run --name minio -d \ -e MINIO_ROOT_USER=ROOTUSER -e MINIO_ROOT_PASSWORD=123456789 \ -p 9010:9000 -p 9001:9001 \ bitnami/minio
웹 브라우저에서 http://localhost:9001 URL 를 통하여 Minio Web Interface 에 접속이 가능합니다.
환경변수로 설정한 사용자 정보를 입력하여 로그인할 수 있습니다.
버킷 생성하기.
AWS S3 와 같이 파일들을 관리하기 위해서 우선적으로 Bucket 을 생성해야합니다.
http://localhost:9001 URL 로 접속한 Web UI 는 Buckets 페이지를 제공합니다.
Buckets 페이지에서 버킷을 생성할 수 있습니다.
Access Key 생성하기.
Access Key 의 Policy 는 아래와 같이 Inline 형식으로 입력합니다.
"test-bucket" 버킷에 데이터를 Write/Read 할 수 있도록 권한을 설정하였습니다.
{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:PutObject", "s3:GetObject" ], "Resource": [ "arn:aws:s3:::test-bucket", "arn:aws:s3:::test-bucket/*" ] } ] }
File 생성하기.
아래 코드 예시는 생성된 Minio Bucket 에 File 을 생성하기 위한 Python 코드 예시입니다.
boto3 라이브러리를 사용하였고, 생성한 Access Keys 의 정보를 사용합니다.
import boto3 from botocore.exceptions import NoCredentialsError minio_endpoint = "http://localhost:9010" access_key = "Qw0H8Gu6A2KE1PpG33gM" secret_key = "hFn1GtcNyFvaeVra7GCMNH9P7YSIdUWORNhNwsjf" bucket_name = "test-bucket" file_path = "test.txt" s3_client = boto3.client('s3', endpoint_url=minio_endpoint, aws_access_key_id=access_key, aws_secret_access_key=secret_key, verify=False) try: s3_client.upload_file(file_path, bucket_name, "test.txt") print("File uploaded successfully!") except NoCredentialsError: print("Credentials not available") except Exception as e: print(f"Error: {e}")
아래와 같이 파일이 생성된 것을 확인하실 수 있습니다.
마치며.
로컬 환경에서 간단하게 Data Lake 를 구현하기 위한 첫 단계로 Minio 에 대한 글을 작성하였습니다.
읽어주셔서 감사합니다.
반응형'BigData' 카테고리의 다른 글
[Avro] Avro Schema 알아보기 (0) 2024.03.06 Checksum 알아보기 (Data Integrity, 데이터 무결성, 체크섬) (0) 2023.12.23 ASCII 코드 알아보기 (2) 2023.12.22 Trino 도커로 따라하기 (0) 2023.12.03 Thrift 알아보기 (0) 2023.11.04