Amazon MWAA 환경에 사용자 지정 패키지를 설치하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2022년 3월 3일

Amazon Managed Workflows for Apache Airflow(Amazon MWAA) 환경에서 plugins.zip을 사용하여 사용자 지정 패키지를 설치하고 싶습니다.

간략한 설명

requirements.txtplugins.zip 파일을 사용하여 Amazon MWAA에 Python 라이브러리를 설치할 수 있습니다. requirements.txt 파일을 사용하여 패키지를 설치할 때 패키지는 기본적으로 Pypi.org에서 설치됩니다. 그러나 컴파일된 아티팩트와 함께 라이브러리 (.whl 파일) 를 제공해야 하는 경우 plugins.zip 파일을 사용하여 이러한 Python 휠을 설치할 수 있습니다.

plugins.zip 파일을 사용하여 plugins.zip 파일 안에 파일을 놓기만 하면 사용자 지정 Apache Airflow 연산자, 후크, 센서 또는 인터페이스를 설치할 수 있습니다. 이 파일은 /usr/local/airflow/plugins/ 위치에 있는 백엔드 Amazon ECS Fargate 컨테이너에 기록됩니다. 플러그인을 사용하여 환경 변수와 인증 및 구성 파일(예: .crt.yaml)을 내보낼 수도 있습니다.

해결 방법

Python 휠을 사용하여 라이브러리 설치

Python 휠은 컴파일된 아티팩트가 있는 패키지 파일입니다. plugins.zip에 (.whl) 파일을 배치하여 이 패키지를 설치한 다음 requirements.txt 에서 이 파일을 참조할 수 있습니다. .whl 파일을 plugins.zip 에 추가한 후 환경을 업데이트하면 기본 Amazon Elastic Container Service (Amazon ECS) Fargate 컨테이너의 /usr/local/airflow/plugins/ 위치로 .whl 파일이 배송됩니다. Python 휠을 설치하려면 다음을 수행합니다.

1.    plugins.zip 파일을 생성합니다.

다음 명령을 실행하여 시스템에 로컬 Airflow 플러그인 디렉터리를 생성합니다.

$ mkdir plugins

.whl 파일을 생성한 플러그인 디렉터리에 복사합니다.

다음 명령을 실행하여 로컬 Airflow 플러그인 디렉터리를 가리키도록 디렉터리를 변경합니다.

$ cd plugins
다음 명령을 실행하여 콘텐츠에 실행 권한이 있는지 확인합니다.

plugins$ chmod -R 755

다음 명령을 실행하여 플러그인 폴더 내의 콘텐츠를 압축합니다.

plugins$ zip -r plugins.zip

2.    requirements.txt 파일에.whl 파일의 경로를 포함합니다(예: /usr/local/airflow/plugins/example_wheel.whl).

참고: Amazon Simple Storage Service(Amazon S3) 버킷의 버전 관리를 활성화해야 합니다.

3.    plugins.zip 및 requirements.txt 파일을 S3 버킷에 업로드합니다(예: s3://example-bucket/plugins.zip).

4.    환경을 편집하려면 Amazon MWAA 콘솔에서 환경 페이지를 엽니다.

5.    목록에서 환경을 선택한 다음 편집을 선택합니다.

6.    세부 정보 지정 페이지의 Amazon S3 섹션 내 DAG 코드에서 사용 사례에 따라 다음 중 하나를 수행합니다.

참고: plugins.zip 또는 requirements.txt 파일을 환경에 처음 업로드하는 경우 파일을 선택한 다음 버전을 선택합니다. 이미 파일을 업로드하고 최근에 업데이트한 경우 파일 선택을 건너뛰고 버전만 선택할 수 있습니다.

플러그인 파일 - 선택 사항 필드에서 S3 탐색을 선택합니다.

Amazon S3 버킷에서 plugins.zip 파일을 선택한 다음 선택을 선택합니다.

플러그인 파일 - 선택 사항에서 버전 선택에서 업로드한 파일의 최신 버전을 선택합니다.

--또는--

요구 사항 파일 - 선택 사항에서 S3 탐색을 선택합니다.

Amazon S3 버킷에서 requirements.txt 파일을 선택한 다음 선택을 선택합니다.

요구 사항 파일 - 선택 사항에서 버전 선택에서 업로드한 파일의 최신 버전을 선택합니다.

7.    다음(Next)을 선택하고 저장(Save)을 선택합니다.

사용자 지정 연산자, 후크, 센서 또는 인터페이스 설치

Amazon MWAA는 사용자 지정 Apache Airflow 연산자, 후크 센서 또는 인터페이스를 사용할 수 있는 Apache Airflow의 내장 플러그인 관리자를 지원합니다. 이러한 사용자 정의 플러그인은 플랫 및 중첩 디렉터리 구조를 모두 사용하여 plugins.zip 파일에 배치할 수 있습니다. 사용자 지정 플러그인의 몇 가지 예는 사용자 지정 플러그인의 예를 참조하세요.

사용자 지정 플러그인을 생성하여 런타임 환경 변수 생성

Amazon MWAA 환경에서 런타임 시 환경 변수를 생성하는 사용자 지정 플러그인을 생성할 수도 있습니다. 그런 다음 DAG 코드에서 이러한 환경 변수를 사용할 수 있습니다. 자세한 내용은 런타임 환경 변수를 생성하는 사용자 지정 플러그인 생성을 참조하세요.

PEM, .crt 및 구성 파일 내보내기

환경 실행 중에 특정 파일을 지속적으로 업데이트할 필요가 없는 경우 plugins.zip을 사용하여 이러한 파일을 전송할 수 있습니다. 또한 DAG를 작성하는 사용자에게 액세스 권한을 부여할 필요가 없는 파일(예: 인증서(.crt), PEM 및 구성 YAML 파일)을 배치할 수 있습니다. 이러한 파일을 plugins.zip에 압축한 후 plugins.zip를 S3에 업로드한 다음 환경을 업데이트합니다. 파일은 /usr/local/airflow/plugins에 액세스하는 데 필요한 권한으로 복제됩니다.

다음 명령을 실행하여 사용자 지정 CA 인증서를 plugins.zip 파일로 압축할 수 있습니다.

$ zip plugins.zip ca-certificates.crt
이 파일은 이제 /usr/local/airflow/plugins/ca-certificates.crt에 있습니다.

kube_config.yaml을 plugins.zip 파일에 압축하려면 다음 명령을 실행합니다.

$ zip plugins.zip kube_config.yaml
이 파일은 이제 /usr/local/airflow/plugins/kube_config.yaml에 있습니다.

설치 프로세스 문제 해결

이러한 패키지를 설치하는 동안 문제가 발생하면 aws-mwaa-local-runner를 사용하여 로컬에서 DAG, 사용자 지정 플러그인 및 Python 종속성을 테스트할 수 있습니다.

plugins.zip 파일을 사용하여 Python 패키지를 설치할 때 발생하는 문제를 해결하도록 Apache Airflow 작업자 또는 스케줄러 로그 그룹에서 로그 파일(requirements_install_ip)을 볼 수 있습니다.

중요: Amazon MWAA 환경에 패키지 또는 plugins.zip 파일을 설치하기 전에 Amazon MWAA CLI 유틸리티(aws-mwaa-local-runner)를 사용하여 Python 종속성 및 plugins.zip 파일을 테스트하는 것이 좋습니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요하세요?