EC2 (Start/Stop) InstanceOperator 사용 예시
EC2의 t3.large로 Airflow를 구축한 상황에서 AI 학습 및 예측을 진행해야 하는 문제에 직면했다. 그러나 Airflow Worker(LocalExecutor)만 사용한다면, 과부하가 올 것이라는 확신이 있었기에 AI를 위한 추가 인스턴스를 생성하였다. 이에 따라 AI 관련 Task를 실행할 때만, 해당 EC2를 켜두기 위해 Airflow의 EC2 관련 Operator를 사용하고자 하였다. 이처럼 EC2로 인한 비용 절약을 목적으로 EC2 (Start/Stop) InstanceOperator를 정리해두려고 한다.
- 코드는 공식문서 참고 : EC2Hook의 start(), end(), wait_for_state() 메서드를 활용
EC2StartInstanceOperator 사용 예시
라이브러리 선언
from airflow.providers.amazon.aws.operators.ec2 import EC2StartInstanceOperator
EC2StartInstanceOperator 사용
start_instance = EC2StartInstanceOperator(
task_id="ec2_start_instance",
instance_id='instance_id',
aws_conn_id="ec2_conn",
region_name="ap-northeast-2",
check_interval=15
)
EC2StopInstanceOperator 사용 예시
라이브러리 선언
from airflow.providers.amazon.aws.operators.ec2 import EC2StopInstanceOperator
EC2StopInstanceOperator 사용
stop_instance = EC2StopInstanceOperator(
task_id="ec2_stop_instance",
instance_id='instance_id',
aws_conn_id="aws_conn",
region_name="ap-northeast-2",
check_interval=15
)
각 파라미터 설명
- instance_id : Start or Stop 하려는 EC2 Instance id
- aws_conn_id : Airflow에 등록한 EC2 Connection id (EC2 권한이 있는 IAM 계정)
- region_name (optional) : Start or Stop 하려는 EC2의 지역명
- check_interval (float) : 작업이 완료될 때까지 인스턴스 상태를 확인하는 시간 간격 (sec)
Reference
https://qxf2.com/blog/airflow-control-ec2-instance-start-stop/
'Data Engineering > Airflow' 카테고리의 다른 글
[Airflow] @task, Task Decorator의 개념과 사용 예시, 주의할 점 (2) | 2024.11.20 |
---|---|
[Airflow] schedule_interval 개념과 사용법 (0) | 2024.11.10 |
[Airflow] S3ToRedshiftOperator 사용 예시 (0) | 2024.11.07 |
[Airflow] DAG Trigger 시 DAG Run이 동시에 두 개가 생성되는 문제 (0) | 2024.11.05 |
[Airflow] data_interval_start를 활용한 File System Partitioning 적용 (0) | 2024.10.31 |