비밀번호

커뮤니티2

  • 맑음속초13.6맑음북춘천1.6맑음철원1.1맑음동두천3.4맑음파주2.4맑음대관령4.0맑음춘천1.9황사백령도10.9황사북강릉14.0맑음강릉11.5맑음동해13.3황사서울7.2황사인천7.9맑음원주3.9황사울릉도11.0맑음수원4.9맑음영월1.4맑음충주2.2맑음서산1.1맑음울진9.9황사청주5.1황사대전3.9맑음추풍령1.7황사안동4.7맑음상주5.0황사포항8.7맑음군산3.2황사대구8.1황사전주3.0황사울산8.3맑음창원11.4황사광주5.8맑음부산11.1맑음통영9.0황사목포7.1황사여수8.4황사흑산도6.7구름많음완도6.6구름많음고창1.8구름많음순천6.0황사홍성3.4맑음서청주1.8황사제주9.0구름많음고산9.8구름많음성산9.1흐림서귀포13.4구름많음진주7.8맑음강화6.4맑음양평3.6맑음이천3.6구름많음인제2.7맑음홍천2.9맑음태백4.7맑음정선군1.6맑음제천0.2맑음보은0.8맑음천안1.0맑음보령1.9맑음부여1.2맑음금산1.0맑음세종1.9구름많음부안3.0구름많음임실0.2구름많음정읍2.3구름많음남원1.5구름많음장수-0.6구름많음고창군2.5구름많음영광군3.5맑음김해시10.3구름많음순창군1.9구름많음북창원11.2구름많음양산시12.0맑음보성군6.2구름많음강진군6.0구름많음장흥4.3구름많음해남5.8맑음고흥3.1구름많음의령군3.4구름많음함양군1.0맑음광양시5.6구름많음진도군7.9맑음봉화2.2맑음영주4.0맑음문경3.3맑음청송군2.2맑음영덕7.7맑음의성2.3맑음구미5.0맑음영천6.6구름많음경주시8.5구름많음거창1.7구름많음합천4.1구름많음밀양10.5구름많음산청3.2맑음거제10.9맑음남해8.1구름많음북부산12.2
  • 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