ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Docker 로 Minio Storage 구현하기
    Minio 2024. 1. 12. 06:38
    728x90
    반응형

    - 목차

     

    들어가며.

    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 에 대한 글을 작성하였습니다.

    읽어주셔서 감사합니다.

    반응형

    'Minio' 카테고리의 다른 글

    [MinIO] mc alias set 명령어 알아보기 ( MinIO Client )  (0) 2024.01.12
Designed by Tistory.