Amazon MWAA에서 Airflow DAG를 사용하여 교차 계정 리소스에 액세스하고 관련 문제를 해결하려면 어떻게 해야 합니까?
Amazon Managed Workflows for Apache Airflow(Amazon MWAA)에서 Airflow DAG를 사용하여 교차 계정 리소스에 액세스하고 관련 문제를 해결하고 싶습니다.
해결 방법
apache-airflow providers-amazon 라이브러리는 Amazon MWAA에 사전 설치되어 있습니다. 이 라이브러리는 다양한 AWS 운영자를 제공하며 AWS 서비스 전반의 작업을 관리하는 데 도움이 됩니다. 다음 단계에서는 Amazon MWAA와의 교차 계정 액세스를 위해 AWS Identity and Access Management(IAM)와 Airflow 연결을 사용하는 AWS 운영자를 사용합니다. 자세한 내용은 Apache Airflow 웹사이트의 Amazon 웹 서비스 연결을 참조하십시오.
Apache Airflow를 사용하여 Amazon MWAA에서 계정 간 리소스 액세스를 활성화하려면 다음 단계를 완료하십시오.
참고: 다음 단계는 교차 계정 AWS Glue 작업을 호출하며 두 개의 AWS 계정이 필요합니다. 계정 A는 소스 계정이며 설정된 Amazon MWAA 환경을 포함해야 합니다. 계정 B가 대상 계정입니다.
계정 B에 AWS Glue용 IAM 역할 생성
계정 B에서 다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- 역할을 선택하고 역할 생성을 선택합니다.
- 신뢰할 수 있는 엔터티 유형에서 사용자 지정 신뢰 정책을 선택합니다. 그런 다음 계정 A의 Amazon MWAA 런타임 역할이 계정 B 역할을 맡을 수 있도록 하는 신뢰 관계를 설정합니다.
신뢰 정책 예시:
참고: example-account-a-id를 계정 A ID로, example-mwaa-runtime-role을 Amazon MWAA 런타임 역할로 바꾸십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": "arn:aws:iam::example-account-a-id:role/example-mwaa-runtime-role" }, "Action": "sts:AssumeRole" } ] }
- ** 권한에서 ** StartJobRun이라는 glue:StartJobRun을 허용하십시오.
참고: AWS Glue에 전체 액세스하려면 AWSGlueConsoleFullAccess 관리형 정책을 연결하십시오.
새 GlueCrossAccount 역할에 대한 권한 정책의 예:
참고: example-region을 AWS 리전으로, example-account-a-id를 계정 A ID로, example-job을 작업 이름으로 바꾸십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "glue:StartJobRun", "glue:GetJob" ], "Resource": "arn:aws:glue:example-region:example-account-a-id:job/example-job" } ] }
계정 A에서 Amazon MWAA 런타임 역할 업데이트
계정 A에서 다음 단계를 완료하십시오.
- IAM 콘솔을 엽니다.
- Amazon MWAA 런타임 역할을 찾습니다. Amazon MWAA 환경과 관련된 역할은 환경 세부 정보 페이지 > 권한 > 실행 역할에서 찾을 수 있습니다.
- 정책 편집을 선택합니다. 그런 다음 계정 B의 역할에 sts:AssumeRole을 추가합니다.
정책 예시:
참고: example-account-b-id를 계정 B ID로, example-glue-role을 AWS Glue 역할 이름으로 바꾸십시오.{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": "sts:AssumeRole", "Resource": "arn:aws:iam::example-account-b-id:role/example-glue-role" } ] }
아마존 MWAA에서 Airflow 연결 생성
계정 A에서 다음 단계를 완료하십시오.
- 아마존 MWAA 환경의 Airflow UI에 액세스합니다.
- 관리자를 선택한 다음 연결을 선택합니다.
- 새 연결을 추가하려면 새 레코드 추가를 선택합니다. 그리고 다음 연결 세부 정보를 입력합니다.
연결 ID에 연결의 고유 식별자를 할당합니다.
연결 유형의 드롭다운 목록에서 Amazon 웹 서비스를 선택합니다.
AWS 액세스 키 ID 및 AWS 시크릿 액세스 키 필드는 비워 둡니다. 인증에 IAM 역할을 사용하게 됩니다.
추가에 역할 ARN 및 지역을 JSON 형식으로 입력합니다.
추가 필드 예시:
참고: example-account-b-id를 계정 B ID로, example-glue-role을 AWS Glue 역할 이름으로, example-region을 리전으로 바꾸십시오.{ "role_arn": "arn:aws:iam::example-account-b:role/example-glue-role", "region_name": "example-region" }
- 저장을 선택합니다. 연결하려는 각 AWS 계정에 대해 이전 1~4단계를 반복합니다.
Airflow DAG에서 GlueJobOperator를 구성합니다.
DAG에서 GlueJobOperator를 구성하려면 Airflow 연산자를 사용하고 AWS Glue 작업에 대한 AWS 연결 ID를 지정하십시오. 자세한 내용은 Apache Airflow 웹사이트의 airflow.providers.amazon.aws.operators.glue를 참조하십시오.
DAG 예시:
from airflow import DAG from airflow.providers.amazon.aws.operators.glue import GlueJobOperator from datetime import datetime, timedelta default_args = { 'owner': 'airflow', 'start_date': datetime(2023, 1, 1), 'retries': 1, 'retry_delay': timedelta(minutes=5), } dag = DAG( 'glue_cross_account', default_args=default_args, schedule_interval=None, catchup=False, ) run_glue_job = GlueJobOperator( task_id='run_glue_job', job_name='example-glue-job', aws_conn_id='example-aws-connection-id', dag=dag, )
참고: example-glue-job을 AWS Glue 작업 이름으로, example-connection-id를 Airflow 연결 ID로 바꾸십시오.
Airflow DAG의 GlueJobOperator가 실행되면 연결 설정에 지정된 역할을 맡게 됩니다. 이 역할에는 계정 B에서 AWS Glue 작업을 실행하는 데 필요한 권한이 있습니다. 또한 계정 A의 Airflow 작업은 계정 B의 AWS Glue 작업을 트리거하고 계정 B 내의 리소스와 데이터를 사용합니다.
자세한 내용은 Apache Airflow 웹사이트의 AWS Glue를 참조하십시오.
문제 해결
작업이 실패하거나 AWS Glue 작업을 트리거하지 않는 경우 다음 조치를 취하십시오.
- Apache Airflow 로그를 확인합니다. 이러한 로그는 작업 중에 발생한 문제에 대한 자세한 정보를 제공하고 IAM 권한 오류, 연결 문제 및 구성 문제와 같은 문제를 식별하는 데 도움이 됩니다.
- IAM 권한을 확인합니다. AWS Glue 교차 계정 IAM 역할에 AWS Glue 작업에 필요한 권한이 있는지 확인합니다. 또한 필요한 Amazon Simple Storage Service(Amazon S3) 리소스에 액세스할 수 있어야 합니다.
- Airflow 연결을 확인합니다. 지정된 IAM 역할을 맡을 수 있는 액세스 권한을 가진 AWS 연결 ID가 올바르게 구성되어 있는지 확인합니다.
- 스크립트 위치를 확인하세요. AWS Glue 스크립트의 Amazon S3 경로에 액세스할 수 있고 스크립트 형식이 올바른지 확인합니다.
- 인터넷에 액세스할 수 없는 프라이빗 Amazon Virtual Private Cloud(Amazon VPC) 환경의 경우 네트워킹 구성을 확인합니다. 전송 게이트웨이 및 Amazon VPC 피어링 연결과 같은 네트워크 구성이 AWS 서비스와의 통신을 허용하는지 확인합니다.
- 교차 계정 액세스를 허용하도록 리소스에 연결된 리소스 기반 정책이 있는지 확인합니다.
참고: Airflow 2.5.1 Amazon 공급자 패키지(버전 7.1.0)의 알려진 문제로 인해 사용자는 GlueJobOperator 작업에서 IAM 역할 또는 ARN을 지정해야 합니다. 이 문제를 해결하려면 Amazon 공급자 패키지 버전 8.2.0 이상(Amazon MWAA 2.6.3의 기본 버전)으로 업그레이드하십시오. 자세한 내용은 GitHub 웹사이트의 공급자 버전을 업데이트한 후 파라미터 RoleName의 잘못된 유형으로 인해 GlueJobOperator 실패를 참조하십시오.
관련 정보
관련 콘텐츠
- 질문됨 일 년 전lg...
- 질문됨 2년 전lg...
- 질문됨 일 년 전lg...
- 질문됨 2달 전lg...
- 질문됨 2년 전lg...
- AWS 공식업데이트됨 9달 전
- AWS 공식업데이트됨 2달 전
- AWS 공식업데이트됨 7달 전
- AWS 공식업데이트됨 7달 전