자습서: Amazon MWAA에서 자체 환경 엔드포인트 관리 자동화 - Amazon Managed Workflows for Apache Airflow

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

자습서: Amazon MWAA에서 자체 환경 엔드포인트 관리 자동화

AWS Organizations를 사용하여 리소스를 공유하는 여러 AWS 계정을 관리하는 경우 Amazon MWAA를 사용하면 자체 Amazon VPC 엔드포인트를 생성하고 관리할 수 있습니다. 즉, 환경에 필요한 리소스에만 액세스할 수 있도록 허용하는 더 엄격한 보안 정책을 사용할 수 있습니다.

공유 Amazon VPC에서 환경을 생성하면 주 Amazon VPC를 소유한 계정(o소유자)이 Amazon MWAA에 필요한 두 개의 개인 서브넷을 동일한 조직에 속한 다른 계정(참가자)과 공유합니다. 해당 서브넷을 공유하는 참여자 계정은 공유된 VPC의 환경을 보고, 생성하고, 수정하며, 삭제할 수 있습니다.

공유 또는 정책으로 제한된 Amazon VPC에 환경을 생성하면 Amazon MWAA는 먼저 서비스 VPC 리소스를 생성한 다음, 최대 72시간 동안 PENDING 상태를 입력합니다.

환경 상태가 CREATING에서 PENDING으로 변경되면 Amazon MWAA는 상태 변경에 대한 Amazon EventBridge 알림을 보냅니다. 이를 통해 소유자 계정은 Amazon MWAA 콘솔이나 API의 엔드포인트 서비스 정보를 기반으로 또는 프로그래밍 방식으로 참가자를 대신하여 필요한 엔드포인트를 생성할 수 있습니다. 다음에서 Lambda 함수와 Amazon MWAA 상태 변경 알림을 수신 대기하는 EventBridge 규칙을 사용하여 새로운 Amazon VPC 엔드포인트를 생성합니다.

여기서는 환경과 동일한 Amazon VPC에 새 엔드포인트를 생성합니다. 공유 Amazon VPC를 설정하려면 소유자 계정에서 EventBridge 규칙 및 Lambda 함수를 생성하고 참가자 계정에서 Amazon MWAA 환경을 생성합니다.

사전 조건

이 자습서를 완료하려면 다음이 필요합니다.

  • ...

Amazon VPC 생성

다음 AWS CloudFormation 템플릿과 AWS CLI 명령을 사용하여 새 Amazon VPC를 생성합니다. 템플릿은 Amazon VPC 리소스를 설정하고 엔드포인트 정책을 수정하여 특정 대기열에 대한 액세스를 제한합니다.

  1. AWS CloudFormation 템플릿을 다운로드한 다음, .yml 파일의 압축을 풉니다.

  2. 새 명령 프롬프트 창에서 템플릿을 저장한 폴더로 이동한 다음, create-stack을 사용하여 스택을 생성합니다. --template-body 플래그는 템플릿의 경로를 지정합니다.

    $ aws cloudformation create-stack --stack-name stack-name --template-body file://cfn-vpc-private-network.yml

다음 섹션에서 Lambda 함수를 생성합니다.

Lambda 함수 생성

다음 Python 코드 및 IAM JSON 정책을 사용하여 새 Lambda 함수 및 실행 역할을 생성합니다. 이 함수는 프라이빗 Apache Airflow 웹 서버 및 Amazon SQS 대기열에 대한 Amazon VPC 엔드포인트를 생성합니다. Amazon MWAA는 Amazon SQS를 사용하여 환경 규모를 조정할 때 여러 작업자 간에 Celery를 사용하여 작업을 대기열에 넣습니다.

  1. Python 함수 코드를 다운로드합니다.

  2. IAM 권한 정책을 다운로드한 다음, 파일의 압축을 풉니다.

  3. 명령 프롬프트를 연 다음, JSON 권한 정책을 저장한 폴더로 이동합니다. IAM create-role 명령을 사용하여 새 역할을 생성합니다.

    $ aws iam create-role --role-name function-role \ --assume-role-policy-document file://lambda-mwaa-vpce-policy.json

    AWS CLI 응답의 역할 ARN을 기록합니다. 다음 단계에서는 ARN을 사용하여 이 새로운 역할을 함수의 실행 역할로 지정합니다.

  4. 함수 코드를 저장한 폴더로 이동한 다음, create-function 명령을 사용하여 새 함수를 생성합니다.

    $ aws lambda create-function --function-name mwaa-vpce-lambda \ --zip-file file://mwaa-lambda-shared-vpc.zip --runtime python3.8 --role arn:aws:iam::123456789012:role/function-role --handler lambda_handler

    AWS CLI 응답의 함수 ARN을 기록합니다. 다음 단계에서는 함수를 새로운 EventBridge 규칙의 대상으로 구성하도록 ARN을 지정합니다.

다음 섹션에서는 환경이 PENDING 상태가 될 때 이 함수를 간접적으로 호출하는 EventBridge 규칙을 생성합니다.

EventBridge 규칙 생성

다음을 수행하여 Amazon MWAA 알림을 수신 대기하고 새로운 Lambda 함수를 대상으로 하는 새 규칙을 생성합니다.

  1. EventBridge put-rule 명령을 사용하여 새로운 EventBridge 이벤트 규칙을 생성합니다.

    $ aws events put-rule --name "mwaa-lambda-rule" \ --event-pattern "{\"source\":[\"aws.airflow\"],\"detail-type\":[\"MWAA Environment Status Change\"]}"

    이벤트 패턴은 환경 상태가 변경될 때마다 Amazon MWAA가 보내는 알림을 수신 대기합니다.

    { "source": ["aws.airflow"], "detail-type": ["MWAA Environment Status Change"] }
  2. put-targets 명령을 사용하여 Lambda 함수를 새로운 규칙의 대상으로 추가합니다.

    $ aws events put-targets --rule "mwaa-lambda-rule" \ --targets "Id"="1","Arn"="arn:aws::lambda:region:123456789012:function:mwaa-vpce-lambda"

이제 고객 관리형 Amazon VPC 엔드포인트를 사용하여 새로운 Amazon MWAA 환경을 생성할 수 있습니다.

Amazon MWAA 환경 생성

Amazon MWAA 콘솔을 사용하여 고객 관리형 Amazon VPC 엔드포인트로 새로운 환경을 생성합니다.

  1. Amazon MWAA 콘솔을 열고 환경 생성을 선택합니다.

  2. 이름에 고유한 이름을 입력합니다.

  3. Airflow 버전에서 최신 버전을 선택합니다.

  4. Amazon S3 버킷 및 환경에서 사용할 dags/와 같은 DAG 폴더를 선택한 후 다음을 선택합니다.

  5. 고급 설정 구성 페이지에서 다음을 수행합니다.

    1. Virtual Private Cloud의 경우, 이전 단계에서 생성한 Amazon VPC를 선택합니다.

    2. 웹 서버 액세스의 경우 퍼블릭 네트워크(인터넷 액세스 가능)를 선택합니다.

    3. 보안 그룹의 경우 AWS CloudFormation으로 생성한 보안 그룹을 선택합니다. 이전 단계의 AWS PrivateLink 엔드포인트에 대한 보안 그룹은 자체 참조이므로 환경에 대해 동일한 보안 그룹을 선택해야 합니다.

    4. 엔드포인트 관리에서 고객 관리형 엔드포인트를 선택합니다.

  6. 나머지 기본 설정을 유지하고 다음을 선택합니다.

  7. 선택 사항을 검토한 다음, 환경 생성을 선택합니다.

작은 정보

새로운 환경 설정에 대한 자세한 내용은 Amazon MWAA 시작하기를 참조하세요.

환경이 PENDING이면 Amazon MWAA에서 사용자가 규칙에 대해 설정한 이벤트 패턴과 일치하는 알림을 보냅니다. 이 규칙은 Lambda 함수를 간접적으로 호출합니다. 함수는 알림 이벤트를 구문 분석하고 웹 서버 및 Amazon SQS 대기열에 필요한 엔드포인트 정보를 가져옵니다. 그런 다음 Amazon VPC에 엔드포인트를 생성합니다.

엔드포인트를 사용할 수 있게 되면 Amazon MWAA에서 환경 생성을 재개합니다. 준비가 되면 환경 상태가 AVAILABLE로 변경되고 Amazon MWAA 콘솔을 사용하여 Apache Airflow 웹 서버에 액세스할 수 있습니다.