Amazon MWAA와 Secrets Manager의 통합 문제를 해결하려면 어떻게 해야 합니까?
Amazon Managed Workflows for Apache Airflow(Amazon MWAA)와 AWS Secrets Manager의 통합 문제를 해결하고 싶습니다.
간략한 설명
Airflow 연결과 변수를 저장하기 위해 Secrets Manager 암호를 Amazon MWA용 암호 백엔드로 구성할 수 있습니다. Airflow 구성이 잘못되어 있으면 Amazon MWAA 환경을 생성하거나 업데이트할 때 문제가 발생할 수 있습니다.
Amazon MWAA와 Secrets Manager의 통합 문제가 발생하는 일반적인 원인은 다음과 같습니다.
- Amazon MWAA 역할에 Secrets Manager에 필요한 권한이 없습니다.
- Amazon MWAA 프라이빗 서브넷에 Secrets Manager에 대한 올바른 경로가 없습니다.
- Secrets Manager의 Airflow 구성 옵션이 잘못되었습니다. 예를 들어, 클래스 이름이 잘못되었습니다. Class name(클래스 이름) 키는 secrets.backend여야 하며, 값은 airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend여야 합니다.
- Amazon MWAA 역할에는 Secrets Manager 암호화에 사용되는 AWS Key Management Service(AWS KMS) 키에 대한 권한이 없습니다.
해결 방법
다음 시나리오에 따라 Amazon MWAA와 Secrets Manager의 통합 문제를 해결하십시오.
Amazon MWAA가 Available(사용 가능) 상태가 아님
Amazon MWAA 환경이 Available(사용 가능) 상태가 아닌 일반적인 이유는 다음과 같습니다.
- Amazon MWAA의 암호 백엔드 클래스에 잘못된 Airflow 구성 옵션이 있습니다.
- Secrets Manegers에 대한 네트워크가 없습니다.
- Secrets Manager에 대한 권한이 없습니다.
- Airflow 연결 aws_default가 수정되었습니다.
이러한 문제를 해결하려면 다음 단계를 완료하십시오.
- Amazon 제공업체 패키지가 설치되어 있는지 확인하려면 다음을 완료하십시오.
Airflow UI를 엽니다.
Admin 탭에서 Provider를 선택합니다.
apache-airflow-providers-amazon 제공업체 패키지를 확인합니다. - secrets.backend에 올바른 Airflow 구성 클래스가 지정되었는지 확인합니다.
키: secrets.backend
값: airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend - Amazon MWAA 프라이빗 서브넷에서 Secrets Manager 연결을 확인합니다. 연결은 NAT 게이트웨이 또는 Secrets Manager Amazon VPC(Amazon VPC) 엔드포인트 중 하나에서 수립할 수 있습니다.
- Amazon MWAA 역할에 Secrets Manager 및 함께 사용되는 AWS KMS 키에 대한 올바른 권한이 있는지 확인합니다.
- Airflow 연결 aws_default가 수정되지 않았는지 확인합니다. 또한 aws_default 이름으로 Secrets Manager를 생성하지 않습니다.
AWS CloudTrail에 Amazon MWAA에서 수행한 GetSecretValue API 호출에 대한 오류가 표시됨
Amazon MWAA에서 GetSecretValue API를 실행할 때 다음과 같은 오류가 나타날 수 있습니다.
“errorCode”: "ResourceNotFoundException",
"errorMessage": "Secrets Manager can't find the specified secret."
이 오류를 해결하려면 다음 단계를 완료하십시오.
- GetSecretValue API의 세부 정보를 검색하려면 AmazonMWAA-airflow 사용자가 호출한 CloudTrail API를 사용합니다.
- Amazon MWAA Airflow 연결이나 변수에 구성된 Secrets Manager를 확인합니다. connections_prefix:airflow/connections 접두사와 이름이 암호 이름과 일치해야 합니다.
- Secrets Manager에 Airflow 연결 또는 변수가 존재하는지 확인합니다.
Secrets Manager에 필요한 권한이 Amazon MWAA 역할에 없음
Amazon MWAA 역할에 Secrets Manager에 필요한 권한이 없는 경우 다음 오류가 나타납니다.
"botocore.exceptions.ClientError: An error occurred (AccessDeniedException) when calling the GetSecretValue operation: User: arn:aws:sts::123456789:assumed-role/rjf-use2-dev-demo-mwaa-env-mwaa-execution-role/AmazonMWAA-airflow is not authorized to perform: secretsmanager:GetSecretValue on resource: <connection_prefix>/secret_name because no identity-based policy allows the secretsmanager:GetSecretValue action"
이 오류를 해결하려면 1단계: Amazon MWAA에 Secrets Manager 암호 키에 액세스할 수 있는 권한을 제공을 참조하십시오.
Amazon MWA에서 aws_default에 대한 다수의 Secrets Manager API 호출
Amazon MWAA가 Secrets Manager에 호출하는 API 수를 줄이려면 lookup(조회) 패턴을 사용합니다. 자세한 내용은 Apache Airflow 웹사이트의 Optional lookup(선택적 조회)을 참조하십시오. 조회 패턴을 지정하면 Apache Airflow에서 검색하는 경로의 수를 줄일 수 있습니다. 결과적으로 Amazon MWAA와 함께 Secrets Manager를 사용하면 비용을 절감할 수 있습니다.
조회 패턴을 지정하려면 connections_lookup_pattern 및 variables_lookup_pattern 파라미터를 지정합니다. 이 파라미터는 RegEx 문자열을 입력으로 받습니다. 예를 들어 aws_defaul 조회를 지정하려면 secrets.backend_kwargs에 다음을 입력합니다.
"connections_lookup_pattern" : "^(?!aws-default).*"
**참고:**connections_lookup_pattern 및 variables_lookup_pattern 파라미터를 사용하려면 apache-airflow-providers-amazon 버전 7.3.0 이상이 설치되어 있어야 합니다. 자세한 내용은 새로운 제공업체 패키지 지정을 참조하십시오.
Secrets Manager 연결에 액세스할 수 없습니다.
Secrets Manager가 Amazon MWAA로 구성된 경우, 구성된 connections_prefix 경로에서 생성된 연결에 액세스할 수 있습니다. 연결에 액세스하려면 Airflow 연산자에 따라 Secrets(암호) 이름을 사용합니다.
예시:
참고:****example-mysql-task를 MySQL 작업으로 바꾸고 example-connection_prefix/mysql-connection은 연결 접두사 및 MySQL 연결 ID로 바꿉니다.
mysql_uri_operator = MySqlOperator( task_id='example-mysql-task', mysql_conn_id = '<example-connection_prefix>/example-mysql-connection sql=CREATE_SQL )
관련 정보
Secrets Manager 암호를 사용하여 Apache Airflow 연결 구성
Apache Airflow 연결 및 변수를 Secrets Manager로 이동
Apache Airflow 웹사이트의 airflow.providers.amazon.aws.secrets.secrets_manager 소스 코드
관련 콘텐츠
- 질문됨 2년 전lg...
- 질문됨 일 년 전lg...
- AWS 공식업데이트됨 3년 전
- AWS 공식업데이트됨 3달 전
- AWS 공식업데이트됨 일 년 전