

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Apache エアフローへの接続の管理
<a name="manage-connections"></a>

この章では、Amazon Managed Workflows for Apache Airflow 環境の Apache Airflow 接続を設定する方法について説明します。

**Topics**
+ [Apache エアフロー変数と接続の概要](#manage-connections-t-overview)
+ [Amazon MWAA 環境にインストールされている Apache エアフロープロバイダーパッケージ](connections-packages.md)
+ [接続タイプの概要](manage-connection-types.md)
+ [AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定](connections-secrets-manager.md)

## Apache エアフロー変数と接続の概要
<a name="manage-connections-t-overview"></a>

場合によっては、環境に対して追加の接続や変数を指定したいことがあります。例えば、AWS プロファイルを追加したり、Apache Airflowメタストア内の接続オブジェクトに実行ロールを追加したりして、それをDAG内から参照することがあります。
+ **セルフマネージド Apache Airflow** 自己管理型のApache Airflowインストールでは、[Apache Airflow 設定オプションは`airflow.cfg`](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 エアフロープロバイダーパッケージ
<a name="connections-packages"></a>

このページには、Amazon MWAA によってすべての Apache Airflow 環境にインストールされた Apache Airflow プロバイダーパッケージが一覧表示されます。これらのパッケージの詳細については、[パッケージの追加に関する Apache Airflow リファレンス](https://airflow.apache.org/docs/apache-airflow/stable/extra-packages-ref.html) を参照してください。

**注記**  
CloudWatch ログ記録との互換性が他の Python ライブラリのインストールによって上書きされることを防ぐために、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` ステートメントを含める必要があります。制約を指定しない場合、要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するため、Amazon MWAA はお客様に代わって制約を指定します。

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 依存関係として指定する必要がないことも意味します。このページには、Amazon MWAA によってすべての Apache Airflow 環境にインストールされた Apache Airflow プロバイダーパッケージが一覧表示されます。

**注記**  
Apache Airflow v2 およびそれ以降では、Amazon MWAA は`pip3 install -r requirements.txt`を実行した後、[Watchtower バージョン2.0.1](https://pypi.org/project/watchtower/2.0.1/) をインストールします。これにより、CloudWatch ログが他の Python ライブラリのインストールによって上書きされることを防ぎ、互換性を確保します。

このプロバイダをアップグレードするには、サポートされている最新バージョンの `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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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)  | 
|  セロリ接続  |  [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 で接続テンプレートが使用できない場合は、HTTP 接続テンプレートを使用するなど、代替の接続テンプレートを用いてこの接続 URI 文字列を生成できます。主な違いは、`my-conn-type://` などの URI のプレフィックスにあります。通常、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/ja_jp/mwaa/latest/userguide/images/airflow-connection-v3.0.6.png)


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

![\[この画像は、Apache Airflow UI の HTTP 接続タイプを示しています。\]](http://docs.aws.amazon.com/ja_jp/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/ja_jp/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/ja_jp/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 を使用して Apache Airflow 変数のシークレットと Apache Airflow 接続を Amazon Managed Workflows for Apache Airflow に安全に保存する方法を説明します。

**注記**  
作成したシークレットに対して料金が発生します。Secret Manager の価格設定の詳細については、[AWS 料金](https://aws.amazon.com/secrets-manager/pricing/) を参照してください。
[AWS Systems Manager パラメータストア](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. **[Filter policies]** (フィルターポリシー) テキストフィールドに `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>

次のセクションでは、 AWS Secrets Manager バックエンドの Amazon MWAA コンソールで 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 が検索する可能性のあるパスを絞り込むことができます。これにより、Amazon MWAA でSecrets Manager を使用する場合のコストを削減できます。

      ルックアップパターンを指定するには、`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 以上をインストールする必要があります。プロバイダパッケージを新しいバージョンに更新する方法の詳細については、[制約ファイル](connections-packages.md#connections-packages-constraints) を参照してください。

1. **[保存]** を選択します。

## ステップ 3: Apache Airflow AWS 接続 URI 文字列を生成する
<a name="connections-sm-aa-uri"></a>

「[接続](https://airflow.apache.org/docs/stable/howto/connection/index.html)」文字列を作成するには、キーボードの 「tab」 キーを使用して Connection オブジェクトのキーと値のペアをインデントします。また、シェルセッションで `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. キーボードの tab キーを使用して、接続オブジェクト内の以下のキーと値のペアをそれぞれインデントします。サンプル値を*赤*で置き換えてください。

   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 つの文字列として解析されます。

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 接続 (`myconn`) のシークレットキーの使用方法については、[AWS Secrets Manager の Apache Airflow 接続でのシークレットキーの使用](samples-secrets-manager.md) のサンプルコードを参照してください。
+ このページの Apache Airflow 変数 (`test-variable`) のシークレットキーの使用方法については、[Apache Airflow 変数の AWS Secrets Manager におけるシークレットキーの使用](samples-secrets-manager-var.md) にあるサンプルコードを使用して学習してください。

## リソース
<a name="connections-sm-blogs"></a>
+ コンソールと を使用して Secrets Manager シークレットを設定する方法の詳細については AWS CLI、「 *AWS Secrets Manager ユーザーガイド*」の[「シークレットの作成](https://docs.aws.amazon.com/secretsmanager/latest/userguide/create_secret.html)」を参照してください。
+ Apache Airflowの大量の変数や接続をSecrets Managerに移行するために、Pythonスクリプトを使用して、[Apache Airflowの接続と変数を AWS Secrets Managerに移動してください](https://aws.amazon.com/blogs/opensource/move-apache-airflow-connections-variables-aws-secrets-manager/)。

## 次のステップ
<a name="connections-sm-next-up"></a>
+ [Apache Airflow へのアクセス](access-airflow-ui.md) で Apache Airflow UI にアクセスするトークンを生成する方法について説明します。