Amazon MWAA 환경에 라이브러리를 설치하려면 어떻게 해야 합니까?

5분 분량
0

Amazon Managed Workflows for an Apache Airflow(Amazon MWAA) 환경에 라이브러리를 설치하려고 합니다.

간략한 설명

requirements.txt 및 plugins.zip 파일을 사용하여 Amazon MWAA에 Python 라이브러리를 설치합니다. requirements.txt 파일을 사용하여 패키지를 설치하는 경우 패키지는 기본적으로 Python 패키지 인덱스(PyPI 웹 사이트)에서 설치됩니다. 컴파일된 아티팩트와 함께 라이브러리(.whl 파일)를 제공하는 경우 plugins.zip 파일을 사용하여 이러한 Python 휠을 설치하십시오.

Amazon MWAA 버전 2.2.2 및 2.4.3의 경우 프라이빗 웹 서버 옵션에서 아웃바운드 인터넷 액세스를 사용할 수 없습니다. Amazon MWAA는 Amazon MWAA 서비스 Virtual Private Cloud(VPC)의 웹 서버에 요구 사항과 플러그인을 설치합니다. 이러한 요구 사항에는 아웃바운드 인터넷 액세스가 가능한 NAT Gateway가 포함됩니다. 그러나 이전 Amazon MWAA 버전(2.0.2 및 1.10.12)의 경우 요구 사항 및 플러그인이 기본적으로 웹 서버에 설치되지 않습니다.

Amazon MWAA 버전 2.2.2 및 2.4.3의 경우, Amazon MWAA 로컬 실행기는 plugins.zip 파일에 Python 종속성(.whl) 및 요구 사항을 다운로드하고 패키징할 수 있는 명령줄 유틸리티를 제공합니다.

Amazon MWAA의 모든 버전에 대해 plugins.zip 파일을 사용하여 사용자 지정 Apache Airflow 작업, 후크, 센서 또는 인터페이스를 설치할 수 있습니다. 플러그인은 환경 변수, 인증 및 구성 파일(예: .crt, .yaml)을 내보냅니다.

해결 방법

프라이빗 웹 서버가 있는 환경(Amazon MWAA 버전 2.2.2 및 2.4.3)에 .whl을 사용하여 라이브러리를 설치합니다.

Amazon MWAA 로컬 환경 설정

1.    Docker 이미지를 빌드하고 Amazon MWAA 로컬 환경을 설정합니다(GitHub 웹 사이트). MWAA 리포지토리는 Amazon MWAA 환경을 로컬로 복제하는 명령줄 인터페이스(CLI) 유틸리티를 제공합니다.

2.    Python 라이브러리와 종속성을 requirements.txt 파일에 추가합니다.

3.    다음 스크립트를 사용하여 requirements.txt 파일을 테스트합니다.

#aws-mwaa-local-runner % ./mwaa-local-env test-requirements

출력은 다음과 비슷합니다.

 Installing requirements.txt
Collecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz
Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))
  Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)
    100% |████████████████████████████████| 3.6MB 365kB/s
...
...
...
Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch
  Running setup.py install for aws-batch ... done
Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

requirements.txt 파일에서 .whl 파일 빌드

다음 package-requirements local-runner 명령을 실행하여 requirements.txt 파일에서 .whl 파일을 빌드합니다.

#aws-mwaa-local-runner % ./mwaa-local-env package-requirements

이 명령은 모든 .whl 파일을 aws-mwaa-local-runner/plugin폴더에 다운로드합니다.

.whl 파일과 Amazon MWAA 제약 조건을 포함하는 plugins.zip 파일 생성

constraints.txt를 다운로드하여 플러그인 디렉터리에 복사합니다. 그런 후 다음 명령을 실행하여 plugins.zip 파일을 생성합니다.

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

plugins.zip 파일에 패키지된 .whl 파일을 가리키는 새 requirements.txt 파일 생성

1. 새 requirements.txt 파일을 생성합니다. 선택한 텍스트 도구에서 다음과 비슷한 형식을 사용하십시오.

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2. plugins.zip 파일과 requirements.txt 파일을 MWAA 클러스터의 Amazon Simple Storage Service(Amazon S3) 버킷에 업로드합니다. 그런 다음, 환경을 업데이트합니다.

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

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

Python 휠 설치

1.    plugins.zip 파일을 생성합니다. 다음 명령을 실행하여 시스템에 로컬 Amazon MWAA 플러그인 디렉터리를 생성합니다.

$ mkdir plugins

2.    .whl 파일을 생성한 플러그인 디렉터리에 복사합니다. 다음 명령을 실행하여 로컬 Airflow 플러그인 디렉터리를 가리키도록 디렉터리를 변경합니다.

$ cd plugins

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

plugins$ chmod -R 755

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

plugins$ zip -r plugins.zip .

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

참고: Amazon S3 버킷의 버전 관리를 켜야 합니다.

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

5.    Amazon MWAA 콘솔에서 plugins.zip 버전을 지정합니다.

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

Amazon MWAA는 Apache Airflow의 내장 플러그인 관리자를 지원합니다. 플러그인 관리자를 사용하면 사용자 지정 Apache Airflow 연산자, 후크 센서 또는 인터페이스를 사용할 수 있습니다. 이러한 사용자 정의 플러그인은 플랫 및 중첩된 디렉토리 구조로 plugins.zip 파일에 배치됩니다. plugins.zip 파일의 내용은 **/usr/local/airflow/plugins/**에 있는 백엔드 Amazon ECS Fargate 컨테이너에 기록됩니다. 자세한 내용은 사용자 지정 플러그인 예제를 참조하십시오.

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

Amazon MWAA 환경에서 런타임 환경 변수를 생성하는 사용자 지정 플러그인을 생성합니다. 그런 다음, Directed Acyclic Graph(DAG) 코드에서 이러한 환경 변수를 사용하십시오. 자세한 내용은 런타임 환경 변수를 생성하는 사용자 지정 플러그인 생성을 참조하십시오.

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

환경이 실행 중일 때 특정 파일을 계속 업데이트할 필요가 없는 경우에는 plugins.zip 파일을 사용하여 파일을 배포하십시오. 또한 DAG를 생성하고 사용자 액세스가 필요하지 않은 파일(예: 인증서, PEM 및 구성 YAML 파일)에 plugins.zip을 사용할 수 있습니다.

다음 예제 명령은 ca-certificates.crt 파일을 plugins.zip 파일에 번들로 묶습니다.

$ zip plugins.zip ca-certificates.crt

이 plugins.zip 파일로 환경을 업데이트하면 각 작업자 컨테이너의 /usr/local/airflow/plugins/ca-certificates.crt 경로에서 .crt 파일이 동기화됩니다. 그러면 DAG가 이 파일에 액세스합니다. 다른 파일 형식에 대해서도 동일한 프로세스를 따르십시오.

사용자 지정 플러그인 및 바이너리 설치

Oracle for Amazon MWAA를 사용하여 사용자 지정 플러그인을 생성하고 이를 plugins.zip 파일의 다른 사용자 지정 플러그인 및 바이너리와 결합할 수 있습니다. 여기에는 Python이 아닌 패키지도 포함됩니다. 자세한 내용은 Oracle을 사용하여 사용자 지정 플러그인 생성을 참조하십시오.

컨테이너에 바이너리를 추가하거나 환경 변수를 설정 및 수정하려면 Apache Hive 및 Hadoop으로 사용자 지정 플러그인 생성을 참조하십시오.

패키지 설치 문제 해결

aws-mwaa-local-runner(GitHub 웹 사이트)를 사용하여 DAG, 사용자 지정 플러그인 및 Python 종속성을 테스트할 수 있습니다.

로그 파일을 봅니다. Apache Airflow Worker 또는 Scheduler 로그 그룹에서 파일을 볼 수 있습니다.

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

관련 정보

플러그인

AWS 공식
AWS 공식업데이트됨 일 년 전