

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

# Apache Airflow에 대한 연결 관리
<a name="manage-connections"></a>

이 장에서는 Amazon Managed Workflows for Apache Airflow 환경을 위해 Apache Airflow 연결을 구성하는 방법을 설명합니다.

**Topics**
+ [Apache Airflow 변수 및 연결 개요](#manage-connections-t-overview)
+ [Amazon MWAA 환경에 설치된 Apache Airflow 공급자 패키지](connections-packages.md)
+ [연결 유형 개요](manage-connection-types.md)
+ [AWS Secrets Manager 보안 암호를 사용하여 Apache Airflow 연결 구성](connections-secrets-manager.md)

## Apache Airflow 변수 및 연결 개요
<a name="manage-connections-t-overview"></a>

경우에 따라 AWS 프로필과 같은 환경에 대한 추가 연결 또는 변수를 지정하거나 Apache Airflow 메타스토어의 연결 객체에 실행 역할을 추가한 다음 DAG 내에서 연결을 참조할 수 있습니다.
+ **자체 관리형 Apache Airflow** 자체 관리형 Apache Airflow 설치에서는 [`airflow.cfg`에서 Apache Airflow 구성 옵션](https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html)을 설정합니다.

  ```
  [secrets]
  backend = airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend
  backend_kwargs = {"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}
  ```
+ **Amazon MWAA의 Apache Airflow**. Amazon MWAA에서는 이러한 구성 설정을 Amazon MWAA 콘솔에 [Apache Airflow 구성 옵션](configuring-env-variables.md)으로 추가해야 합니다. Apache Airflow 구성 옵션은 사용자 환경의 환경 변수로 작성되며 동일한 설정에 대한 다른 모든 기존 구성을 재정의합니다.

# Amazon MWAA 환경에 설치된 Apache Airflow 공급자 패키지
<a name="connections-packages"></a>

이 페이지에는 모든 지원되는 Apache Airflow 환경에 대해 Amazon MWAA에서 설치한 Apache Airflow 공급자 패키지가 나열되어 있습니다. 이러한 패키지에 대한 자세한 내용은 [패키지 추가 항목에 대한 Apache Airflow 참조](https://airflow.apache.org/docs/apache-airflow/stable/extra-packages-ref.html)를 참조하세요.

**참고**  
다른 Python 라이브러리 설치로 인해 CloudWatch 로깅과의 호환성이 재정의되지 않도록 하기 위해 Amazon MWAA는 `pip3 install -r requirements.txt` 실행 후 [Watchtower 버전 2.0.1](https://pypi.org/project/watchtower/2.0.1/)을 설치합니다.

**Topics**
+ [제약 조건 파일](#connections-packages-constraints)
+ [버전별 공급자 패키지](#connections-packages-table)

## 제약 조건 파일
<a name="connections-packages-constraints"></a>

Apache Airflow v2.7.2부터 요구 사항 파일에 `--constraint` 문이 포함되어야 합니다. 제약 조건을 제공하지 않으면 Amazon MWAA에서 요구 사항에 나열된 패키지가 사용 중인 Apache Airway 버전과 호환되도록 제약 조건을 지정합니다.

Apache Airflow 제약 조건 파일은 Apache Airflow 릴리스 당시 사용할 수 있는 공급자 버전을 지정합니다. 그러나 대부분의 경우 최신 공급자가 해당 버전의 Apache Airflow와 호환됩니다. 제약 조건을 사용해야 하므로 새 버전의 공급자 패키지를 지정하려면 특정 공급자 버전에 대한 제약 조건 파일을 수정할 수 있습니다.

1. GitHub에서 버전별 제약 조건 파일(예: [https://raw.githubusercontent.com/apache/airflow/constraints-2.7.2/constraints-3.11.txt](https://raw.githubusercontent.com/apache/airflow/constraints-2.7.2/constraints-3.11.txt))을 다운로드합니다('2.7.2'를 사용하려는 버전으로 대체).

1. 수정된 제약 조건 파일을 Amazon MWAA 환경의 Amazon S3 dags 폴더에 저장합니다(예: `constraints-3.11-updated.txt`).

1. 다음에 나열된 바와 같이 요구 사항을 지정하세요.

   ```
   --constraint "/usr/local/airflow/dags/constraints-3.11-updated.txt"
   apache-airflow-providers-amazon==version-number
   ```
**참고**  
프라이빗 웹 서버를 사용하는 경우 [aws-mwaa-docker-images](https://github.com/aws/amazon-mwaa-docker-images)를 사용하여 [필수 라이브러리를 WHL 파일로 패키징](best-practices-dependencies.md#best-practices-dependencies-python-wheels)하는 것이 좋습니다.

## 버전별 공급자 패키지
<a name="connections-packages-table"></a>

공급자 패키지를 설치하면 Apache Airflow UI에서 연결 유형에 액세스할 수 있습니다. 또한 `requirements.txt` 파일에서 이러한 패키지를 Python 종속성으로 지정할 필요가 없습니다. 이 페이지에는 모든 지원되는 Apache Airflow 환경에 대해 Amazon MWAA에서 설치한 Apache Airflow 공급자 패키지가 나열되어 있습니다.

**참고**  
Apache Airflow v2 이상의 경우, Amazon MWAA는 다른 Python 라이브러리 설치로 인해 CloudWatch 로깅과의 호환성이 무시되지 않도록 하기 위해 `pip3 install -r requirements.txt`을(를) 실행 후 [Watchtower 버전 2.0.1](https://pypi.org/project/watchtower/2.0.1/)을 설치합니다.

지원되는 최신 버전을 `apache-airflow-providers-amazon`을(를) 지정하여 이 공급자를 업그레이드할 수 있습니다.

**지원되는 Apache Airflow 버전:**

------
#### [ v3.0.6 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==9.9.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.9.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==6.2.1](https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.2.1/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.13.1](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.13.1/index.html)  | 
|  Fab 연결  |  [apache-airflow-providers-fab==2.3.0](https://airflow.apache.org/docs/apache-airflow-providers-fab/2.3.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.12.1](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.12.1/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==5.3.2](https://airflow.apache.org/docs/apache-airflow-providers-http/5.3.2/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.9.1](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.9.1/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.27.3](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.27.3/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==4.1.1](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/4.1.1/index.html)  | 

------
#### [ v2.11.0 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==9.8.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.8.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==6.2.0](https://airflow.apache.org/docs/apache-airflow-providers-postgres/6.2.0/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.13.0](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.13.0/index.html)  | 
|  Fab 연결  |  [apache-airflow-providers-fab==1.5.3](https://airflow.apache.org/docs/apache-airflow-providers-fab/1.5.3/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.11.0](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.11.0/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==5.3.0](https://airflow.apache.org/docs/apache-airflow-providers-http/5.3.0/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.9.0](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.9.0/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.27.1](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.27.1/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==4.1.0](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/4.1.0/index.html)  | 
|  SMTP 연결  |  [apache-airflow-providers-smtp==2.1.0](https://airflow.apache.org/docs/apache-airflow-providers-smtp/2.1.0/index.html)  | 

------
#### [ v2.10.3 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==9.0.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/9.0.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.13.1](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.13.1/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.11.1](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.11.1/index.html)  | 
|  Fab 연결  |  [apache-airflow-providers-fab==1.5.0](https://airflow.apache.org/docs/apache-airflow-providers-fab/1.5.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.8.3](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.8.3/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.13.2](https://airflow.apache.org/docs/apache-airflow-providers-http/4.13.2/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.7.0](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.7.0/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.19.0](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.19.0/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.9.0](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.9.0/index.html)  | 
|  SMTP 연결  |  [apache-airflow-providers-smtp==1.8.0](https://airflow.apache.org/docs/apache-airflow-providers-smtp/1.8.0/index.html)  | 

------
#### [ v2.10.1 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==8.28.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/2.28.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.12.0](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.12.0/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.11.0](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.11.0/index.html)  | 
|  Fab 연결  |  [apache-airflow-providers-fab==1.3.0](https://airflow.apache.org/docs/apache-airflow-providers-fab/1.3.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.8.1](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.8.1/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.13.0](https://airflow.apache.org/docs/apache-airflow-providers-http/4.13.0/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.7.0](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.7.0/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.16.0](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.16.0/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.9.0](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.9.0/index.html)  | 
|  SMTP 연결  |  [apache-airflow-providers-smtp==1.8.0](https://airflow.apache.org/docs/apache-airflow-providers-smtp/1.8.0/index.html)  | 

------
#### [ v2.9.2 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==8.24.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.24.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.11.1](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.11.1/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.9.1](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.9.1/index.html)  | 
|  Fab 연결  |  [apache-airflow-providers-fab==1.1.1](https://airflow.apache.org/docs/apache-airflow-providers-fab/1.1.1/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.7.2](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.7.2/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.11.1](https://airflow.apache.org/docs/apache-airflow-providers-http/4.11.1/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.6.1](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.6.1/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.14.0](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.14.0/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.8.1](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.8.1/index.html)  | 
|  SMTP 연결  |  [apache-airflow-providers-smtp==1.7.1](https://airflow.apache.org/docs/apache-airflow-providers-smtp/1.7.1/index.html)  | 

------
#### [ v2.8.1 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==8.16.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.16.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.10.0](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.10.0/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.7.0](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.7.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.5.1](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.5.1/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.8.0](https://airflow.apache.org/docs/apache-airflow-providers-http/4.8.0/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.5.0](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.5.0/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.10.0](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.10.0/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.7.0](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.7.0/index.html)  | 

------
#### [ v2.7.2 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==8.7.1](https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.7.1/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.6.1](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.6.1/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.5.2](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.5.2/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.3.4](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.3.4/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.5.2](https://airflow.apache.org/docs/apache-airflow-providers-http/4.5.2/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.3.2](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.3.2/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.7.2](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.7.2/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.4.3](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.4.3/index.html)  | 

------
#### [ v2.6.3 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon[aiobotocore]==8.2.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/8.2.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.5.1](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.5.1/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.4.2](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.4.2/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.2.1](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.2.1/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.4.2](https://airflow.apache.org/docs/apache-airflow-providers-http/4.4.2/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.2.2](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.2.2/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.5.2](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.5.2/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.4.2](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.4.2/index.html)  | 

------
#### [ v2.5.1 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon==7.1.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/7.1.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.4.0](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.4.0/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.3.0](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.3.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.1.0](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.1.0/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.1.1](https://airflow.apache.org/docs/apache-airflow-providers-http/4.4.1/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.1.1](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.1.1/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.3.3](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.3.3/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.3.1](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.3.1/index.html)  | 

------
#### [ v2.4.3 ]


| 연결 유형 | 패키지 | 
| --- | --- | 
|  AWS 연결  |  [apache-airflow-providers-amazon==6.0.0](https://airflow.apache.org/docs/apache-airflow-providers-amazon/6.0.0/index.html)  | 
|  Postgres 연결  |  [apache-airflow-providers-postgres==5.2.2](https://airflow.apache.org/docs/apache-airflow-providers-postgres/5.2.2/index.html)  | 
|  FTP 연결  |  [apache-airflow-providers-ftp==3.1.0](https://airflow.apache.org/docs/apache-airflow-providers-ftp/3.1.0/index.html)  | 
|  Celery 연결  |  [apache-airflow-providers-celery==3.0.0](https://airflow.apache.org/docs/apache-airflow-providers-celery/3.0.0/index.html)  | 
|  HTTP 연결  |  [apache-airflow-providers-http==4.0.0](https://airflow.apache.org/docs/apache-airflow-providers-http/4.0.0/index.html)  | 
|  IMAP 연결  |  [apache-airflow-providers-imap==3.0.0](https://airflow.apache.org/docs/apache-airflow-providers-imap/3.0.0/index.html)  | 
|  공통 SQL  |  [apache-airflow-providers-common-sql==1.2.0](https://airflow.apache.org/docs/apache-airflow-providers-common-sql/1.2.0/index.html)  | 
|  SQLite 연결  |  [apache-airflow-providers-sqlite==3.2.1](https://airflow.apache.org/docs/apache-airflow-providers-sqlite/3.2.1/index.html)  | 

------

# 연결 유형 개요
<a name="manage-connection-types"></a>

Apache Airflow는 연결을 연결 URI 문자열로 저장합니다. 연결 유형에 관계없이 연결 URI 문자열을 생성할 수 있는 연결 템플릿을 Apache Airflow UI에 제공합니다. Apache Airflow UI에서 연결 템플릿을 사용할 수 없는 경우 대체 연결 템플릿을 사용하여 이 연결 URI 문자열을 생성할 수 있습니다(예: HTTP 연결 템플릿 사용). 가장 큰 차이점은 URI 접두사(예: `my-conn-type://`)이며, Apache Airflow 제공자는 일반적으로 연결 시 무시합니다. 이 페이지에서는 여러 연결 유형에 대해 Apache Airflow UI의 연결 템플릿을 서로 바꿔서 사용하는 방법을 설명합니다.

**주의**  
Amazon MWAA에서 [https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/connections/aws.html](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/connections/aws.html) 연결을 덮어쓰지 마세요. Amazon MWAA는 이 연결을 사용하여 작업 로그 수집과 같은 다양한 중요 작업을 수행합니다. 이 연결을 덮어쓰면 데이터가 손실되고 환경 가용성이 중단될 수 있습니다.

**Topics**
+ [연결 URI 문자열 예제](#manage-connection-types-string-example)
+ [연결 템플릿 예제](#manage-connection-types-template-example)
+ [Jdbc 연결에 HTTP 연결 템플릿을 사용하는 예](#manage-connection-types-example)

## 연결 URI 문자열 예제
<a name="manage-connection-types-string-example"></a>

다음 예제에서는 MySQL 연결 유형에 대한 연결 URI 문자열을 보여줍니다.

```
'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
```

## 연결 템플릿 예제
<a name="manage-connection-types-template-example"></a>

다음 예제에서는 Apache Airflow UI에 있는 HTTP 연결 템플릿을 보여줍니다.

------
#### [ Apache Airflow v3 ]

![\[이 이미지는 Apache Airflow UI의 HTTP 연결 유형을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/airflow-connection-v3.0.6.png)


------
#### [ Apache Airflow v2 ]

![\[이 이미지는 Apache Airflow UI의 HTTP 연결 유형을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/airflow-connection-v2.0.2.png)


------

## Jdbc 연결에 HTTP 연결 템플릿을 사용하는 예
<a name="manage-connection-types-example"></a>

다음 예제를 사용하여 Apache Airflow UI의 *Jdbc* 연결에 **HTTP** 연결 템플릿을 적용합니다.

------
#### [ Apache Airflow v3 ]

다음 예제는 이 섹션의 예제에 대해 Apache Airflow에서 생성한 연결 URI 문자열을 보여줍니다.

```
http://myconnectionurl/some/path&login=mylogin&extra__jdbc__dry__path=usr/local/airflow/dags/classpath/redshif-jdbc42-2.0.0.1.jar&extra__jdbc__dry__clsname=redshift-jdbc42-2.0.0.1
```

다음 예제를 사용하여 Apache Airflow UI의 Apache Airflow v3에 대한 *Jdbc* 연결에 HTTP 연결 템플릿을 적용합니다.

![\[이 이미지는 Apache Airflow UI에서 Jdbc 연결에 대한 HTTP 연결 유형을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/airflow-connection-jdbc-v3.0.6.png)


------
#### [ Apache Airflow v2 ]

다음 예제는 이 섹션의 예제에 대해 Apache Airflow에서 생성한 연결 URI 문자열을 보여줍니다.

```
http://myconnectionurl/some/path&login=mylogin&extra__jdbc__dry__path=usr/local/airflow/dags/classpath/redshif-jdbc42-2.0.0.1.jar&extra__jdbc__dry__clsname=redshift-jdbc42-2.0.0.1
```

다음 예제를 사용하여 Apache Airflow UI의 Apache Airflow v2에 대한 *Jdbc* 연결에 HTTP 연결 템플릿을 적용합니다.

![\[이 이미지는 Apache Airflow UI에서 Jdbc 연결에 대한 HTTP 연결 유형을 보여줍니다.\]](http://docs.aws.amazon.com/ko_kr/mwaa/latest/userguide/images/airflow-connection-jdbc-v2.0.2.png)


------

# AWS Secrets Manager 보안 암호를 사용하여 Apache Airflow 연결 구성
<a name="connections-secrets-manager"></a>

AWS Secrets Manager 는 Amazon Managed Workflows for Apache Airflow 환경에서 지원되는 대체 Apache Airflow 백엔드입니다. 이 주제에서는를 AWS Secrets Manager 사용하여 Amazon Managed Workflows for Apache Airflow 변수 및 Apache Airflow 연결에 대한 암호를 안전하게 저장하는 방법을 설명합니다.

**참고**  
보안 암호 생성 시 요금이 부과됩니다. Secrets Manager 요금에 대한 자세한 내용은 [AWS 요금](https://aws.amazon.com/secrets-manager/pricing/)을 참조하세요.
[AWS Systems Manager Parameter Store](https://docs.aws.amazon.com/systems-manager/latest/userguide/systems-manager-parameter-store)는 Amazon MWAA에서 보안 암호 백엔드로도 지원됩니다. 자세한 내용은 [Amazon 공급자 패키지 설명서](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-ssm-parameter-store.html)를 참조하세요.

**Contents**
+ [1단계: Amazon MWAA에 Secrets Manager 암호 키에 액세스할 수 있는 권한을 제공합니다.](#connections-sm-policy)
+ [2단계: Secrets Manager 백엔드를 Apache Airflow 구성 옵션으로 생성](#connections-sm-aa-configuration)
+ [3단계: Apache Airflow AWS 연결 URI 문자열 생성](#connections-sm-aa-uri)
+ [4단계: Secrets Manager에서 변수 추가](#connections-sm-createsecret-variables)
+ [5단계: Secrets Manager에서 연결 추가](#connections-sm-createsecret-connection)
+ [샘플 코드](#connections-sm-samples)
+ [리소스](#connections-sm-blogs)
+ [다음 단계](#connections-sm-next-up)

## 1단계: Amazon MWAA에 Secrets Manager 암호 키에 액세스할 수 있는 권한을 제공합니다.
<a name="connections-sm-policy"></a>

Amazon MWAA 환경의 [실행 역할](mwaa-create-role.md)에는 AWS Secrets Manager의 암호 키를 읽을 수 있는 권한이 필요합니다. 다음 IAM 정책은 AWS관리형 [SecretsManagerReadWrite](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/SecretsManagerReadWrite$jsonEditor) 정책을 사용하여 읽기-쓰기 액세스를 허용합니다.

**실행 역할에 정책을 연결하려면**

1. Amazon MWAA 콘솔에서 [환경 페이지](https://console.aws.amazon.com/mwaa/home#/environments)를 엽니다.

1. 환경을 선택합니다.

1. **권한** 창에서 실행 역할을 선택합니다.

1. **정책 연결**을 선택합니다.

1. **정책 필터링** 텍스트 필드에 `SecretsManagerReadWrite`을(를) 입력합니다.

1. **정책 연결**을 선택합니다.

 AWS관리형 권한 정책을 사용하지 않으려면 환경의 실행 역할을 직접 업데이트하여 Secrets Manager 리소스에 대한 모든 수준의 액세스를 허용할 수 있습니다. 예를 들어 다음 정책 문은 Secrets Manager의 특정에서 생성하는 모든 보안 암호 AWS 리전 에 대한 읽기 액세스 권한을 부여합니다.

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "secretsmanager:GetResourcePolicy",
                "secretsmanager:GetSecretValue",
                "secretsmanager:DescribeSecret",
                "secretsmanager:ListSecretVersionIds"
            ],
            "Resource": "arn:aws:secretsmanager:us-east-1:111122223333:secret:*"
        },
        {
            "Effect": "Allow",
            "Action": "secretsmanager:ListSecrets",
            "Resource": "*"
        }
    ]
}
```

------

## 2단계: Secrets Manager 백엔드를 Apache Airflow 구성 옵션으로 생성
<a name="connections-sm-aa-configuration"></a>

다음 섹션에서는 Amazon MWAA 콘솔에서 AWS Secrets Manager 백엔드에 대한 Apache Airflow 구성 옵션을 생성하는 방법을 설명합니다. `airflow.cfg`에서 동일한 이름의 구성 설정을 사용하는 경우 다음 단계에서 생성하는 구성이 우선하며 구성 설정을 재정의합니다.

1. Amazon MWAA 콘솔에서 [환경 페이지](https://console.aws.amazon.com/mwaa/home#/environments)를 엽니다.

1. 환경을 선택합니다.

1. **편집**을 선택합니다.

1. **다음**을 선택합니다.

1. **Airflow 구성 옵션** 창에서 **사용자 지정 구성 추가**를 선택합니다. 다음 키-값 페어를 추가합니다:

   1. **`secrets.backend`**: **`airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackend`**

   1. **`secrets.backend_kwargs`**: **`{"connections_prefix" : "airflow/connections", "variables_prefix" : "airflow/variables"}`** 이렇게 하면 Apache Airflow가 `airflow/connections/*` 및 `airflow/variables/*` 경로에서 연결 문자열과 변수를 검색하도록 구성됩니다.

      [조회 패턴](https://airflow.apache.org/docs/apache-airflow-providers-amazon/stable/secrets-backends/aws-secrets-manager.html#optional-lookup)을 사용하면 Amazon MWAA가 사용자를 대신하여 Secrets Manager에 보내는 API 호출 횟수를 줄일 수 있습니다. 조회 패턴을 지정하지 않으면 Apache Airflow는 구성된 백엔드에서 모든 연결과 변수를 검색합니다. 패턴을 지정하면 Apache Airflow가 검색하는 가능한 경로를 좁힐 수 있습니다. 따라서 Secrets Manager를 Amazon MWAA와 함께 사용할 때 비용이 절감됩니다.

      조회 패턴을 지정하려면 `connections_lookup_pattern` 및 `variables_lookup_pattern` 파라미터를 지정합니다. 이러한 파라미터는 RegEx 문자열을 입력으로 받아들입니다. 예를 들어 `test`로 시작하는 암호를 검색하려면 `secrets.backend_kwargs`에 다음을 입력합니다.

      ```
      {
        "connections_prefix": "airflow/connections",
        "connections_lookup_pattern": "^test",
        "variables_prefix" : "airflow/variables",
        "variables_lookup_pattern": "^test"
      }
      ```
**참고**  
`connections_lookup_pattern` 및 `variables_lookup_pattern`을(를) 사용하려면 `apache-airflow-providers-amazon` 버전 7.3.0 이상을 설치해야 합니다. Provider 패키지를 최신 버전으로 업데이트하는 방법에 대한 자세한 내용은 [제약 조건 파일](connections-packages.md#connections-packages-constraints) 섹션을 참조하세요.

1. **저장**을 선택합니다.

## 3단계: Apache Airflow AWS 연결 URI 문자열 생성
<a name="connections-sm-aa-uri"></a>

연결 문자열을 만들려면 키보드의 ‘tab’ 키를 사용하여 [Connection](https://airflow.apache.org/docs/stable/howto/connection/index.html) 객체의 키-값 페어를 들여쓰기 합니다. 또한 쉘 세션에서 `extra` 객체에 대한 변수를 만드는 것이 좋습니다. 다음 섹션에서는 Apache Airflow 또는 Python 스크립트를 사용하여 Amazon MWAA 환경을 위한 [Apache Airflow 연결 URI 문자열을 생성](https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#generating-a-connection-uri)하는 단계를 안내합니다.

------
#### [ Apache Airflow CLI ]

다음 쉘 세션은 로컬 Airflow CLI를 사용하여 연결 문자열을 생성합니다. CLI가 설치되어 있지 않은 경우 Python 스크립트를 사용하는 것이 좋습니다.

1. Python 쉘 세션을 엽니다.

   ```
   python3
   ```

1. 다음 명령을 입력합니다.

   ```
   >>> import json
   ```

1. 다음 명령을 입력합니다.

   ```
   >>> from airflow.models.connection import Connection
   ```

1. 쉘 세션에서 `extra` 객체에 대한 변수를 생성합니다. *YOUR\$1EXECUTION\$1ROLE\$1ARN*의 샘플 값을 실행 역할 ARN으로 대체하고 *us-east-1*의 리전을 대체합니다(예: `us-east-1`).

   ```
   >>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name': 'us-east-1'})
   ```

1. 연결 객체를 생성합니다. `myconn`의 샘플 값을 Apache Airflow 연결 이름으로 대체합니다.

   ```
   >>> myconn = Connection(
   ```

1. 키보드의 '탭' 키를 사용하여 연결 객체에 다음 키-값 페어를 각각 들여쓰기할 수 있습니다. 샘플 값을 *빨간색*으로 대체합니다.

   1.  AWS 연결 유형을 지정합니다.

      ```
      ... conn_id='aws',
      ```

   1. Apache Airflow 데이터베이스 옵션을 지정합니다.

      ```
      ... conn_type='mysql',
      ```

   1. Amazon MWAA의 Apache Airflow UI URL을 지정합니다.

      ```
      ... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com/home',
      ```

   1. Amazon MWAA에 로그인할 AWS 액세스 키 ID(사용자 이름)를 지정합니다.

      ```
      ... login='YOUR_AWS_ACCESS_KEY_ID',
      ```

   1. Amazon MWAA에 로그인할 AWS 보안 액세스 키(암호)를 지정합니다.

      ```
      ... password='YOUR_AWS_SECRET_ACCESS_KEY',
      ```

   1. `extra` 쉘 세션 변수를 지정합니다.

      ```
      ... extra=extra
      ```

   1. 연결 객체를 종료합니다.

      ```
      ... )
      ```

1. 연결 URI 문자열을 인쇄합니다.

   ```
   >>> myconn.get_uri()
   ```

   응답에서 연결 URI 문자열을 참조하세요.

   ```
   'mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1'
   ```

------
#### [ Python script ]

다음 Python 스크립트에는 Apache Airflow CLI가 필요하지 않습니다.

1. 다음 코드 샘플의 내용을 복사하고 로컬에서 `mwaa_connection.py`로 저장합니다.

   ```
   import urllib.parse
   								
   								conn_type = 'YOUR_DB_OPTION'
   								host = 'YOUR_MWAA_AIRFLOW_UI_URL'
   								port = 'YOUR_PORT'
   								login = 'YOUR_AWS_ACCESS_KEY_ID'
   								password = 'YOUR_AWS_SECRET_ACCESS_KEY'
   								role_arn = urllib.parse.quote_plus('YOUR_EXECUTION_ROLE_ARN')
   								region_name = 'us-east-1'
   								
   								conn_string = '{0}://{1}:{2}@{3}:{4}?role_arn={5}&region_name={6}'.format(conn_type, login, password, host, port, role_arn, region_name)
   								print(conn_string)
   ```

1. 자리 표시자를 *빨간색*으로 대체합니다.

1. 다음 스크립트를 실행하여 연결 문자열을 생성합니다.

   ```
   python3 mwaa_connection.py
   ```

------

## 4단계: Secrets Manager에서 변수 추가
<a name="connections-sm-createsecret-variables"></a>

다음 섹션에서는 Secrets Manager에서 변수에 대한 암호를 생성하는 방법을 설명합니다.

**암호를 생성하려면**

1. [AWS Secrets Manager 콘솔](https://console.aws.amazon.com/secretsmanager/home#/environments)을 엽니다.

1. **새 암호 저장**을 선택합니다.

1. **다른 유형의 암호**를 선택합니다.

1. **이 암호에 저장할 키/값 페어 지정** 창에서 **일반 텍스트**를 선택합니다.

1. 변수 값을 다음 형식의 **일반 텍스트**로 추가합니다.

   ```
   "YOUR_VARIABLE_VALUE"
   ```

   예를 들어, 정수를 지정하려면:

   ```
   14
   ```

   예를 들어 문자열을 지정하려면:

   ```
   "mystring"
   ```

1. **암호화 키**의 경우 드롭다운 목록에서 AWS KMS 키 옵션을 선택합니다.

1. **암호 이름**의 텍스트 필드에 다음 형식으로 이름을 입력합니다.

   ```
   airflow/variables/YOUR_VARIABLE_NAME
   ```

   예제:

   ```
   airflow/variables/test-variable
   ```

1. **다음**을 선택합니다.

1. **암호 구성** 페이지의 **암호 이름 및 설명** 창에서 다음을 수행합니다.

   1. **암호 이름**에 암호 이름을 입력합니다.

   1. (선택 사항) **설명**에 암호에 대한 설명을 입력합니다.

   **다음**을 선택합니다.

1. **순환 구성 - 옵션**에서 기본 옵션을 그대로 두고 **다음**을 선택합니다.

1. Secrets Manager에서 이 단계를 반복하여 원하는 만큼 변수를 추가합니다.

1. **검토** 페이지에서 암호를 검토한 후 **저장**을 선택합니다.

## 5단계: Secrets Manager에서 연결 추가
<a name="connections-sm-createsecret-connection"></a>

다음 섹션에서는 Secrets Manager에서 연결 문자열 URI에 대한 암호를 생성하는 방법을 설명합니다.

**암호를 생성하려면**

1. [AWS Secrets Manager 콘솔](https://console.aws.amazon.com/secretsmanager/home#/environments)을 엽니다.

1. **새 암호 저장**을 선택합니다.

1. **다른 유형의 암호**를 선택합니다.

1. **이 암호에 저장할 키/값 페어 지정** 창에서 **일반 텍스트**를 선택합니다.

1. 연결 URI 문자열을 다음 형식의 **일반 텍스트**로 추가합니다.

   ```
   YOUR_CONNECTION_URI_STRING
   ```

   예제:

   ```
   mysql://288888a0-50a0-888-9a88-1a111aaa0000.a1.us-east-1.airflow.amazonaws.com%2Fhome?role_arn=arn%3Aaws%3Aiam%3A%3A001122332255%3Arole%2Fservice-role%2FAmazonMWAA-MyAirflowEnvironment-iAaaaA&region_name=us-east-1
   ```
**주의**  
Apache Airflow는 연결 문자열의 각 값을 구문 분석합니다. 작은따옴표나 큰따옴표를 사용해서는 **안 됩니다**. 그렇게 하면 연결을 단일 문자열로 구문 분석합니다.

1. **암호화 키**의 경우 드롭다운 목록에서 AWS KMS 키 옵션을 선택합니다.

1. **암호 이름**의 텍스트 필드에 다음 형식으로 이름을 입력합니다.

   ```
   airflow/connections/YOUR_CONNECTION_NAME
   ```

   예제:

   ```
   airflow/connections/myconn
   ```

1. **다음**을 선택합니다.

1. **암호 구성** 페이지의 **암호 이름 및 설명** 창에서 다음을 수행합니다.

   1. **암호 이름**에 암호 이름을 입력합니다.

   1. (선택 사항) **설명**에 암호에 대한 설명을 입력합니다.

   **다음**을 선택합니다.

1. **순환 구성 - 옵션**에서 기본 옵션을 그대로 두고 **다음**을 선택합니다.

1. Secrets Manager에서 이 단계를 반복하여 원하는 만큼 변수를 추가합니다.

1. **검토** 페이지에서 암호를 검토한 후 **저장**을 선택합니다.

## 샘플 코드
<a name="connections-sm-samples"></a>
+ [Apache Airflow 연결을 위한 AWS Secrets Manager의 암호 키 사용](samples-secrets-manager.md)의 샘플 코드를 사용하여 이 페이지의 Apache Airflow 연결(`myconn`)에 암호 키를 사용하는 방법을 알아봅니다.
+ `test-variable`의 샘플 코드를 사용하여 이 페이지의 Apache Airflow 변수([Apache Airflow 변수에 AWS Secrets Manager 암호 키 사용](samples-secrets-manager-var.md))에 암호 키를 사용하는 방법을 알아봅니다.

## 리소스
<a name="connections-sm-blogs"></a>
+ 콘솔 및를 사용하여 Secrets Manager 보안 암호를 구성하는 방법에 대한 자세한 내용은 *AWS Secrets Manager 사용 설명서*의 [보안 암호 생성을](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html) AWS CLI참조하세요.
+ [Apache Airflow 연결 및 변수를 AWS Secrets Manager으로 이동](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/)에서 Python 스크립트를 사용하여 대량의 Apache Airflow 변수 및 연결을 Secrets Manager로 마이그레이션합니다.

## 다음 단계
<a name="connections-sm-next-up"></a>
+ [Apache Airflow에 액세스](access-airflow-ui.md)에서 Apache Airflow UI에 액세스하기 위한 토큰을 생성하는 방법을 알아봅니다.