Echo system/Airflow

Airflow - minio 연동

박쿠리 2024. 9. 7. 19:44

MinIO

오픈 소스 오브젝트 스토리지(object storage) 솔루션으로, Amazon S3와 호환되는 인터페이스를 제공하는 고성능 분산 스토리지 시스템이다. MinIO는 대용량 데이터를 저장하고 관리하는 데 최적화되어 있으며, 클라우드 네이티브 애플리케이션과 빅데이터, AI/ML 워크로드에 적합한 스토리지 솔루션이다. 주로 Kubernetes와 같은 컨테이너 오케스트레이션 플랫폼에서 쉽게 사용할 수 있도록 설계되었다.

 

MinIO의 구성 요소:

  • Bucket: 데이터가 저장되는 기본 단위로, AWS S3의 버킷과 동일한 개념입니다.
  • Object: 버킷에 저장되는 개별 데이터 파일입니다.
  • MinIO 서버: 오브젝트 스토리지를 제공하는 서버로, 여러 노드로 구성된 클러스터에서 동작할 수 있습니다

 

minio client 설치 주소

mc.exe

MinIO Client — MinIO Object Storage for Linux

 

minio connection 연결

Admin - connection 에서 minio 연결을 만든다.

conn Type, Access Key ID, Secret Access Key, Extra 에 endpoint_url 정보를 입력해준다.

 

 

Minio 연결 DAG 

import pendulum
from datetime import timedelta
from airflow.decorators import dag, task
from airflow.providers.amazon.aws.hooks.s3 import S3Hook

@dag(
    dag_id = 'chap_sw_minio',
    schedule="@once",
    start_date=pendulum.datetime(2024,9,10,19, tz=pendulum.timezone("Asia/Seoul")),
    catchup=False,
    default_args={
        'retries':1,
        'retry_delay':timedelta(minutes=5),
    },
    tags=["minio"]
)

def minio():
    @task
    def load_minio():
        s3_hook = S3Hook(aws_conn_id='minio_sw')
        s3_hook.load_file(
            filename='/opt/airflow/dags/chap_sw.py',  # 로컬 파일 경로
            key='chap_sw.py',  # MinIO에서 저장될 파일명
            bucket_name='sandbox',  # MinIO에서 사용할 버킷 이름
            replace=True
        )
    load_minio()
minio()

 

함수 minio

  • S3Hook 을 사용해서 해당 버킷에 파일을 로드한다.

Minio 웹 UI 확인

sandbox 버킷에 파일이 올라간 것을 확인할 수 있다.

반응형