AWS

[AWS] MWAA 시작하기

베이글러 2024. 9. 26. 14:13
728x90
반응형

 


MWAA 란?


Amazon Managed Workflows for Apache Airflow 의 줄임말로 말 그대로 Amazon 에서 제공하는 Airflow 서비스이다.

따라서, Amazon MWAA를 사용하면 확장성, 가용성 및 보안을 위해 기본 인프라를 관리할 필요 없이 Apache Airflow와 Python을 사용하여 워크플로우를 생성할 수 있다.

 

여기서 [Apache Airflow] 이란?

워크플로우라고 하는 프로세스 및 작업 시퀀스를 프로그래밍 방식으로 작성, 예약 및 모니터링하는 데 사용되는 오픈 소스 도구이다.

복잡한 워크플로우를 관리하기 위한 도구라고 볼 수 있다. 

 


작동 방식

▶ MWAA 는 Python으로 작성된 Directed Acyclic Graph(DAG)를 사용하여 워크플로를 오케스트레이션한다.

MWAA에 사용할 Amazon Simple Storage Service(S3) 버킷을 지정하면, 이 위치에 DAG, 플러그인 및 Python 요구 사항이 저장된다. 그런 다음 AWS Management Console, 명령줄 인터페이스(CLI), 소프트웨어 개발 키트(SDK) 또는 Apache Airflow 사용자 인터페이스(UI)에서 DAG를 실행하고 모니터링할 수 있다.

출처: https://aws.amazon.com/ko/managed-workflows-for-apache-airflow/

 

▶ 즉, DAG 를 사용하는 AirFlow와 구조는 동일하되, S3 버킷에 Python 으로 작성된 파일을 저장하여 DAG 를 생성한다.

그리고 생성된 해당 DAG는 Concole, UI 등에서 실행하고 모니터링이 가능하다.


시작하기

[1단계] Amazon S3에 DAG 업로드 → [2단계] Apache Airflow 에서 DAG 실행 


1단계: AWS CloudFormation 템플릿을 로컬에 저장

    템플릿 다운로드

1. 위 링크를 통해 AWS CloudFormation  템플릿을 다운받아 로컬에 저장한다.

    (AWS CloudFormation : AWS 리소스를 모델링하고 설정하여 리소스 관리 시간을 줄이고 AWS에서 실행되는 애플리케이션에 더 많은 시간을 사용하도록 해 주는 서비스 )


2단계: AWS CLI를 사용하여 스택 생성

1. 명령 프롬프트에서 1단계에서 다운받은 mwaa-public-network.yml 파일이 존재하는 디렉토리로 이동한다.

cd 디렉토리_이름

 

2. AWS CLI 를 이용하여 스택을 생성하는 명령을 사용한다.

aws cloudformation create-stack --stack-name mwaa-environment-public-network --template-body file://mwaa-public-network.yml --capabilities CAPABILITY_IAM


3단계: DAG를 Amazon S3에 업로드하고 Apache Airflow UI에서 실행

1. DAG 파일을 작성하여 로컬에 저장한다.

참고: 튜토리얼

 

Tutorial — Airflow Documentation

 

airflow.apache.org

 

2. Amazon S3 버킷에 1번에서 생성한 DAG 파일을 업로드한다. 

 

3. AWS 콘솔화면에서 '서비스' > '애플리케이션 통합' > '관리형 Apache Airflow' 로 접속한다.

 

4. 'Open AirFlow UI' 를 클릭하여 MWAA 로 접속한다.

 

5. DAG 목록에서 ON/OFF 토글을 선택하여 ON 상태로 변경한 후 Trigger DAG 를 클릭하여 DAG 를 실행한다.

 


상세 화면

▶ MWAA 첫 화면에서는 DAG 목록에 대해서 구동여부, 성공/실패, 구동시간 등의 정보를 한 번에 확인이 가능하다.

 

▶ 해당 DAG 를 ON/OFF 할 수 있는 버튼으로, ON 으로 되어 있어야만 DAG 가 구동이 된다.

 

▶ 이 부분은 해당 DAG 의 상태를 보여주게 되는데, 성공 & 실패 횟수 및 현재 구동 중이라면 초록색으로 표시된다.

 

▶ DAG 에 스케줄링 주기를 확인할 수 있고, 리눅스 crontab 처럼 주기를 설정하면 된다.

여기서 [리눅스 크론탭 Linux Crontab] 이란?

윈도우의 스케줄러와 비슷한 개념으로, 원하는 시간에 원하는 작업을 수행하도록 하는 것을 의미한다.

 

주기 설정 방법은?

총 5개의 숫자 혹은 *로 주기를 설정하게 되는데, 이는 Space 공백으로 구분한다.

   *          *          *         *         *
분(0~59)  시간(0~23)  일(1~31)  월(1~12)  요일(0~7)
  • : 몇 분에 수행될 것인지를 설정 (0~59)
           분 자리에 * 의 의미는 1분 단위로 매분마다 실행할 것이라는 의미
  • 시간 : 몇 시에 수행될 것인지를 설정 (0~23)
              시간 자리에 * 의 의미는 매시간마다 실행할 것이라는 의미
  • : 몇 일에 수행될 것인지를 설정 (1~31)
           일 자리에 * 의 의미는 매일 실행할 것이라는 의미
  • : 몇 월에 수행될 것인지를 설정 (1~12)
           월 자리에 * 의 의미는 매월 실행할 것이라는 의미
  • 요일 : 무슨 요일에 수행될 것인지를 설정 (0~7)
              요일 자리에 * 의 의미는 월요일부터 일요일까지 매일 실행할 것이라는 의미
              1은 월요일 ~ 6은 토요일 + 0과 7은 일요일을 의미함

예를 들어, 아래와 같이 주기를 설정했다고 가정한다.

30 1 * * *

 

이 항목은 매일 1시 30분에 실행된다는 의미이다.

다음 예시로 아래와 같은 주기를 설정하면, 

0 17 * * 1

 

이 항목은 월요일 17시 00분에 실행된다는 의미로 해석된다.

 


 


개인적으로 MWAA 를 사용해보았을 때,

AWS 공식 document 외에는 정보가 부족해서 문제 해결이 어려운 경우가 있었다.

아직은 MWAA 를 많이 사용하는 것 같아보이지 않기도....?

AirFlow를 사용해보지 않아서 MWAA 와 명확한 비교를 하기엔 어렵지만,

S3 와 연동이 되다보니 기존 AWS 에서 작업을 한다면 쉽게 적응이 된다는 점에서 아주 좋았다 :)

반응형

'AWS' 카테고리의 다른 글

[AWS] CLI란? AWS Command Line Interface 알아보기  (0) 2024.10.21
[AWS] Athena란? Athena, Redshift, EMR 비교  (1) 2024.09.27