비밀번호

커뮤니티2

  • 맑음속초13.3맑음북춘천3.0맑음철원2.7맑음동두천4.3맑음파주5.3맑음대관령6.4맑음춘천3.1황사백령도10.8황사북강릉11.5맑음강릉13.0맑음동해13.5황사서울7.6황사인천8.1맑음원주4.1황사울릉도12.1맑음수원5.9맑음영월3.0맑음충주3.7맑음서산2.9맑음울진10.3황사청주5.9황사대전5.1맑음추풍령2.5황사안동5.0맑음상주5.4황사포항9.4맑음군산4.6황사대구8.4황사전주4.7황사울산8.7황사창원10.8황사광주6.8구름많음부산11.1구름많음통영8.9황사목포6.8황사여수8.6황사흑산도7.4구름많음완도6.4맑음고창2.8구름많음순천7.0황사홍성5.2맑음서청주3.4황사제주9.7맑음고산10.0구름많음성산10.9구름많음서귀포13.7구름많음진주7.2맑음강화7.5맑음양평4.1맑음이천4.2맑음인제4.5맑음홍천2.9맑음태백9.0맑음정선군3.2맑음제천2.0맑음보은1.4맑음천안2.7맑음보령3.9맑음부여2.3맑음금산1.8맑음세종3.0맑음부안5.0구름많음임실0.9맑음정읍3.8구름많음남원2.6구름많음장수0.0맑음고창군4.5구름많음영광군3.4구름많음김해시10.8구름많음순창군2.7구름많음북창원10.7구름많음양산시11.9구름많음보성군6.4구름많음강진군5.3구름많음장흥4.0흐림해남5.6구름많음고흥4.3구름많음의령군4.3구름많음함양군2.2구름많음광양시6.8흐림진도군7.8맑음봉화2.0맑음영주4.2맑음문경4.3맑음청송군3.1구름많음영덕8.8맑음의성3.4맑음구미6.5맑음영천6.8구름많음경주시8.7구름많음거창2.5구름많음합천4.7구름많음밀양9.3구름많음산청4.7구름많음거제11.8구름많음남해10.0구름많음북부산11.9
  • 2026.04.21(화)

데이터 엔지니어링데이터 엔지니어링

Airflow AwsEcsExecutor Fargate 워커 사용 시 ECR 태스크 정의 설정

이전 포스트중 AwsEcsExecutor를 사용하는 Airflow의 DAG및 Task 작성법과 무중단 배포를 적었습니다. 이번에는 Airflow worker를 실행할 ECS 내의 태스크 정의를 설정하는 법에 대해 다룹니다.

 

ECS에서 Fargate를 실행하기 위해선 Task definition detail(태스크 정의)를 설정해야 합니다.

이는 Fargate 노드의 리소스 프로비저닝, 실행할 이미지 등을 설정하기위해 필요한 과정입니다.

 

위는 테스크 정의의 인프라 요구 사항 항목입니다. 테스크의 인프라를 정의하는데 쓰입니다.

여기서 테스크 크기 설정은 테스크 실행 시에 오버라이드가 가능하므로 따로 설정하지 않아도 됩니다.

 

테스크 역할은 테스크가 실행되는 동안 부여받을 역할입니다. 작업중에 S3 또는 Lambda 등 권한이 필요한 작업이 있을 경우 따로 액세스 키를 사용하지 않아도 역할을 통해 사용할 수 있습니다.

 

테스크 실행 역할은 테스크 실행 시에 필요한 역할로 이미지를 가져올 ECR의 인증 권한 등이 필요하며, 이는 AWS에서 자동으로 생성됩니다.

 

위는 작업 실행 시 띄울 컨테이너들의 정의입니다.

컨테이너 이름과 이미지 URI를 지정하며 컨테이너 관련 여러가지 설정을 할 수 있습니다.

워커로 실행 시에는 Airflow가 설치되어있어야 하므로 기본적으로 Airflow 이미지를 베이스로 사용합니다.

https://hub.docker.com/r/apache/airflow

컨테이너의 리소스 할당 제한 또한 Executor 설정에서 오버라이드 가능하므로 따로 설정하지 않습니다.

 

이외 필요한 환경 변수 및 환경 파일 등을 설정하며

로그 설정의 경우 Remote Logging을 사용할 경우 따로 설정하지 않아도 되며 CloudWatch 로그 또한 사용할 수 있습니다.

 

필요한 경우 임시 스토리지를 추가로 설정할 수 있습니다. 기본적으로 Fargate 노드 당 20GiB의 기본 스토리지가 제공됩니다.

 


{

    "taskDefinitionArn": "<태스크 정의 ARN>",

    "containerDefinitions": [

        {

            "name": "worker",

            "image": "<이미지 URI>",

            "cpu": 0,

            "portMappings": [],

            "essential": true,

            "environment": [],

            "mountPoints": [],

            "volumesFrom": [],

            "systemControls": []

        }

    ],

    "family": "airflow-worker",

    "executionRoleArn": "<워커 테스크 실행 역할 ARN>",

    "networkMode": "awsvpc",

    "revision": 3,

    "volumes": [],

    "status": "ACTIVE",

    "requiresAttributes": [

        {

            "name": "com.amazonaws.ecs.capability.ecr-auth"

        },

        {

            "name": "ecs.capability.execution-role-ecr-pull"

        },

        {

            "name": "com.amazonaws.ecs.capability.docker-remote-api.1.18"

        },

        {

            "name": "ecs.capability.task-eni"

        }

    ],

    "placementConstraints": [],

    "compatibilities": [

        "EC2",

        "FARGATE"

    ],

    "requiresCompatibilities": [

        "FARGATE"

    ],

    "cpu": "256",

    "memory": "512",

    "runtimePlatform": {

        "cpuArchitecture": "ARM64",

        "operatingSystemFamily": "LINUX"

    },

    "registeredAt": "2024-08-08T02:03:40.669Z",

    "registeredBy": "<생성 유저 ARN>",

    "tags": []

}

 

테스크 정의는 JSON으로도 작성될 수 있으며 콘솔 UI에서 설정할 수 없는 세부적인 설정이 가능하므로 문서를 참고해서 작성하실 수 있습니다.

https://docs.aws.amazon.com/ko_kr/AmazonECS/latest/developerguide/task_definitions.html

전체댓글0

검색결과는 총 26건 입니다.    글쓰기
1 2