ユーザーガイド

Amazon Managed Workflows for Apache
Airflow

Copyright © 2024 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow: ユーザーガイド
Copyright © 2024 Amazon Web Services, Inc. and/or its affiliates. All rights reserved.
Amazon の商標およびトレードドレスは、Amazon 以外の製品およびサービスに使用することはできません。また、お客様に誤解を与える可能性がある形式で、または Amazon の信用を損なう形式で使用することもできません。Amazon が所有していないその他のすべての商標は、Amazon との提携、関連、支援関係の有無にかかわらず、それら該当する所有者の資産です。

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Table of Contents
Amazon とは MWAA ............................................................................................................................ 1
機能 .................................................................................................................................................. 1
アーキテクチャ ................................................................................................................................ 2
Integration ........................................................................................................................................ 4
サポートバージョン ......................................................................................................................... 4
次のステップ .................................................................................................................................... 4
クイックスタート ................................................................................................................................. 5
このチュートリアルでは、次の作業を行いました。 ...................................................................... 5
前提条件 ........................................................................................................................................... 6
ステップ 1: AWS CloudFormation テンプレートをローカルに保存する ........................................ 7
ステップ 2: を使用してスタックを作成する AWS CLI ................................................................. 17
ステップ 3: DAGを Amazon S3 にアップロードし、Apache Airflow UI で を実行する ............... 17
ステップ 4: Logs で CloudWatch ログを表示する ....................................................................... 18
次のステップ .................................................................................................................................. 19
開始方法 .............................................................................................................................................. 20
前提条件 ......................................................................................................................................... 20
本ガイドについて .......................................................................................................................... 20
開始する前に .................................................................................................................................. 21
利用できるリージョン ................................................................................................................... 21
バケットを作成する ....................................................................................................................... 22
開始する前に ............................................................................................................................. 22
バケットを作成する .................................................................................................................. 23
次のステップ ............................................................................................................................. 24
VPC ネットワークを作成する ....................................................................................................... 25
前提条件 .................................................................................................................................... 25
開始する前に ............................................................................................................................. 26
Amazon VPCネットワークを作成するオプション ................................................................... 26
次のステップ ............................................................................................................................. 38
環境の作成 ..................................................................................................................................... 38
開始する前に ............................................................................................................................. 39
Apache Airflow のバージョン ................................................................................................... 39
環境の作成 ................................................................................................................................ 41
次のステップ .................................................................................................................................. 24
アクセスの管理 ................................................................................................................................... 46iii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA環境へのアクセス ................................................................................................. 46
仕組み ........................................................................................................................................ 47
コンソールを通じたアクセス .................................................................................................... 48
フル API アクセス .................................................................................................................... 55
読み取り専用コンソールアクセス ............................................................................................ 59
Apache Airflow UI アクセス ..................................................................................................... 60
Apache Airflow CLI アクセス ................................................................................................... 60
JSON ポリシーの作成 .............................................................................................................. 61
ユースケースの例 ...................................................................................................................... 61
次のステップ ............................................................................................................................. 64
サービスリンクロール ................................................................................................................... 64
Amazon のサービスにリンクされたロールのアクセス許可 MWAA ........................................ 65
Amazon のサービスにリンクされたロールの作成 MWAA ....................................................... 68
Amazon のサービスにリンクされたロールの編集 MWAA ....................................................... 68
Amazon のサービスにリンクされたロールの削除 MWAA ....................................................... 68
Amazon MWAAサービスにリンクされたロールでサポートされているリージョン ................ 69
ポリシーの更新 ......................................................................................................................... 69
実行ロール ..................................................................................................................................... 70
実行ロールの概要 ...................................................................................................................... 70
新規ロールの作成 ...................................................................................................................... 73
実行ロールポリシーの表示および更新 ..................................................................................... 73
アカウントレベルのパブリックアクセスブロックで Amazon S3 バケットへのアクセスを許可する ........................................................................................................................................ 75
Apache Airflow 接続を使用する ................................................................................................ 75
サンプルポリシー ...................................................................................................................... 75
次のステップ ............................................................................................................................. 81
サービス間での不分別な代理処理の防止 ...................................................................................... 82
Apache Airflow のアクセスモード ................................................................................................. 83
Apache Airflow のアクセスモード ............................................................................................ 84
アクセスモードの概要 .............................................................................................................. 86
プライベートアクセスモードとパブリックアクセスモードのセットアップ ........................... 86
Apache Airflow ウェブサーバーのVPCエンドポイントへのアクセス (プライベートネット
ワークアクセス） ...................................................................................................................... 88
Apache Airflow へのアクセス ............................................................................................................. 89
前提条件 ......................................................................................................................................... 89
アクセス .................................................................................................................................... 89iv

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS CLI ................................................................................................................................... 90
Apache Airflow UI を開く .............................................................................................................. 90
Apache Airflow へのログイン ........................................................................................................ 90
ウェブサーバーアクセストークンを作成する ............................................................................... 90
前提条件 .................................................................................................................................... 91の使用 AWS CLI ....................................................................................................................... 92
Bash スクリプトを使用する ..................................................................................................... 92
Python スクリプトを使用します .............................................................................................. 93
次のステップ ............................................................................................................................. 93
カスタムドメインのセットアップ ................................................................................................. 94
カスタムドメインを設定する .................................................................................................... 94
ネットワークインフラストラクチャをセットアップする ........................................................ 95
Apache Airflow CLI トークン ...................................................................................................... 100
前提条件 .................................................................................................................................. 101
AWS CLI を使用する場合 ....................................................................................................... 101
curl スクリプトを使用する ..................................................................................................... 101
Bash スクリプトを使用する ................................................................................................... 103
Python スクリプトを使用します ............................................................................................ 105
次のステップ ........................................................................................................................... 108
Apache Airflow の使用 REST API ............................................................................................... 108
ウェブサーバーセッショントークンを作成する ..................................................................... 109
Apache Airflow を呼び出す REST API ................................................................................... 110
Apache Airflow CLI コマンドリファレンス ................................................................................. 112
前提条件 .................................................................................................................................. 113
v2 での変更点 ......................................................................................................................... 113
サポート済みの CLI コマンド ................................................................................................. 113「サンプルコード」 ................................................................................................................ 116
接続の管理 ........................................................................................................................................ 120
概要 .............................................................................................................................................. 120
Apache エアフローパッケージ .................................................................................................... 120
Apache Airflow v2.9.2 接続用のプロバイダーパッケージ ...................................................... 121
Apache Airflow v2.8.1 接続用のプロバイダーパッケージ ...................................................... 122
Apache Airflow v2.7.2 接続用のプロバイダーパッケージ ...................................................... 123
Apache Airflow v2.6.3 接続用のプロバイダーパッケージ ...................................................... 124
Apache Airflow v2.5.1 接続用のプロバイダーパッケージ ...................................................... 125
Apache Airflow v2.4.3 接続用のプロバイダーパッケージ ...................................................... 126v

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v2.2.2 接続用のプロバイダーパッケージ ...................................................... 126
Apache Airflow v2.0.2 接続用のプロバイダーパッケージ ...................................................... 127
新しいプロバイダーパッケージの指定 ................................................................................... 127
接続タイプ ................................................................................................................................... 128
接続 URI 文字列の例 .............................................................................................................. 129
サンプル接続テンプレート ..................................................................................................... 129
JDBC 接続に HTTP 接続テンプレートを使用する例 ............................................................. 131
Secrets Manager の設定 ............................................................................................................. 133
ステップ 1: Amazon に Secrets Manager シークレットキーへのアクセス許可MWAAを付与
する ......................................................................................................................................... 134
ステップ 2: Secrets Manager のバックエンドを Apache Airflow 構成オプションとして作成
する ......................................................................................................................................... 135
ステップ 3: Apache Airflow AWS 接続URI文字列を生成する ................................................ 136
ステップ 4: Secrets Manager に変数を追加する ................................................................... 139
ステップ 5: Secrets Manager に接続を追加する ................................................................... 140「サンプルコード」 ................................................................................................................ 142
リソース .................................................................................................................................. 142
次のステップ ........................................................................................................................... 142
環境を管理します ............................................................................................................................. 143
環境クラスの構成 ........................................................................................................................ 143
環境機能 .................................................................................................................................. 143
Apache Airflow スケジューラー .............................................................................................. 145
ワーカーの自動スケーリングの設定 ............................................................................................ 146
ワーカースケーリングの仕組み .............................................................................................. 147
Amazon MWAA コンソールの使用 ......................................................................................... 147
高パフォーマンスのユースケースの例 ................................................................................... 147
タスクが実行状態で止まってしまう問題のトラブルシューティング .................................... 149
次のステップ ........................................................................................................................... 149
ウェブサーバーのオートスケーリングの設定 ............................................................................. 149
ウェブサーバーのスケーリングの仕組み ................................................................................ 150
Amazon MWAA コンソールの使用 ......................................................................................... 150
構成オプションの使用 ................................................................................................................. 151
前提条件 .................................................................................................................................. 151
仕組み ...................................................................................................................................... 152
設定オプションを使用して Apache Airflow v2 にプラグインをロードする ........................... 152
設定オプションの概要 ............................................................................................................ 152

vi

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

設定リファレンス .................................................................................................................... 154
例とサンプルコード ................................................................................................................ 160
次のステップ ........................................................................................................................... 161
エンジンバージョンのアップグレード ........................................................................................ 161
ワークフローリソースのアップグレード ................................................................................ 162
新しいバージョンを指定してください ................................................................................... 163
スタートアップスクリプトの使用 ............................................................................................... 164
スタートアップスクリプトを設定します。 ............................................................................ 165
Linux ランタイムのインストール ........................................................................................... 168
環境変数を設定する ................................................................................................................ 170
データの使用 .................................................................................................................................... 174
Amazon S3 バケットの概要 ........................................................................................................ 174
DAG の追加と更新 ...................................................................................................................... 175
前提条件 .................................................................................................................................. 175
使用方法 .................................................................................................................................. 176
v2 での変更点 ......................................................................................................................... 177
Amazon MWAA CLI ユーティリティを使用した DAG のテスト ........................................... 177
Amazon S3 への DAG コードのアップロード ....................................................................... 177
DAGs フォルダへのパスの指定 .............................................................................................. 179
Apache Airflow UI での変更の表示 ......................................................................................... 179
次のステップ ........................................................................................................................... 179
カスタムプラグインのインストール ............................................................................................ 180
前提条件 .................................................................................................................................. 180
仕組み ...................................................................................................................................... 181
プラグインを使用するタイミング .......................................................................................... 181
カスタムプラグイン数 ............................................................................................................ 182
カスタムプラグイン数 ............................................................................................................ 183
plugins.zip ファイルの作成 ..................................................................................................... 192
plugins.zip を Amazon S3 にアップロードします。 ....................................................... 193
環境へのカスタムプラグインのインストール ........................................................................ 195
plugins.zip のユースケースの例 .............................................................................................. 196
次のステップ ........................................................................................................................... 196
Python 依存関係のインストール ................................................................................................. 196
前提条件 .................................................................................................................................. 197
仕組み ...................................................................................................................................... 197
Python の依存関係の概要 ....................................................................................................... 198

vii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

requirements.txt ファイルの作成 ............................................................................................ 198
requirements.txt を Amazon S3 にアップロードします。 ............................................ 202
環境への Python 依存関係のインストール ............................................................................. 203
requirements.txt のログを表示する ................................................................................ 204
次のステップ ........................................................................................................................... 205
Amazon S3 でファイルの削除 .................................................................................................... 205
前提条件 .................................................................................................................................. 206
バージョン管理の概要 ............................................................................................................ 206
使用方法 .................................................................................................................................. 206
Amazon S3 で DAG を削除する ............................................................................................ 207「現在の」plugins.zip または requirements.txt を削除する ................................................... 207「最新でない」plugins.zip または requirements.txt を削除する ............................................ 208
ライフサイクルを含むファイルの削除 ................................................................................... 208
ライフサイクルポリシーの例 .................................................................................................. 208
次のステップ ........................................................................................................................... 209
ネットワーク .................................................................................................................................... 210
ネットワークについて ................................................................................................................. 210
用語 ......................................................................................................................................... 211
サポート対象 ........................................................................................................................... 211
VPC インフラストラクチャの概要 ......................................................................................... 211
Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例 ............................ 215
VPC におけるセキュリティ ........................................................................................................ 217
用語 ......................................................................................................................................... 218
セキュリティの概要 ................................................................................................................ 218
ネットワークアクセスコントロールリスト (ACL) ................................................................. 218
VPC セキュリティグループ .................................................................................................... 219
VPC エンドポイントポリシー (プライベートルーティングのみ) .......................................... 221
VPC エンドポイントへのアクセスの管理 ................................................................................... 222
料金 ......................................................................................................................................... 223
VPC エンドポイントの概要 .................................................................................................... 223
他の AWS サービスを使用するためのアクセス許可 .............................................................. 224
VPC エンドポイントの表示 .................................................................................................... 224
Apache Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネット
ワークアクセス) ...................................................................................................................... 226
VPC プライベート Amazon のサービスエンドポイント VPCs .................................................. 228
料金 ......................................................................................................................................... 228

viii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プライベートネットワークとプライベートルーティング ...................................................... 229（必須) VPCエンドポイント .................................................................................................. 230
必要なVPCエンドポイントのアタッチ ................................................................................... 230（オプション) Amazon S3 VPCインターフェイスエンドポイントのプライベート IP アドレスを有効にする ....................................................................................................................... 234
独自の Amazon VPC エンドポイントの管理 .............................................................................. 235
共有 Amazon VPC での環境の作成 ....................................................................................... 235
チュートリアル ................................................................................................................................. 246
チュートリアル: AWS Client VPN .............................................................................................. 246
プライベートネットワーク ..................................................................................................... 247
ユースケース ........................................................................................................................... 248
開始する前に ........................................................................................................................... 248
目的 ......................................................................................................................................... 248(オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する .................... 249
ステップ 2: サーバーとクライアントの証明書を作成する .................................................... 250
ステップ 3: AWS CloudFormation テンプレートをローカルに保存する ............................... 251
ステップ 4: クライアント VPN AWS CloudFormation スタックを作成する ......................... 253
ステップ 5: サブネットをクライアント VPN に関連付ける .................................................. 253
ステップ 6: クライアント VPN に認証進入ルールを追加する .............................................. 254
ステップ 7：クライアント VPN のエンドポイント設定ファイルをダウンロードします ...... 255
ステップ 8: AWS Client VPN に接続する .............................................................................. 256
次のステップ ........................................................................................................................... 257
チュートリアル: Linux 踏み台ホスト .......................................................................................... 257
プライベートネットワーク ..................................................................................................... 258
ユースケース ........................................................................................................................... 259
開始する前に ........................................................................................................................... 259
目的 ......................................................................................................................................... 259
ステップ 1:踏み台インスタンスを作成する ........................................................................... 260
ステップ 2: ssh トンネルを作成する ..................................................................................... 261
ステップ 3:踏み台セキュリティグループをインバウンドルールとして設定する .................. 263
ステップ 4: Apache Airflow URL をコピーします。 .............................................................. 263
ステップ 5: プロキシ設定を行う ............................................................................................ 263
ステップ 6: Apache Airflow UI を開きます。 ........................................................................ 266
次のステップ ........................................................................................................................... 266
チュートリアル:ユーザーを DAG のサブセットに制限する ....................................................... 267
前提条件 .................................................................................................................................. 267

ix

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 1:デフォルトの Public Apache Airflow ロールを使用して、IAM プリンシパルにAmazon MWAA ウェブサーバーへのアクセス権を付与します。 .......................................... 268
ステップ 2:新しい Apache Airflow カスタムロールを作成する ............................................. 269
ステップ 3:作成したロールを Amazon MWAA ユーザーに割り当てます。 .......................... 270
次のステップ ........................................................................................................................... 271
関連リソース ........................................................................................................................... 271
チュートリアル: 独自の環境エンドポイントの管理を自動化する .............................................. 271
前提条件 .................................................................................................................................. 272
Amazon VPC を作成する ....................................................................................................... 272
Lambda 関数を作成する ......................................................................................................... 273
EventBridge ルールを作成する ............................................................................................. 273
環境を作成します。 ............................................................................................................... 274
コードの例 ........................................................................................................................................ 276
変数のインポート DAG ............................................................................................................... 277
Version .................................................................................................................................... 277
前提条件 .................................................................................................................................. 277
アクセス許可 ........................................................................................................................... 277
依存関係 .................................................................................................................................. 277
コードサンプル ....................................................................................................................... 278
次のステップ ........................................................................................................................... 279
SSHOperator の使用 ................................................................................................................. 280
Version .................................................................................................................................... 280
前提条件 .................................................................................................................................. 280
アクセス許可 ........................................................................................................................... 281
要件 ......................................................................................................................................... 281
シークレットキーを Amazon S3 にコピーする ..................................................................... 281
新しい Apache Airflow 接続の作成 ......................................................................................... 281
コードサンプル ....................................................................................................................... 282
Secrets Manager の Apache Airflow スノーフレーク接続 .......................................................... 284
Version .................................................................................................................................... 284
前提条件 .................................................................................................................................. 284
アクセス許可 ........................................................................................................................... 285
要件 ......................................................................................................................................... 285
コードサンプル ....................................................................................................................... 285
次のステップ ........................................................................................................................... 286を使用したカスタムメトリクスのDAG書き込み ......................................................................... 286

xAmazon Managed Workflows for Apache Airflow

ユーザーガイド

Version .................................................................................................................................... 287
前提条件 .................................................................................................................................. 287
アクセス許可 ........................................................................................................................... 287
依存関係 .................................................................................................................................. 287
コード例 .................................................................................................................................. 287
Aurora PostgreSQL データベースのクリーンアップ .................................................................. 290
Version .................................................................................................................................... 291
前提条件 .................................................................................................................................. 291
依存関係 .................................................................................................................................. 291
コードサンプル ....................................................................................................................... 291
Amazon S3 への環境のメタデータのエクスポート .................................................................... 294
Version .................................................................................................................................... 295
前提条件 .................................................................................................................................. 295
アクセス許可 ........................................................................................................................... 295
要件 ......................................................................................................................................... 296
コードサンプル ....................................................................................................................... 296
Secrets Manager での Apache Airflow 変数の使用 .................................................................... 298
Version .................................................................................................................................... 299
前提条件 .................................................................................................................................. 299
アクセス許可 ........................................................................................................................... 299
要件 ......................................................................................................................................... 299
コードサンプル ....................................................................................................................... 300
次のステップ ........................................................................................................................... 301
Secrets Manager での Apache Airflow 接続の使用 .................................................................... 301
Version .................................................................................................................................... 301
前提条件 .................................................................................................................................. 301
アクセス許可 ........................................................................................................................... 302
要件 ......................................................................................................................................... 299
コードサンプル ....................................................................................................................... 302
次のステップ ........................................................................................................................... 305
Oracle によるカスタムプラグイン .............................................................................................. 305
Version .................................................................................................................................... 306
前提条件 .................................................................................................................................. 306
アクセス許可 ........................................................................................................................... 306
要件 ......................................................................................................................................... 306
コードサンプル ....................................................................................................................... 307

xi

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

カスタムプラグインを作成する .............................................................................................. 308
Airflow 設定オプション ........................................................................................................... 311
次のステップ ........................................................................................................................... 311
環境変数を含むカスタムプラグイン ............................................................................................ 311
バージョン .............................................................................................................................. 312
前提条件 .................................................................................................................................. 312
許可 ......................................................................................................................................... 312
要件 ......................................................................................................................................... 312
カスタムプラグイン ................................................................................................................ 312
Plugins.zip ............................................................................................................................... 313
Airflow 設定オプション ........................................................................................................... 313
次のステップ ........................................................................................................................... 313
DAGのタイムゾーンの変更 ......................................................................................................... 314
Version .................................................................................................................................... 314
前提条件 .................................................................................................................................. 314
アクセス許可 ........................................................................................................................... 314
Airflow ログのタイムゾーンを変更するプラグインを作成する .............................................. 314
plugins.zip の作成 ............................................................................................................ 315
コードサンプル ....................................................................................................................... 316
次のステップ ........................................................................................................................... 317
実行時に AWS CodeArtifact トークンを更新する ....................................................................... 317
Version .................................................................................................................................... 318
前提条件 .................................................................................................................................. 318
アクセス許可 ........................................................................................................................... 318
コードサンプル ....................................................................................................................... 319
次のステップ ........................................................................................................................... 320
Apache Hive と Hadoop を使ったカスタムプラグイン .............................................................. 320
Version .................................................................................................................................... 321
前提条件 .................................................................................................................................. 321
アクセス許可 ........................................................................................................................... 321
要件 ......................................................................................................................................... 299
依存関係のダウンロード ......................................................................................................... 322
カスタムプラグイン ................................................................................................................ 322
Plugins.zip ............................................................................................................................... 323
コードサンプル ....................................................................................................................... 324
Airflow 設定オプション ........................................................................................................... 324

xii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

次のステップ ........................................................................................................................... 324
パッチするカスタムプラグイン PythonVirtualenvOperator ........................................................ 325
Version .................................................................................................................................... 325
前提条件 .................................................................................................................................. 325
アクセス許可 ........................................................................................................................... 325
要件 ......................................................................................................................................... 326
カスタムプラグインのサンプルコード ................................................................................... 326
Plugins.zip ............................................................................................................................... 328
コードサンプル ....................................................................................................................... 328
Airflow 設定オプション ........................................................................................................... 330
次のステップ ........................................................................................................................... 330
Lambda DAGsを使用した呼び出し ............................................................................................. 331
Version .................................................................................................................................... 331
前提条件 .................................................................................................................................. 331
アクセス許可 ........................................................................................................................... 332
依存関係 .................................................................................................................................. 332
コード例 .................................................................................................................................. 332
DAGs 異なる環境での呼び出し ................................................................................................... 334
Version .................................................................................................................................... 334
前提条件 .................................................................................................................................. 334
アクセス許可 ........................................................................................................................... 334
依存関係 .................................................................................................................................. 335
コード例 .................................................................................................................................. 335
Amazon RDS サーバー ............................................................................................................... 337
Version .................................................................................................................................... 337
前提条件 .................................................................................................................................. 337
依存関係 .................................................................................................................................. 291
Apache Airflow v2 接続 .......................................................................................................... 338
コードサンプル ....................................................................................................................... 339
次のステップ ........................................................................................................................... 341
Amazon EMR 統合 .................................................................................................................. 341
バージョン .............................................................................................................................. 341
コードサンプル ....................................................................................................................... 342
Amazon EKS (eksctl) .................................................................................................................. 344
Version .................................................................................................................................... 345
前提条件 .................................................................................................................................. 345

xiii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon のパブリックキーを作成する EC2 ........................................................................... 346
クラスターを作成する ............................................................................................................ 346
mwaa 名前空間を作成します。 ............................................................................................... 347
mwaa 名前空間のロールを作成します。 ................................................................................ 347
Amazon EKSクラスターの IAMロールを作成してアタッチする ........................................... 348
要件.txt ファイルを作成します ............................................................................................... 351
Amazon の ID マッピングを作成する EKS ............................................................................ 352
kubeconfig の作成 ............................................................................................................... 352
DAG を作成する ..................................................................................................................... 352
Amazon S3 バケットkube_config.yamlに DAGと を追加する Amazon S3 ..................... 355
サンプルを有効にして、トリガーしてください。 ................................................................. 355
ECSOperator の使用 ................................................................................................................. 355
Version .................................................................................................................................... 356
前提条件 .................................................................................................................................. 356
アクセス許可 ........................................................................................................................... 356
Amazon ECSクラスターを作成する ...................................................................................... 358
コードサンプル ....................................................................................................................... 362
Amazon での dbt の使用 MWAA ................................................................................................. 365
Version .................................................................................................................................... 366
前提条件 .................................................................................................................................. 366
依存関係 .................................................................................................................................. 366
DBT プロジェクトを Amazon S3 にアップロードする ......................................................... 368
を使用して DAG dbt 依存関係のインストールを検証する .................................................... 368
を使用して DAG dbt プロジェクトを実行する ...................................................................... 369
AWS ブログとチュートリアル .................................................................................................... 370
ベストプラクティス .......................................................................................................................... 371
Apache Airflow のパフォーマンス調整 ........................................................................................ 371
Apache Airflow 構成オプションの追加 ................................................................................... 371
Apache Airflow スケジューラー .............................................................................................. 372
DAG フォルダ ......................................................................................................................... 377
DAG ファイル ......................................................................................................................... 379
タスク ...................................................................................................................................... 382
Python 依存関係の管理 ............................................................................................................... 387
Amazon MWAACLIユーティリティDAGsを使用したテスト ................................................. 387
PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール ............................. 388
Amazon MWAAコンソールでのログの有効化 ........................................................................ 394

xiv

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Logs コンソールでの CloudWatch ログの表示 ...................................................................... 395
Apache Airflow UI でエラーを表示する .................................................................................. 396
requirements.txt シナリオ例 .......................................................................................... 396
モニタリングおよびメトリクス ........................................................................................................ 398
概要 .............................................................................................................................................. 398
Amazon CloudWatch の概要 .................................................................................................. 399
AWS CloudTrail 概要 .............................................................................................................. 399
監査ログの表示 ............................................................................................................................ 399
での証跡の作成 CloudTrail ..................................................................................................... 400
イベント履歴を使用した CloudTrail イベントの表示 ............................................................. 400
CreateEnvironment のトレイルの例 ................................................................................. 400
次のステップ ........................................................................................................................... 402
Airflow ログの表示 ....................................................................................................................... 402
料金 ......................................................................................................................................... 402
開始する前に ........................................................................................................................... 403
ログタイプ .............................................................................................................................. 403
Apache Airflow ログを有効にする .......................................................................................... 403
Apache Airflow ログを表示する .............................................................................................. 404
スケジューラーログの例 ......................................................................................................... 404
次のステップ ........................................................................................................................... 405
モニタリング、ダッシュボード、アラーム ................................................................................. 405
メトリクス .............................................................................................................................. 406
アラーム状態の概要 ................................................................................................................ 406
カスタムダッシュボードとアラームの例 ................................................................................ 406
メトリクスとダッシュボードの削除 ....................................................................................... 412
次のステップ ........................................................................................................................... 412
Apache Airflow v2 環境メトリクス ............................................................................................. 412
用語 ......................................................................................................................................... 413
ディメンション ....................................................................................................................... 414
CloudWatch コンソールでのメトリクスへのアクセス ......................................................... 415
で利用可能な Apache Airflow メトリクス CloudWatch ......................................................... 415
どのメトリクスを報告するかを選択する ................................................................................ 430
次のステップ ........................................................................................................................... 431
コンテナ、キュー、データベースメトリクス ............................................................................. 431
用語 ......................................................................................................................................... 432
ディメンション ....................................................................................................................... 432

xv

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

メトリクスへのアクセス ......................................................................................................... 433
メトリクスの一覧 .................................................................................................................... 434
セキュリティ .................................................................................................................................... 438
データ保護 ................................................................................................................................... 439
暗号化 ...................................................................................................................................... 439
カスタマーマネージドキーを使用する ................................................................................... 441
AWS Identity and Access Management ...................................................................................... 445
対象者 ...................................................................................................................................... 446
アイデンティティを使用した認証 .......................................................................................... 447
ポリシーを使用したアクセスの管理 ....................................................................................... 450
ユーザー自身のアクセス許可を表示することをユーザーに許可する .................................... 452
Amazon Managed Workflows for Apache Airflow のアイデンティティとアクセスのトラブル
シューティング ....................................................................................................................... 453
Amazon と のMWAA連携方法 IAM ........................................................................................ 455
コンプライアンス検証 ................................................................................................................. 460
耐障害性 ....................................................................................................................................... 462
インフラストラクチャセキュリティ ............................................................................................ 462
設定と脆弱性の分析 ..................................................................................................................... 463
ベストプラクティス ..................................................................................................................... 463
Apache Airflow でのセキュリティのベストプラクティス ...................................................... 464
バージョン ........................................................................................................................................ 466
Amazon MWAA のバージョンについて ...................................................................................... 466
最新バージョン ............................................................................................................................ 466
Apache Airflow のバージョン ...................................................................................................... 466
Apache Airflow コンポーネント .................................................................................................. 468
スケジューラ ........................................................................................................................... 468
ワーカー .................................................................................................................................. 469
Apache Airflow バージョンのアップグレード ............................................................................. 469
Apache Airflow の非推奨バージョン ........................................................................................... 469
Apache Airflow のバージョンサポートとよくある質問 .............................................................. 470
よくある質問 ........................................................................................................................... 470
エンドポイントとクォータ ............................................................................................................... 472
サービスエンドポイント .............................................................................................................. 472
Service Quotas ............................................................................................................................ 472
クォータの増加 ............................................................................................................................ 473
FAQs ................................................................................................................................................. 474

xvi

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

サポートバージョン ..................................................................................................................... 475
Apache Airflow のサポート ..................................................................................................... 475
Apache Airflow のバージョン ................................................................................................. 475
Python バージョン .................................................................................................................. 475
アプリケーションのバージョン .............................................................................................. 477
ユースケース ................................................................................................................................ 477
AWS Step Functions と をいつ使用すべきか Amazon MWAA？ .......................................... 477
環境仕様 ....................................................................................................................................... 477
各環境で使用できるタスクストレージの容量はどれくらいですか? ...................................... 477
デフォルト OS ........................................................................................................................ 477
カスタムイメージ .................................................................................................................... 478
HIPAA コンプライアンス ....................................................................................................... 478
Amazon はスポットインスタンスMWAAをサポートしていますか？ .................................... 478
CUSTOM ドメイン ................................................................................................................. 478
SSH アクセス ......................................................................................................................... 478
自己参照ルール ....................................................................................................................... 479
カスタムメトリクス ................................................................................................................ 479
データストア ........................................................................................................................... 479
ワーカーのクォータ ................................................................................................................ 479
共有 Amazon VPCs ................................................................................................................ 480
メトリクス ................................................................................................................................... 480
ワーカーメトリクス ................................................................................................................ 480
カスタムメトリクス ................................................................................................................ 480
DAGs、演算子、接続、およびその他の質問 .............................................................................. 480
PythonVirtualenvOperator ....................................................................................................... 480
Amazon が新しいDAGファイルを認識するMWAAのにどれくらいの時間がかかります
か？ ......................................................................................................................................... 481
DAG ファイルが Apache Airflow によって取得されないのはなぜですか？ .......................... 481
plugins.zip または requirements.txt を削除してください ....................................................... 481
plugins.zip または requirements.txt を削除してください ....................................................... 481
AWS Database Migration Service (DMS) Operators を使用できますか？ ............................ 482
トラブルシューティング .................................................................................................................. 483
Apache Airflow v2 ........................................................................................................................ 486
接続 ......................................................................................................................................... 487
ウェブサーバ ........................................................................................................................... 489
タスク ...................................................................................................................................... 490

xvii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CLI ........................................................................................................................................... 493
演算子 ...................................................................................................................................... 494
Apache Airflow v1 ........................................................................................................................ 496
requirements.txt の更新 .......................................................................................................... 497
Broken DAG ............................................................................................................................ 497
演算子 ...................................................................................................................................... 499
接続 ......................................................................................................................................... 500
ウェブサーバ ........................................................................................................................... 502
タスク ...................................................................................................................................... 504
CLI ........................................................................................................................................... 507
Amazon MWAA の作成/更新 ....................................................................................................... 507
requirements.txt の更新 .................................................................................................. 508
プラグイン .............................................................................................................................. 509
バケットを作成する ................................................................................................................ 509
環境を作成する ...................................................................................................................... 510
update-environment ................................................................................................................ 513
アクセス環境 ........................................................................................................................... 513
CloudWatch ログ とCloudTrail .................................................................................................... 514
ログ ......................................................................................................................................... 515
ドキュメント履歴 ............................................................................................................................. 520..................................................................................................................................................... dlxxxvi

xviii

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow とは何ですか？
Amazon Managed Workflows for Apache Airflow は、Apache Airflow 用のマネージドオーケストレー
ションサービスで、クラウド上でデータパイプラインを大規模に設定・運用するために使用できます。Apache Airflow は、ワークフローと呼ばれる一連のプロセスとタスクをプログラムで作成、スケ
ジュール、監視するために使用されるオープンソースのツールです。Amazon ではMWAA、Apache
Airflow と Python を使用してワークフローを作成できます。スケーラビリティ、可用性、セキュリ
ティの基盤となるインフラストラクチャを管理する必要はありません。Amazon は、ワークフロー実
行容量をニーズに合わせてMWAA自動的にスケーリングし、Amazon は AWS セキュリティサービス
とMWAA統合して、データへの高速かつ安全なアクセスを提供します。
コンテンツ
• 機能
• アーキテクチャ• Integration• サポートバージョン• 次のステップ機能• 自動エアフロー設定 — Amazon MWAA環境の作成時に Apache Airflow バージョンを選択して、Apache Airflow をすばやくセットアップします。Amazon MWAAは、インターネットでダウンロードできるのと同じ Apache Airflow ユーザーインターフェイスとオープンソースコードを使用
して Apache Airflow をセットアップします。
• 自動スケーリング — 環境内で稼働するワーカーの最小数と最大数を設定して、Apache Airflow
ワーカーを自動的にスケーリングします。Amazon は環境内のワーカーをMWAAモニタリング
し、自動スケーリングコンポーネントを使用して、定義したワーカーの最大数に達するまで、需要を満たすワーカーを追加します。
• 組み込み認証 — AWS Identity and Access Management () でアクセスコントロールポリシーを定義することで、Apache Airflow ウェブサーバーのロールベースの認証と承認を有効にします
IAM。Apache Airflow ワーカーは、 AWS サービスへの安全なアクセスのためにこれらのポリシーを引き受けます。
機能1

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 組み込みセキュリティ — Apache Airflow ワーカーとスケジューラは Amazon MWAAの Amazon
VPCで実行されます。また、データは を使用して自動的に暗号化されるため AWS KeyManagement Service、環境はデフォルトで安全です。
• パブリックアクセスモードまたはプライベートアクセスモード — プライベートまたはパブリッ
クアクセスモードを使用して Apache Airflow ウェブサーバーにアクセスします。パブリックネッ
トワークアクセスモードでは、インターネット経由でアクセス可能な Apache Airflow ウェブサー
バーのVPCエンドポイントを使用します。プライベートネットワークアクセスモードでは、 でVPCアクセス可能な Apache Airflow ウェブサーバーのVPCエンドポイントを使用します。いずれの場合も、Apache Airflow ユーザーのアクセスは、 AWS Identity and Access Management（IAM）、および で定義したアクセスコントロールポリシーによって制御されます AWS SSO。
• アップグレードとパッチの合理化 — Amazon MWAAは Apache Airflow の新しいバージョンを定期的に提供しています。Amazon MWAAチームは、これらのバージョンのイメージを更新してパッチを適用します。
• ワークフローモニタリング — Amazon で Apache Airflow ログと Apache Airflow メトリクスを表示
CloudWatch して、追加のサードパーティーツールを必要とせずに Apache Airflow タスクの遅延やワークフローエラーを特定します。Amazon は環境メトリクスMWAAを自動的に送信し、有効にした場合は Apache Airflow ログを に送信します CloudWatch。
• AWS 統合 — Amazon MWAAは、Amazon Athena 、 AWS Batch、Amazon CloudWatch、Amazon
DynamoDB 、 AWS DataSync、Amazon EMR、 AWS Fargate、Amazon EKS、Amazon Data
Firehose AWS Glue、 AWS Lambda、Amazon Redshift、Amazon SQS、Amazon 、Amazon
SNS、Amazon SageMaker、および Amazon S3 とのオープンソース統合、および数百の組み込み
およびコミュニティで作成された演算子とセンサーをサポートしています。
• ワーカーフリート — Amazon MWAAは、コンテナを使用してワーカーフリートをオンデマンド
でスケーリングし、 ECSで Amazon AWS Fargateを使用してスケジューラの停止を減らすためのサポートを提供しています。Amazon ECSコンテナでタスクを呼び出すオペレータ、およびKubernetes クラスターでポッドを作成して実行する Kubernetes オペレータがサポートされています。

アーキテクチャ外部ボックス (下の図) に含まれるすべてのコンポーネントは、アカウント内の単一の Amazon
MWAA環境として表示されます。Apache Airflow スケジューラとワーカーは、環境VPCの Amazonのプライベートサブネットに接続する AWS Fargate (Fargate) コンテナです。各環境には、 によって管理される独自の Apache Airflow メタデータベース AWS があり、プライベートに保護された
VPCエンドポイントを介してスケジューラと Workers Fargate コンテナにアクセスできます。
アーキテクチャ2

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon CloudWatch、Amazon S3、Amazon 、および AWS KMS は Amazon とは別のMWAAものでありSQS、Fargate コンテナ内の Apache Airflow スケジューラおよびワーカーからアクセス可能である必要があります。
Apache Airflow ウェブサーバーには、パブリックネットワーク Apache Airflow アクセスモードを選択することでインターネット経由でアクセスすることも、プライベートネットワーク Apache Airflow
アクセスモードを選択することで 内でVPCアクセスすることもできます。いずれの場合も、Apache
Airflow ユーザーのアクセスは、 AWS Identity and Access Management () で定義したアクセスコン
トロールポリシーによって制御されますIAM。
Note
複数の Apache Airflow スケジューラーは Apache Airflow v2 以上でのみ使用できます。Apache Airflow タスクライフサイクルの詳細については、Apache Airflow リファレンス
ガイドの 「概念」 を参照してください。

アーキテクチャ3

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Integration
アクティブで成長を続ける Apache Airflow オープンソースコミュニティは、Apache Airflow が サービスと統合するためのオペレーター ( AWS サービスへの接続を簡素化するプラグイン) を提供します。これには、Amazon S3、Amazon Redshift、Amazon EMR AWS Batch、Amazon などのサービ
ス SageMaker、および他のクラウドプラットフォーム上のサービスが含まれます。
Amazon で Apache Airflow を使用すると、データ処理タスクを実行するために、Apache
Hadoop、Presto、Hive、Spark などの AWS サービスや一般的なサードパーティーツールとの統合
MWAAが完全にサポートされます。Amazon MWAA は、Amazon との互換性を維持することにコミットしておりAPI、Amazon MWAA は AWS サービスに信頼性の高い統合MWAAを提供し、コミュ
ニティで利用可能にし、コミュニティ機能の開発に関わっています。
サンプルコードについては、「Amazon Managed Workflows for Apache Airflow」を参照してください。

サポートバージョン
Amazon は Apache Airflow の複数のバージョンMWAAをサポートしています。サポートされている
Apache Airflow のバージョンと、各バージョンに含まれている Apache Airflow コンポーネントの詳細については、Apache Airflow 用 Amazon マネージドワークフロー上の Apache Airflow のバージョン を参照してください。

次のステップ• Airflow およびDAGsサポートファイル用の Amazon S3 バケット、パブリックルーティングVPCを使用する Amazon、および の Amazon MWAA環境を作成する単一の AWS CloudFormation テン
プレートの使用を開始しますAmazon Managed Workflows for Apache Airflow のクイックスタート
チュートリアル。
• Airflow DAGsとサポートファイルの Amazon S3 バケットを作成し、3 つの Amazon VPCネット
ワークオプションのいずれかを選択し、 で Amazon MWAA環境を作成することで、段階的に開始できますAmazon Managed Workflows for Apache Airflowを使い始める。

Integration

4

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow のクイック
スタートチュートリアル
このクイックスタートチュートリアルでは、Amazon VPCインフラストラクチャを作成する AWS
CloudFormation テンプレート、 dagsフォルダを持つ Amazon S3 バケット、および Amazon
Managed Workflows for Apache Airflow 環境を同時に使用します。
トピック• このチュートリアルでは、次の作業を行いました。
• 前提条件• ステップ 1: AWS CloudFormation テンプレートをローカルに保存する• ステップ 2: を使用してスタックを作成する AWS CLI• ステップ 3: DAGを Amazon S3 にアップロードし、Apache Airflow UI で を実行する• ステップ 4: Logs で CloudWatch ログを表示する• 次のステップ

このチュートリアルでは、次の作業を行いました。
このチュートリアルでは、Amazon S3 に をアップロードDAGし、Apache Airflow DAGで を実行
し、 でログを表示する 3 つの AWS Command Line Interface （AWS CLI) コマンドについて説明します CloudWatch。 Amazon S3 最後に、Apache Airflow 開発チームの IAMポリシーを作成する手順を説明します。
Note
このページの AWS CloudFormation テンプレートは、 で利用可能な最新バージョンのApache Airflow 用の Amazon Managed Workflows for Apache Airflow 環境を作成します AWS
CloudFormation。利用可能な最新バージョンは Apache Airflow v2.9.2 です。

このページの AWS CloudFormation テンプレートは以下を作成します。
• VPC インフラストラクチャ 。このテンプレートは インターネット経由のパブリックルーティング
を使用しています。それは WebserverAccessMode: PUBLIC_ONLY 内の Apache Airflow ウェブ
サーバー に パブリックネットワークアクセスモード を使用します。
このチュートリアルでは、次の作業を行いました。

5

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon S3 バケット。このテンプレートは、dags フォルダー付きの Amazon S3 バケットを作成します。Amazon MWAA 用の Amazon S3 バケットの作成 で定義されているように、[バケットバージョニング] を有効にして、[すべてのパブリックアクセスをブロック] するように設定されています。
• Amazon MWAA環境 。テンプレートは、Amazon S3 バケットの dagsフォルダに関連付けられている Amazon MWAA環境、Amazon で使用される AWS のサービスに対するアクセス許可を持つ
実行ロールMWAA、および で定義されているように、 AWS 所有キー を使用した暗号化のデフォルトを作成しますAmazon MWAA環境を作成する。 Amazon S3• をCloudWatch ログに記録します。このテンプレートは、 CloudWatch で定義されているように、Airflow スケジューラロググループ 、Airflow ウェブサーバーロググループ 、Airflow ワー
カーロググループ 、Airflow DAG処理ロググループ 、および Airflow タスクロググループ に対して、Apache Airflow がINFO「」レベルでログインできるようにしますAmazon での Airflow ログの表示 CloudWatch。
このチュートリアルでは、以下のタスクを完了します。
• をアップロードして実行しますDAG。で定義されているように、Amazon がMWAAサポートする
最新の Apache Airflow バージョンDAGに関する Apache Airflow のチュートリアルを Amazon S3にアップロードし、Apache Airflow UI で を実行しますDAG の追加と更新。
• ログの表示。で定義されているように、Airflow ウェブサーバーロググループを CloudWatch Logs
で表示しますAmazon での Airflow ログの表示 CloudWatch。
• アクセスコントロールポリシーを作成します。で定義されているように、Apache Airflow 開発チー
ムのアクセスコントロールポリシーを に作成IAMしますAmazon MWAA環境へのアクセス。

前提条件
AWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
• AWS CLI – を使用したクイック設定aws configure。

前提条件

6

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 1: AWS CloudFormation テンプレートをローカルに保存する•

次のテンプレートの内容をコピーし、mwaa-public-network.yml としてローカルに保存します。テンプレートをダウンロードすることもできます。
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
EnvironmentName:
Description: An environment name that is prefixed to resource names
Type: String
Default: MWAAEnvironment
VpcCIDR:
Description: The IP range (CIDR notation) for this VPC
Type: String
Default: 10.192.0.0/16
PublicSubnet1CIDR:
Description: The IP range (CIDR notation) for the public subnet in the first
Availability Zone
Type: String
Default: 10.192.10.0/24
PublicSubnet2CIDR:
Description: The IP range (CIDR notation) for the public subnet in the second
Availability Zone
Type: String
Default: 10.192.11.0/24
PrivateSubnet1CIDR:
Description: The IP range (CIDR notation) for the private subnet in the first
Availability Zone
Type: String
Default: 10.192.20.0/24
PrivateSubnet2CIDR:
Description: The IP range (CIDR notation) for the private subnet in the second
Availability Zone
Type: String
Default: 10.192.21.0/24

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

7

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

MaxWorkerNodes:
Description: The maximum number of workers that can run in the environment
Type: Number
Default: 2
DagProcessingLogs:
Description: Log level for DagProcessing
Type: String
Default: INFO
SchedulerLogsLevel:
Description: Log level for SchedulerLogs
Type: String
Default: INFOTaskLogsLevel:
Description: Log level for TaskLogs
Type: String
Default: INFOWorkerLogsLevel:
Description: Log level for WorkerLogs
Type: String
Default: INFO
WebserverLogsLevel:
Description: Log level for WebserverLogs
Type: String
Default: INFO
Resources:########################################################################################### CREATE VPC##########################################################################################
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCIDR
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: MWAAEnvironment
InternetGateway:
Type: AWS::EC2::InternetGateway

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

8

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Properties:
Tags:- Key: Name
Value: MWAAEnvironment
InternetGatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
InternetGatewayId: !Ref InternetGateway
VpcId: !Ref VPC
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]CidrBlock: !Ref PublicSubnet1CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ1)
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs '' ]CidrBlock: !Ref PublicSubnet2CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ2)
PrivateSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]CidrBlock: !Ref PrivateSubnet1CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Subnet (AZ1)

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

9

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

PrivateSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs '' ]CidrBlock: !Ref PrivateSubnet2CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Subnet (AZ2)
NatGateway1EIP:
Type: AWS::EC2::EIP
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway2EIP:
Type: AWS::EC2::EIP
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway1:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt NatGateway1EIP.AllocationId
SubnetId: !Ref PublicSubnet1
NatGateway2:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt NatGateway2EIP.AllocationId
SubnetId: !Ref PublicSubnet2
PublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Public Routes
DefaultPublicRoute:

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

10

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Type: AWS::EC2::Route
DependsOn: InternetGatewayAttachment
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet1
PublicSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet2

PrivateRouteTable1:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Routes (AZ1)
DefaultPrivateRoute1:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable1
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway1
PrivateSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PrivateRouteTable1
SubnetId: !Ref PrivateSubnet1
PrivateRouteTable2:
Type: AWS::EC2::RouteTable
Properties:

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

11

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Routes (AZ2)
DefaultPrivateRoute2:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable2
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway2
PrivateSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PrivateRouteTable2
SubnetId: !Ref PrivateSubnet2
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: "mwaa-security-group"GroupDescription: "Security group with a self-referencing inbound rule."
VpcId: !Ref VPC
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: "-1"
SourceSecurityGroupId: !Ref SecurityGroup
EnvironmentBucket:
Type: AWS::S3::Bucket
Properties:
VersioningConfiguration:
Status: Enabled
PublicAccessBlockConfiguration:
BlockPublicAcls: true
BlockPublicPolicy: true
IgnorePublicAcls: true
RestrictPublicBuckets: true

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

12

Amazon Managed Workflows for Apache Airflow

ユーザーガイド########################################################################################### CREATE MWAA##########################################################################################
MwaaEnvironment:
Type: AWS::MWAA::Environment
DependsOn: MwaaExecutionPolicy
Properties:
Name: !Sub "${AWS::StackName}-MwaaEnvironment"
SourceBucketArn: !GetAtt EnvironmentBucket.Arn
ExecutionRoleArn: !GetAtt MwaaExecutionRole.Arn
DagS3Path: dags
NetworkConfiguration:
SecurityGroupIds:- !GetAtt SecurityGroup.GroupId
SubnetIds:- !Ref PrivateSubnet1- !Ref PrivateSubnet2
WebserverAccessMode: PUBLIC_ONLY
MaxWorkers: !Ref MaxWorkerNodes
LoggingConfiguration:
DagProcessingLogs:
LogLevel: !Ref DagProcessingLogs
Enabled: true
SchedulerLogs:
LogLevel: !Ref SchedulerLogsLevel
Enabled: true
TaskLogs:
LogLevel: !Ref TaskLogsLevel
Enabled: true
WorkerLogs:
LogLevel: !Ref WorkerLogsLevel
Enabled: true
WebserverLogs:
LogLevel: !Ref WebserverLogsLevel
Enabled: true
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !Ref VPCGroupDescription: !Sub "Security Group for Amazon MWAA Environment${AWS::StackName}-MwaaEnvironment"

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

13

Amazon Managed Workflows for Apache Airflow

ユーザーガイドGroupName: !Sub "airflow-security-group-${AWS::StackName}-MwaaEnvironment"
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: "-1"
SourceSecurityGroupId: !Ref SecurityGroup
SecurityGroupEgress:
Type: AWS::EC2::SecurityGroupEgress
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: "-1"
CidrIp: "0.0.0.0/0"
MwaaExecutionRole:
Type: AWS::IAM::Role
Properties:
AssumeRolePolicyDocument:
Version: 2012-10-17
Statement:- Effect: Allow
Principal:
Service:- airflow-env.amazonaws.com- airflow.amazonaws.com
Action:- "sts:AssumeRole"
Path: "/service-role/"
MwaaExecutionPolicy:
DependsOn: EnvironmentBucket
Type: AWS::IAM::ManagedPolicy
Properties:
Roles:- !Ref MwaaExecutionRole
PolicyDocument:
Version: 2012-10-17
Statement:- Effect: Allow
Action: airflow:PublishMetrics
Resource:

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

14

Amazon Managed Workflows for Apache Airflow

ユーザーガイド- !Sub "arn:aws:airflow:${AWS::Region}:${AWS::AccountId}:environment/${EnvironmentName}"- Effect: Deny
Action: s3:ListAllMyBuckets
Resource:- !Sub "${EnvironmentBucket.Arn}"- !Sub "${EnvironmentBucket.Arn}/*"- Effect: Allow
Action:- "s3:GetObject*"- "s3:GetBucket*"- "s3:List*"
Resource:- !Sub "${EnvironmentBucket.Arn}"- !Sub "${EnvironmentBucket.Arn}/*"- Effect: Allow
Action:- logs:DescribeLogGroups
Resource: "*"- Effect: Allow
Action:- logs:CreateLogStream- logs:CreateLogGroup- logs:PutLogEvents- logs:GetLogEvents- logs:GetLogRecord- logs:GetLogGroupFields- logs:GetQueryResults- logs:DescribeLogGroups
Resource:- !Sub "arn:aws:logs:${AWS::Region}:${AWS::AccountId}:loggroup:airflow-${AWS::StackName}*"- Effect: Allow
Action: cloudwatch:PutMetricData
Resource: "*"- Effect: Allow
Action:- sqs:ChangeMessageVisibility- sqs:DeleteMessage- sqs:GetQueueAttributes- sqs:GetQueueUrl- sqs:ReceiveMessage

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

15

Amazon Managed Workflows for Apache Airflow

ユーザーガイド- sqs:SendMessage
Resource:- !Sub "arn:aws:sqs:${AWS::Region}:*:airflow-celery-*"- Effect: Allow
Action:- kms:Decrypt- kms:DescribeKey- "kms:GenerateDataKey*"- kms:Encrypt
NotResource: !Sub "arn:aws:kms:*:${AWS::AccountId}:key/*"
Condition:
StringLike:"kms:ViaService":- !Sub "sqs.${AWS::Region}.amazonaws.com"
Outputs:
VPC:
Description: A reference to the created VPC
Value: !Ref VPC
PublicSubnets:
Description: A list of the public subnets
Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]]PrivateSubnets:
Description: A list of the private subnets
Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]PublicSubnet1:
Description: A reference to the public subnet in the 1st Availability Zone
Value: !Ref PublicSubnet1
PublicSubnet2:
Description: A reference to the public subnet in the 2nd Availability Zone
Value: !Ref PublicSubnet2
PrivateSubnet1:
Description: A reference to the private subnet in the 1st Availability Zone
Value: !Ref PrivateSubnet1
PrivateSubnet2:
Description: A reference to the private subnet in the 2nd Availability Zone
Value: !Ref PrivateSubnet2
SecurityGroupIngress:

ステップ 1: AWS CloudFormation テンプレートをローカルに保存する

16

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Description: Security group with self-referencing inbound rule
Value: !Ref SecurityGroupIngress
MwaaApacheAirflowUI:
Description: MWAA Environment
Value: !Sub "https://${MwaaEnvironment.WebserverUrl}"

ステップ 2: を使用してスタックを作成する AWS CLI
1.

コマンドプロンプトで、mwaa-public-network.yml が保存されているディレクトリに移動します。例:
cd mwaaproject2.

AWS CLIを使用してスタックを作成するには、aws cloudformation create-stack コマン
ドを用います。
aws cloudformation create-stack --stack-name mwaa-environment-public-network -template-body file://mwaa-public-network.yml --capabilities CAPABILITY_IAM

Note
Amazon VPCインフラストラクチャ、Amazon S3 バケット、Amazon 環境の作成には30 分以上かかります。 MWAA

ステップ 3: DAGを Amazon S3 にアップロードし、Apache Airflow
UI で を実行する
1.

サポートされている最新の Apache Airflow バージョンの tutorial.py ファイルの内容をコ
ピーし、tutorial.py という名前でローカルに保存します。

2.

コマンドプロンプトで、tutorial.py が保存されているディレクトリに移動します。例:
cd mwaaproject3.

以下のコマンドを使って、Amazon S3 バケットをすべてリストアップしますステップ 2: を使用してスタックを作成する AWS CLI

17

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

aws s3 ls

4.

以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一
覧表示します。
aws s3 ls s3://YOUR_S3_BUCKET_NAME

5.

以下のスクリプトを使用して、tutorial.py ファイルを dags フォルダにアップロードしてください。でサンプル値を置き換える YOUR_S3_BUCKET_NAME.
aws s3 cp tutorial.py s3://YOUR_S3_BUCKET_NAME/dags/

6.

Amazon MWAAコンソールで環境ページを開きます。

7.

環境を選択します。

8.

[Airflow UI を開く] を選択します。

9.

Apache Airflow UI で、使用可能な のリストからDAGsチュートリアル を選択しますDAG。

10. DAG 詳細ページで、DAG名前の横にある一時停止/一時停止解除DAGトグルを選択して、 の一時停止を解除しますDAG。
11. トリガー DAGを選択します。

ステップ 4: Logs で CloudWatch ログを表示する
AWS CloudFormation スタックによって有効になったすべての Apache Airflow ログについて、CloudWatch コンソールで Apache Airflow ログを表示できます。次のセクションでは、Airflow ウェ
ブサーバーロググループのログを表示する方法を示します。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[モニタリング] ペインで [Airflow ウェブサーバーのロググループ] を選択します。

4.

[ログストリーム] の webserver_console_ip ログを選択します。

ステップ 4: Logs で CloudWatch ログを表示する

18

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

次のステップ• をアップロードする方法、 で Python の依存関係を指定する方法DAGs、 requirements.txt
plugins.zipで のカスタムプラグインを指定する方法について説明しますAmazon MWAA での
DAG の取り扱い。
• ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細について
は、Amazon での Apache Airflow のパフォーマンスチューニング MWAA を参照してください。
• Amazon でのダッシュボードとアラームのモニタリング MWAA で環境のモニタリングダッシュ
ボードをで作成します。
• でDAGコードサンプルの一部を実行しますAmazon Managed Workflows for Apache Airflow。

次のステップ19

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflowを使い始める
Apache Airflow 用 Amazon マネージドワークフローは、Amazon S3 ストレージバケット内のAmazon VPC、DAG コード、およびサポートファイルを使用して環境を作成します。このガイドでは、Amazon MWAAの利用を開始するための前提条件と AWS リソースについて説明します。
トピック• 前提条件• 本ガイドについて• 開始する前に• 利用できるリージョン• Amazon MWAA 用の Amazon S3 バケットの作成• VPC ネットワークを作成する• Amazon MWAA環境を作成する• 次のステップ

前提条件
Amazon MWAA環境を作成するには、必要な AWS リソースを作成する権限があることを確認するた
めに、追加の手順が必要な場合があります。
• [AWS アカウント] — AmazonのMWAAおよび AWS サービスと、お客様の環境で使用されているリソースを使用することができる AWS アカウントです。

本ガイドについて
このセクションでは、このガイドで作成する AWS インフラストラクチャとリソースについて説明します。
• [Amazon VPC] — Amazon MWAA環境に必要なAmazon VPCネットワークコンポーネントです。
「Amazon でのネットワークについて MWAA」に示すように、これらの要件（上級）を満たす既存の VPC を設定することも、「the section called “VPC ネットワークを作成する”」 で定義されているように VPC とネットワークコンポーネントを作成することもできます。
前提条件

20

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• [Amazon S3 バケット] — DAG および関連ファイル (plugins.zip や requirements.txt など) を保存するための Amazon S3 バケットです。Amazon S3 バケットは、「Amazon MWAA 用の Amazon S3 バケットの作成」で定義されているように、[バケットバージョニング] を有効にして、[すべてのパブリックアクセスをブロック] するように設定する必要があります。
• [Amazon MWAA 環境] — Amazon S3バケットの場所、DAGコードと任意のカスタムプラグイン
または Python 依存関係へのパス、および Amazon VPC とそのセキュリティグループの場所が「Amazon MWAA環境を作成する」で定義されているように構成されたAmazon MWAA環境。

開始する前にAmazon MWAA 環境を作成するには、環境を作成する前に、追加の AWS リソースを作成および設定する追加の手順が必要になる場合があります。
環境を作成するには、以下が必要です。
• [AWS KMS キー] — 環境内のデータを暗号化するための AWS KMS キー。Amazon MWAAコン
ソールでデフォルトオプションを選択して、環境の作成時に 「 AWS が所有するキー」 を作成したり、環境設定(詳細)で使用する他の AWS サービスに対する権限を持つ既存の 「カスタマー
マネージドキー」 を指定することができます。詳細については、「暗号化のためのカスタマーマ
ネージドキーの使用」を参照してください。
• [実行ロール] — Amazon MWAA が環境内にある AWS のリソースにアクセスできるようにする実行ロール。環境を作成するとき、Amazon MWAAコンソールでデフォルトのオプションを選択して実行ロールを作成できます。
詳細については、「Amazon MWAA 実行ロール」を参照してください。
• [VPC セキュリティグループ] — Amazon MWAA が VPC ネットワーク内の他の AWS リソースにアクセスできるようにする VPC セキュリティグループ。Amazon MWAA コンソールのデフォルト
オプションを選択して、環境の作成時にセキュリティグループを作成したり、セキュリティグルー
プに適切なインバウンドルールとアウトバウンドルールを設定したりできます (上級者向け)。詳細
については、「Amazon MWAA の VPC のセキュリティ」を参照してください。

利用できるリージョン
Amazon MWAA は、次の AWS リージョンで利用できます。
• 欧州 (ストックホルム) eu-north-1• 欧州 (フランクフルト) eu-central-1
開始する前に21

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• ヨーロッパ (アイルランド) eu-west-1• 欧州 (ロンドン) eu-west-2• 欧州 (パリ) eu-west-3• アジアパシフィック (ムンバイ) ap-south-1• アジアパシフィック (シンガポール) ap-southeast-1• アジアパシフィック (シドニー) - ap-southeast-2• アジアパシフィック (東京) - ap-northeast-1• アジアパシフィック (ソウル) ap-northeast-2• 米国東部 (バージニア北部) - us-east-1• 米国東部 (オハイオ) - us-east-2• 米国東部 (オレゴン) - us-west-2• カナダ (中部) ca-central-1• 南米 (サンパウロ) sa-east-1

Amazon MWAA 用の Amazon S3 バケットの作成
このガイドでは、Amazon S3 バケットを作成して、Apache Airflow 指向非循環グラフ (DAG)、カス
タムプラグイン、plugins.zipファイル内の Python 依存関係をrequirements.txtファイルに保存する手順について説明します。
目次• 開始する前に• バケットを作成する• 次のステップ

開始する前に• Amazon S3 バケットを作成した後は、名前を変更することはできません。詳細については、「Amazon Simple Storage Service ユーザーガイド」の「バケットの命名規則」を参照してください。
• Amazon MWAA 環境に使用する Amazon S3 バケットは、バケットバージョニングを有効にして、すべてのパブリックアクセスをブロックするように設定する必要があります。
バケットを作成する

22

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon MWAA 環境に使用される Amazon S3 バケットは、Amazon MWAA AWS 環境と同じリージョンにある必要があります。Amazon MWAA AWSのリージョンのリストが表示するには、「AWS 全般のリファレンス」の「Amazon MWAA エンドポイントとクォータ」を参照してください。

バケットを作成する
このセクションでは、環境に合わせて Amazon S3 バケットを作成する手順について説明します。
バケットを作成するには1.

AWS Management Console にサインインし、Amazon S3 コンソール (https://
console.aws.amazon.com/s3/) を開きます。

2.

[バケットの作成] を選択します。

3.

[バケット名] に、バケットの DNS に準拠する名前を入力します。
バケット名には次の条件があります。
• すべての Amazon S3 で一意にする。
• 3～63 文字で指定する。
• 大文字を含めないでください。
• 先頭の文字には小文字の英文字または数字を使用する。

Important
バケット名にアカウント番号などの機密情報を含めないでください。バケット名は、バケット内のオブジェクトを参照する URL に表示されます。
4.

[リージョン] AWS でリージョンを選択します。Amazon MWAA 環境のAWSと同じリージョンである必要があります。
•

レイテンシーとコストを最小化するため、さらに規制条件に対応するために、最寄りのリージョンを選択します。

5.

[Block all public access (すべてのパブリックアクセスをブロック)] を選択します。

6.

[バケットバージョニング] で [有効化] を選択します。

バケットを作成する

23

Amazon Managed Workflows for Apache Airflow

7.

ユーザーガイド

タグ ― オプション。キーと値のタグペアを追加して、Amazon S3 バケットを [タグ] で識別します。例えば、 Bucket : Staging です。

8.

オプション-サーバー側の暗号化。オプションで、Amazon S3 バケットで次の暗号化オプションのいずれかを有効にすることができます。
a.

バケットに対してサーバー側の暗号化を有効にするには、[サーバー側の暗号化] で[Amazon S3 key (SSE-S3)] を選択します。

b.

Amazon S3 バケットの暗号化にAWS KMSキーを使用するには、AWS Key Management
Serviceキー (SSE-KMS) を選択してください。
i.

AWSマネージドキー (aws/s3)-このオプションを選択した場合、Amazon MWAA AWSが管理する所有キーを使用するか、Amazon MWAA 環境の暗号化にカスタマー管理
キーを指定できます。

ii.

AWS KMSキーから選択するか、AWS KMSキー ARN を入力-このステップでカスタ
マー管理キーを指定する場合は、AWS KMSキー ID または ARN を指定する必要があります。 Amazon MWAA ではAWS KMSエイリアスとマルチリージョンキーはサポートされていません。指定する AWS KMS キーは Amazon MWAA 環境での暗号化にも使用する必要があります。

9.

オプション - アドバンスト設定 Amazon S3 Object Lock を有効にする場合:
a.

[アドバンスト設定]、[有効にする] を選択します。
Important
Object Lock を有効にすると、このバケット内のオブジェクトは永久にロックされます。Amazon S3 Object Lockの詳細については、Amazon Simple Storage Service
ユーザーガイドの「Amazon S3 Object Lockの使用」を参照してください。

b.

承認を選択します。

10. [バケットの作成] を選択します。

次のステップ• VPC ネットワークを作成する の環境に必要なAmazon VPC ネットワークを作成する方法を学んでください。
• アクセス権限の管理方法については、「ACL バケット権限の設定方法」を参照してください。
次のステップ24

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• S3 バケットでストレージバケットを削除する方法 。

VPC ネットワークを作成する
Amazon Managed Workflows for Apache Airflow では、環境をサポートするために Amazon VPCおよび特定のネットワークコンポーネントが必要です。このガイドでは、Amazon Managed Workflows
for Apache Airflow 環境の Amazon VPCネットワークを作成するためのさまざまなオプションについて説明します。
Note
Apache Airflow は、ローレイテンシーのネットワーク環境で最もよく機能します。トラ
フィックを別のリージョンまたはオンプレミス環境にルーティングVPCする既存の Amazon
を使用している場合は、Amazon SQS、、Amazon S3 CloudWatch、および の AWS
PrivateLink エンドポイントを追加することをお勧めします AWS KMS。Amazon の の設定の詳細についてはMWAA、「インターネットアクセスのない Amazon VPCネットワークの作成
AWS PrivateLink 」を参照してください。

目次• 前提条件• 開始する前に• Amazon VPCネットワークを作成するオプション• オプション 1: Amazon MWAAコンソールでVPCネットワークを作成する• オプション 2: インターネットにアクセスできる Amazon VPCネットワークの作成• オプション 3: インターネットにアクセスせずに Amazon VPCネットワークを作成する• 次のステップ

前提条件
AWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
VPC ネットワークを作成する

25

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AWS CLI – を使用したクイック設定aws configure。

開始する前に• 環境用に指定したVPCネットワークは、環境の作成後に変更することはできません。
• Amazon および Apache Airflow ウェブサーバー には、プライベートルーティングVPCまたはパブリックルーティングを使用できます。オプションのリストを表示するには、the section called“Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例” を参照してください。

Amazon VPCネットワークを作成するオプション
次のセクションでは、環境の Amazon VPCネットワークを作成するために使用できるオプションについて説明します。
Note
Amazon MWAA は、米国東部 (バージニア北部) リージョンでのuse1-az3アベイラビリ
ティーゾーン (AZ) の使用をサポートしていません。米国東部 (バージニア北部) リージョ
ンMWAAで Amazon VPCの を作成する場合は、 AWS CloudFormation （CFN) テンプレー
トAvailabilityZoneで を明示的に割り当てる必要があります。割り当てられたアベイラ
ビリティーゾーン名を にマッピングすることはできませんuse1-az3。次のコマンドを実行
するIDsと、AZ 名と対応する AZ の詳細なマッピングを取得できます。
aws ec2 describe-availability-zones --region us-east-1

オプション 1: Amazon MWAAコンソールでVPCネットワークを作成する
次のセクションでは、Amazon MWAAコンソールで Amazon VPCネットワークを作成する方法を示します。このオプションは インターネット経由のパブリックルーティング を使用します。これは、[プライベートネットワーク] または [パブリックネットワークアクセスモード] を持つ Apache
Airflow Web サーバーに使用できます。
次の図は、Amazon MWAAコンソールで 作成 MWAA VPC ボタンがどこにあるかを示しています。

開始する前に26

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

オプション 2: インターネットにアクセスできる Amazon VPCネットワークの作成
次の AWS CloudFormation テンプレートは、デフォルトの AWS リージョンでインターネットアクセスを持つ Amazon VPCネットワークを作成します。このオプションは インターネット経由のパブ
リックルーティング を使用します。このテンプレートは、[プライベートネットワーク] または [パブリックネットワークアクセスモード] を持つ Apache Airflow Web サーバーに使用できます。
1.

以下テンプレートの内容をコピーし、cfn-vpc-public-private.yaml としてローカルに保存します。テンプレートをダウンロードすることもできます。
Description: This template deploys a VPC, with a pair of public and private
subnets spread
across two Availability Zones. It deploys an internet gateway, with a default
route on the public subnets. It deploys a pair of NAT gateways (one in each AZ),
and default routes for them in the private subnets.
Parameters:
EnvironmentName:
Description: An environment name that is prefixed to resource names
Type: String
Default: mwaaVpcCIDR:
Description: Please enter the IP range (CIDR notation) for this VPC
Type: String
Default: 10.192.0.0/16
PublicSubnet1CIDR:

Amazon VPCネットワークを作成するオプション

27

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Description: Please enter the IP range (CIDR notation) for the public subnet in
the first Availability Zone
Type: String
Default: 10.192.10.0/24
PublicSubnet2CIDR:
Description: Please enter the IP range (CIDR notation) for the public subnet in
the second Availability Zone
Type: String
Default: 10.192.11.0/24
PrivateSubnet1CIDR:
Description: Please enter the IP range (CIDR notation) for the private subnet
in the first Availability Zone
Type: String
Default: 10.192.20.0/24
PrivateSubnet2CIDR:
Description: Please enter the IP range (CIDR notation) for the private subnet
in the second Availability Zone
Type: String
Default: 10.192.21.0/24
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCIDR
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Ref EnvironmentName
InternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:- Key: Name
Value: !Ref EnvironmentName
InternetGatewayAttachment:
Type: AWS::EC2::VPCGatewayAttachment
Properties:

Amazon VPCネットワークを作成するオプション

28

Amazon Managed Workflows for Apache Airflow

ユーザーガイドInternetGatewayId: !Ref InternetGateway
VpcId: !Ref VPC
PublicSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]CidrBlock: !Ref PublicSubnet1CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ1)
PublicSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs '' ]CidrBlock: !Ref PublicSubnet2CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub ${EnvironmentName} Public Subnet (AZ2)
PrivateSubnet1:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]CidrBlock: !Ref PrivateSubnet1CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Subnet (AZ1)
PrivateSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs
CidrBlock: !Ref PrivateSubnet2CIDR
MapPublicIpOnLaunch: false
Tags:

Amazon VPCネットワークを作成するオプション

'' ]

29

Amazon Managed Workflows for Apache Airflow

ユーザーガイド- Key: Name
Value: !Sub ${EnvironmentName} Private Subnet (AZ2)
NatGateway1EIP:
Type: AWS::EC2::EIP
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway2EIP:
Type: AWS::EC2::EIP
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway1:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt NatGateway1EIP.AllocationId
SubnetId: !Ref PublicSubnet1
NatGateway2:
Type: AWS::EC2::NatGateway
Properties:
AllocationId: !GetAtt NatGateway2EIP.AllocationId
SubnetId: !Ref PublicSubnet2
PublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Public Routes
DefaultPublicRoute:
Type: AWS::EC2::Route
DependsOn: InternetGatewayAttachment
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnet1RouteTableAssociation:

Amazon VPCネットワークを作成するオプション

30

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet1
PublicSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet2

PrivateRouteTable1:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Routes (AZ1)
DefaultPrivateRoute1:
Type: AWS::EC2::Route
Properties:
RouteTableId: !Ref PrivateRouteTable1
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway1
PrivateSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PrivateRouteTable1
SubnetId: !Ref PrivateSubnet1
PrivateRouteTable2:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub ${EnvironmentName} Private Routes (AZ2)
DefaultPrivateRoute2:
Type: AWS::EC2::Route
Properties:

Amazon VPCネットワークを作成するオプション

31

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

RouteTableId: !Ref PrivateRouteTable2
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway2
PrivateSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref PrivateRouteTable2
SubnetId: !Ref PrivateSubnet2
SecurityGroup:
Type: AWS::EC2::SecurityGroup
Properties:
GroupName: "mwaa-security-group"GroupDescription: "Security group with a self-referencing inbound rule."
VpcId: !Ref VPC
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: "-1"
SourceSecurityGroupId: !Ref SecurityGroupOutputs:
VPC:
Description: A reference to the created VPC
Value: !Ref VPC
PublicSubnets:
Description: A list of the public subnets
Value: !Join [ ",", [ !Ref PublicSubnet1, !Ref PublicSubnet2 ]]PrivateSubnets:
Description: A list of the private subnets
Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]PublicSubnet1:
Description: A reference to the public subnet in the 1st Availability Zone
Value: !Ref PublicSubnet1
PublicSubnet2:
Description: A reference to the public subnet in the 2nd Availability Zone
Value: !Ref PublicSubnet2

Amazon VPCネットワークを作成するオプション

32

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

PrivateSubnet1:
Description: A reference to the private subnet in the 1st Availability Zone
Value: !Ref PrivateSubnet1
PrivateSubnet2:
Description: A reference to the private subnet in the 2nd Availability Zone
Value: !Ref PrivateSubnet2
SecurityGroupIngress:
Description: Security group with self-referencing inbound rule
Value: !Ref SecurityGroupIngress2.

コマンドプロンプトで、cfn-vpc-public-private.yaml が保存されているディレクトリに移動します。例:
cd mwaaproject3.

AWS CLIを使用してスタックを作成するには、aws cloudformation create-stack コマン
ドを用います。
aws cloudformation create-stack --stack-name mwaa-environment --template-body
file://cfn-vpc-public-private.yaml

Note
Amazon VPCインフラストラクチャの作成には約 30 分かかります。

オプション 3: インターネットにアクセスせずに Amazon VPCネットワークを作成す
る
次の AWS CloudFormation テンプレートは、デフォルトの AWS リージョンでインターネットアクセスのない Amazon VPCネットワークを作成します。
このオプションは インターネットにアクセスできないプライベートルーティングを 使用します。
このテンプレートは、[プライベートネットワーク] アクセスモードを持つ Apache Airflow Web サー
バーでのみ使用できます。VPC 環境 で使用される AWS サービスに必要なエンドポイントを作成します。
Amazon VPCネットワークを作成するオプション

33

Amazon Managed Workflows for Apache Airflow

1.

ユーザーガイド

次のテンプレートの内容をコピーし、cfn-vpc-private.yaml としてローカルに保存します。テンプレートをダウンロードすることもできます。
AWSTemplateFormatVersion: "2010-09-09"
Parameters:
VpcCIDR:
Description: The IP range (CIDR notation) for this VPC
Type: String
Default: 10.192.0.0/16
PrivateSubnet1CIDR:
Description: The IP range (CIDR notation) for the private subnet in the first
Availability Zone
Type: String
Default: 10.192.10.0/24
PrivateSubnet2CIDR:
Description: The IP range (CIDR notation) for the private subnet in the second
Availability Zone
Type: String
Default: 10.192.11.0/24
Resources:
VPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: !Ref VpcCIDR
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Ref AWS::StackName
RouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub "${AWS::StackName}-route-table"
PrivateSubnet1:

Amazon VPCネットワークを作成するオプション

34

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 0, !GetAZs '' ]CidrBlock: !Ref PrivateSubnet1CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub "${AWS::StackName} Private Subnet (AZ1)"
PrivateSubnet2:
Type: AWS::EC2::Subnet
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select [ 1, !GetAZs
CidrBlock: !Ref PrivateSubnet2CIDR
MapPublicIpOnLaunch: false

'' ]

Tags:
- Key: Name
Value: !Sub "${AWS::StackName} Private Subnet (AZ2)"
PrivateSubnet1RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref RouteTable
SubnetId: !Ref PrivateSubnet1
PrivateSubnet2RouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref RouteTable
SubnetId: !Ref PrivateSubnet2
S3VpcEndoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.s3"
VpcEndpointType: Gateway
VpcId: !Ref VPC
RouteTableIds:- !Ref RouteTable
SecurityGroup:
Type: AWS::EC2::SecurityGroup

Amazon VPCネットワークを作成するオプション

35

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Properties:
VpcId: !Ref VPCGroupDescription: Security Group for Amazon MWAA Environments to access VPC
endpoints
GroupName: !Sub "${AWS::StackName}-mwaa-vpc-endpoints"
SecurityGroupIngress:
Type: AWS::EC2::SecurityGroupIngress
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: "-1"
SourceSecurityGroupId: !Ref SecurityGroupSqsVpcEndoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.sqs"
VpcEndpointType: Interface
VpcId: !Ref VPC
PrivateDnsEnabled: true
SubnetIds:- !Ref PrivateSubnet1- !Ref PrivateSubnet2
SecurityGroupIds:- !Ref SecurityGroup
CloudWatchLogsVpcEndoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.logs"
VpcEndpointType: Interface
VpcId: !Ref VPC
PrivateDnsEnabled: true
SubnetIds:- !Ref PrivateSubnet1- !Ref PrivateSubnet2
SecurityGroupIds:- !Ref SecurityGroup
CloudWatchMonitoringVpcEndoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.monitoring"
VpcEndpointType: Interface

Amazon VPCネットワークを作成するオプション

36

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

VpcId: !Ref VPC
PrivateDnsEnabled: true
SubnetIds:- !Ref PrivateSubnet1- !Ref PrivateSubnet2
SecurityGroupIds:- !Ref SecurityGroup
KmsVpcEndoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: !Sub "com.amazonaws.${AWS::Region}.kms"
VpcEndpointType: Interface
VpcId: !Ref VPC
PrivateDnsEnabled: true
SubnetIds:- !Ref PrivateSubnet1- !Ref PrivateSubnet2
SecurityGroupIds:- !Ref SecurityGroupOutputs:
VPC:
Description: A reference to the created VPC
Value: !Ref VPC
MwaaSecurityGroupId:
Description: Associates the Security Group to the environment to allow accessto the VPC endpoints
Value: !Ref SecurityGroup
PrivateSubnets:
Description: A list of the private subnets
Value: !Join [ ",", [ !Ref PrivateSubnet1, !Ref PrivateSubnet2 ]]PrivateSubnet1:
Description: A reference to the private subnet in the 1st Availability Zone
Value: !Ref PrivateSubnet1
PrivateSubnet2:
Description: A reference to the private subnet in the 2nd Availability Zone
Value: !Ref PrivateSubnet2

Amazon VPCネットワークを作成するオプション

37

Amazon Managed Workflows for Apache Airflow

2.

ユーザーガイド

コマンドプロンプトで、cfn-vpc-private.yml が保存されているディレクトリに移動します。例:
cd mwaaproject3.

AWS CLIを使用してスタックを作成するには、aws cloudformation create-stack コマン
ドを用います。
aws cloudformation create-stack --stack-name mwaa-private-environment --templatebody file://cfn-vpc-private.yml

Note
Amazon VPCインフラストラクチャの作成には約 30 分かかります。
4.

コンピュータからこれらのVPCエンドポイントにアクセスするメカニズムを作成する必要があります。詳細については、「Amazon MWAA のサービス固有の Amazon VPC エンドポイントへのアクセスの管理」を参照してください。

Note
Amazon MWAA セキュリティグループの でアウトバウンドアクセスをさらに制限CIDRできます。例えば、自己参照アウトバウンドルール、Amazon S3 のプレフィックスリスト、および Amazon CIDRの を追加することで、 自体に制限できますVPC。 Amazon S3

次のステップ• で Amazon MWAA環境を作成する方法について説明しますAmazon MWAA環境を作成する。
• でプライベートルーティングVPCを使用して、コンピュータから Amazon へのVPNトンネルを作成する方法について説明しますチュートリアル: AWS Client VPN を使用したプライベートネット
ワークアクセスの設定。

Amazon MWAA環境を作成する
Amazon Managed Workflows for Apache Airflow は、Apache から利用可能なのと同じオープンソー
スの Apache Airflow とユーザーインターフェイスを使用して、選択したバージョンの環境で Apache
次のステップ38

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Airflow をセットアップします。このガイドでは、Amazon MWAA環境を作成する手順について説明します。
目次• 開始する前に• Apache Airflow のバージョン• 環境の作成• ステップ1：詳細の指定• ステップ2：詳細設定の設定• ステップ 3: レビューと作成

開始する前に• 環境の作成後に、環境用に指定したVPCネットワークを変更することはできません。
• [すべてのパブリックアクセスをブロック] し、[バケットバージョニング] 管理を有効にするには、Amazon S3 バケットを設定する必要があります。
• Amazon を使用するためのアクセス許可と、 () MWAAでIAMロールを作成するアクセス許可を持つ AWS アカウントが必要です。 AWS Identity and Access Management IAMAmazon 内のApache Airflow アクセスを制限する Apache Airflow ウェブサーバー のプライベートネットワー
クアクセスモードを選択した場合VPC、Amazon VPCエンドポイントを作成するには IAMのアクセス許可が必要です。

Apache Airflow のバージョン
以下の Apache Airflow バージョンは、Amazon Managed Workflows for Apache Airflow でサポートされています。
Note• Apache Airflow v2.2.2 以降、Amazon MWAAは Python 要件、プロバイダーパッケージ、
カスタムプラグインを Apache Airflow ウェブサーバーに直接インストールすることをサポートしています。
• Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める
必要があります。制約を指定しない場合、Amazon MWAAは要件に記載されているパッ
開始する前に39

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ケージが使用している Apache Airflow のバージョンと互換性があることを確認するために制約を指定します。
要件ファイルに制約を設定する方法の詳細については、「Python 依存関係のインストー
ル」を参照してください。

Apache Airflow のバージョン

Apache Airflow ガイド

Apache Airflow の制約

Python バージョン

v2.9.2Apache Airflow v2.9.2
リファレンスガイド

Apache Airflow v2.9.2
制約ファイル

Python 3.11

v2.8.1Apache Airflow v2.8.1
リファレンスガイド

Apache Airflow v2.8.1
制約ファイル

Python 3.11

v2.7.2Apache Airflow v2.7.2
リファレンスガイド

Apache Airflow v2.7.2
制約ファイル

Python 3.11

v2.6.3

Apache Airflow v2.6.3
リファレンスガイド

Apache Airflow v2.6.3
制約ファイル

Python 3.10

v2.5.1Apache Airflow v2.5.1
リファレンスガイド

Apache Airflow v2.5.1
制約ファイル

Python 3.10

v2.4.3

Apache Airflow v2.4.3
リファレンスガイド

Apache Airflow v2.4.3
制約ファイル

Python 3.10

v2.2.2Apache Airflow v2.2.2
リファレンスガイド

Apache Airflow v2.2.2
制約ファイル「Python 3.7」

v2.0.2Apache Airflow v2.0.2
リファレンスガイド

Apache Airflow v2.0.2
制約ファイル「Python 3.7」

メタデータデータベースのバックアップ手順など、セルフマネージド Apache Airflow デプロイの移行や既存の Amazon MWAA環境の移行の詳細については、「Amazon MWAA 移行ガイド」を参照してください。

Apache Airflow のバージョン40

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

環境の作成
次のセクションでは、Amazon MWAA環境を作成する手順について説明します。

ステップ1：詳細の指定
環境の詳細を指定します
1.

Amazon MWAA コンソールを開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

[Create environment (環境の作成)] を選択します。

4.

[詳細を指定] ページの [環境の詳細] で:a.

[Name] に、環境の一意の名前を入力します。

b.

[エアフローバージョン] で Apache エアフローバージョンを選択します。
Note
値が指定されていない場合、 はデフォルトで最新の Apache Airflow バージョンになります。利用可能な最新バージョンは Apache Airflow v2.9.2 です。

5.

DAG Amazon S3 のコードで、以下を指定します。
a.

S3 バケット。S3 を参照して Amazon S3 バケットを選択する」を選択するか、Amazon
S3 」を入力しますURI。

b.

DAGs フォルダ 。S3 を参照」を選択し、Amazon S3 バケット内のdagsフォルダを選択す
るか、Amazon S3 」を入力しますURI。

c.

[プラグインファイル - オプション]。S3 を参照する」を選択し、Amazon S3 バケット上のplugins.zipファイルを選択するか、Amazon S3 」を入力しますURI。

d.

[要件ファイル - オプション]。S3 を参照する」を選択し、Amazon S3 バケット上のrequirements.txtファイルを選択するか、Amazon S3 」を入力しますURI。

e.
6.

起動スクリプトファイル - オプション 、Amazon S3 バケットのスクリプトファイルを参照
してS3選択する、または Amazon S3 を入力しますURI。

[Next (次へ)] を選択します。

環境の作成

41

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ステップ2：詳細設定の設定
詳細設定を設定するには
1.

[詳細設定の設定] ページの [ネットワーク] で:•Amazon VPCを選択します。
このステップでは、Amazon の 2 つのプライベートサブネットを入力しますVPC。

2.

[Web サーバーアクセス]で、お好みの Apache Airflow アクセスモード を選択します。
a.

[プライベートネットワーク]。これにより、Apache Airflow UI へのアクセスは、環境 のポ
リシーへのアクセスが許可されている Amazon 内のVPCユーザーに制限されます。 IAM このステップの Amazon VPCエンドポイントを作成するには、 アクセス許可が必要です。
Note
Apache Airflow UI にアクセスできるのは企業ネットワークのみで、ウェブサーバ
要件をインストールするためにパブリックリポジトリにアクセスする必要がない場
合は、[プライベートネットワーク] オプションを選択します。このアクセスモード
オプションを選択した場合は、Amazon で Apache Airflow ウェブサーバーにアクセスするメカニズムを作成する必要がありますVPC。詳細については、「Apache
Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネット
ワークアクセス)」を参照してください。

b.

3.

[パブリックネットワーク]。これにより、環境 の ポリシーへのアクセス権を付与されたユーザーが、インターネット経由で Apache Airflow UI にアクセスできるようになります。
IAM

セキュリティグループ (複数可） で、Amazon VPCのセキュリティ保護に使用されるセキュリ
ティグループを選択します。
a.

デフォルトでは、Amazon MWAAは Amazon に特定のインバウンドルールとアウトバウン
ドルールVPCを持つセキュリティグループを作成します。新しいセキュリティグループの作成。

b.

オプション。[新しいセキュリティグループの作成] のチェックボックスをオフにして、最大
5 つのセキュリティグループを選択します。

環境の作成

42

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
ネットワークトラフィックを許可するには、既存の Amazon VPC セキュリティグ
ループを特定のインバウンドルールとアウトバウンドルールで設定する必要があります。詳細については、「Amazon MWAA の VPC のセキュリティ」を参照してください。
4.

[環境クラス] で、環境クラス を選択します。
ワークロードをサポートするために必要な最小サイズを選択することをお勧めします。環境クラスは、随時変更できます。

5.

[最大ワーカー数] は、環境内で実行する Apache Airflow ワーカーの最大数を指定します。
詳細については、「高パフォーマンスのユースケースの例」を参照してください。

6.

最大ウェブサーバー数と最小ウェブサーバー数を指定して、Amazon が環境内の Apache Airflow
ウェブサーバーをMWAAスケーリングする方法を設定します。
ウェブサーバーのオートスケーリングの詳細については、「」を参照してくださいthe section
called “ウェブサーバーのオートスケーリングの設定”。

7.

[暗号化] で、データ暗号化オプションを選択します。
a.

デフォルトでは、Amazon MWAAは AWS 所有キーを使用してデータを暗号化します。

b.

オプション。暗号化設定のカスタマイズ (アドバンスト） を選択して、別の AWS KMS
キーを選択します。このステップでカスタマーマネージドキーを指定する場合は、 AWS
KMS キー ID または を指定する必要がありますARN。 AWS KMS エイリアスとマルチリー
ジョンキーは Amazon ではサポートされていませんMWAA。Amazon S3 バケットでサーバー側の暗号化に Amazon S3 キーを指定した場合は、Amazon MWAA環境に同じキーを指定する必要があります。
Note
Amazon MWAAコンソールでキーを選択するには、キーに対するアクセス許可が必要です。また、「」で説明されているポリシーMWAAをアタッチして、Amazon
がキーを使用するためのアクセス許可を付与する必要がありますキーポリシーの添
付。

環境の作成

43

Amazon Managed Workflows for Apache Airflow

8.

ユーザーガイド

推奨 「モニタリング」で、Airflow ログ記録設定のログカテゴリを 1 つ以上選択して、Apache
Airflow ログを CloudWatch Logs に送信します。

9.

a.

[Airflow タスクログ]。ログレベルの CloudWatch ログに送信する Apache Airflow タスクロ
グのタイプを選択します。

b.

[Airflow ウェブサーバーのログ]。ログレベルの CloudWatch ログに送信する Apache Airflow
ウェブサーバーログのタイプを選択します。

c.

[Airflow スケジューラーログ]。ログレベルの CloudWatch ログに送信する Apache Airflow
スケジューラログのタイプを選択します。

d.

[Airflow ワーカーログ]。ログレベルの CloudWatch ログに送信する Apache Airflow ワー
カーログのタイプを選択します。

e.

Airflow DAG処理ログ 。ログレベルの CloudWatch ログに送信する Apache Airflow DAG処
理ログのタイプを選択します。

オプション。[エアフロー設定オプション]で、[カスタム設定オプションの追加]を選択します。
Apache Airflow バージョンの Apache Airflow 構成オプションの推奨ドロップ
ダウンリストから選択するか、カスタム設定オプションを指定できます。例えば、core.default_task_retries : 3 です。

10. オプション。[タグ] で [新しいタグ] の追加を選択し、タグを環境に関連付けます。例えば、Environment : Staging です。
11. [許可] で、実行ロールを選択する：
a.

デフォルトでは、Amazon MWAAは新しいロールの作成 で実行ロールを作成します。 このオプションを使用するには、IAMロールを作成するアクセス許可が必要です。

b.

オプション。Enter role ARNを選択して、既存の実行ロールの Amazon リソースネーム(ARN) を入力します。

12. [Next (次へ)] を選択します。

ステップ 3: レビューと作成
環境の概要の表示•

環境の概要を確認し、[環境作成] を選択します。

環境の作成

44

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
環境の作成には約 20 ～ 30 分かかります。

次のステップ• Amazon MWAA 用の Amazon S3 バケットの作成 でAmazon S3バケットを作成する方法を学びます。

次のステップ45

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA環境へのアクセスの管理
Amazon Managed Workflows for Apache Airflow は、環境で使用される他の AWS のサービスやリソースの使用を許可する必要があります。また、 AWS Identity and Access Management () のAmazon MWAA環境と Apache Airflow UI にアクセスするためのアクセス許可も付与する必要があり
ますIAM。このセクションでは、環境の AWS リソースへのアクセスを許可するために使用される実行ロールと、アクセス許可を追加する方法、および Amazon MWAA環境と Apache Airflow UI へのア
クセスに必要な AWS アカウントアクセス許可について説明します。
トピック• Amazon MWAA環境へのアクセス• Amazon のサービスにリンクされたロール MWAA
• Amazon MWAA 実行ロール• サービス間での不分別な代理処理の防止• Apache Airflow のアクセスモード

Amazon MWAA環境へのアクセス
Amazon Managed Workflows for Apache Airflow を使用するには、アカウントと必要なアクセス許可を持つIAMエンティティを使用する必要があります。このページでは、Amazon Managed Workflows
for Apache Airflow 環境において、Apache Airflow 開発チームと Apache Airflow ユーザーにアタッチできるアクセスポリシーについて説明します。
Amazon MWAAリソースにアクセスするには、一時的な認証情報を使用し、グループとロールでフェデレーティッド ID を設定することをお勧めします。ベストプラクティスとして、ポリシーを
IAMユーザーに直接アタッチすることは避け、代わりにグループまたはロールを定義して AWS リ
ソースへの一時的なアクセスを提供します。
IAM ロールは、特定のアクセス許可を持つアカウントで作成できる IAM ID です。IAM ロールは、
AWS アイデンティティが でできることとできないことを決定するアクセス許可ポリシーを持つアイ
デンティティであるという点で、 IAM ユーザーと似ています AWS。ただし、ユーザーは 1 人の特定の人に一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。また、ロールには標準の長期認証情報 (パスワードやアクセスキーなど) も関連付けられません。代わりに、ロールを引き受けると、ロールセッション用の一時的なセキュリティ認証情報が提供されます。
Amazon MWAA環境へのアクセス

46

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

フェデレーテッドアイデンティティに許可を割り当てるには、ロールを作成してそのロールの許可を定義します。フェデレーティッド ID が認証されると、その ID はロールに関連付けられ、ロールで定義されている許可が付与されます。フェデレーションのロールの詳細については、「 ユーザーガイド」の「サードパーティー ID プロバイダーのロールの作成IAM」を参照してください。IAM
Identity Center を使用する場合は、アクセス許可セットを設定します。ID が認証後にアクセスできる内容を制御するために、IAMIdentity Center はアクセス許可セットを のロールに関連付けます
IAM。アクセス許可セットの詳細については、「AWS IAM Identity Center ユーザーガイド」の「アクセス許可セット」を参照してください。
アカウントの IAMロールを使用して、アカウントのリソースにアクセスするための別のアクセス
AWS アカウント 許可を付与できます。例については、「 ユーザーガイド」の「チュートリアル:
IAMロール AWS アカウント を使用した 間のアクセスの委任IAM」を参照してください。
セクション
• 仕組み
• フルコンソールアクセスポリシー: AmazonMWAAFullConsoleAccess• フルアクセスポリシーAPIとコンソールアクセスポリシー: AmazonMWAAFullApiAccess• 読み取り専用コンソールアクセスポリシー: AmazonMWAAReadOnlyAccess• Apache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess• Apache Airflow CLIポリシー: AmazonMWAAAirflowCliAccess• JSON ポリシーの作成• 開発者グループにポリシーをアタッチするユースケースの例• 次のステップ

仕組み
Amazon MWAA環境で使用されるリソースとサービスには、すべての AWS Identity and Access
Management （IAM) エンティティがアクセスできるわけではありません。Apache Airflow ユー
ザーにこれらのリソースへのアクセス許可を付与するポリシーを作成する必要があります。例えば、Apache Airflow 開発チームにアクセス権を付与する必要があります。
Amazon MWAAはこれらのポリシーを使用して、ユーザーが AWS コンソールまたは環境APIsで使用される でアクションを実行するために必要なアクセス許可を持っているかどうかを検証します。
このトピックのJSONポリシーを使用して、 で Apache Airflow ユーザーのポリシーを作成しIAM、そのポリシーを のユーザー、グループ、またはロールにアタッチできますIAM。
仕組み

47

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AmazonMWAAFullConsoleAccess — このポリシーを使用して、Amazon MWAAコンソールで環境を設定するアクセス許可を付与します。
• AmazonMWAAFullApiAccess — このポリシーを使用して、環境の管理MWAAAPIsに使用されるす
べての Amazon へのアクセスを許可します。
• AmazonMWAAReadOnlyAccess — このポリシーを使用して、Amazon MWAAコンソールで環境で使用されるリソースを表示するためのアクセス権限を に付与します。
• AmazonMWAAWebServerAccess — このポリシーを使用して、Apache Airflow ウェブサーバーへのアクセスを許可します。
• AmazonMWAAAirflowCliAccess — このポリシーを使用して、Apache Airflow CLI コマンドを実行するためのアクセスを許可します。
アクセス権限を付与するには、ユーザー、グループ、またはロールにアクセス許可を追加します。
• のユーザーとグループ AWS IAM Identity Center：
アクセス許可セットを作成します。「AWS IAM Identity Center ユーザーガイド」の「権限設定を作成する」の手順に従ってください。
• ID プロバイダーIAMを介して で管理されるユーザー：
ID フェデレーションのロールを作成します。IAM ユーザーガイドの「サードパーティー ID プロバ
イダーのロールの作成 (フェデレーション）」の指示に従ってください。
• IAM ユーザー：• ユーザーが担当できるロールを作成します。「 IAMユーザーガイド」のIAM「 ユーザーのロールの作成」の手順に従います。
• (お奨めできない方法) ポリシーをユーザーに直接アタッチするか、ユーザーをユーザーグループに追加する。「 ユーザーガイド」の「ユーザーへのアクセス許可の追加 (コンソール）IAM」の指示に従います。

フルコンソールアクセスポリシー: AmazonMWAAFullConsoleAccessAmazon MWAAコンソールで環境を設定する必要がある場合、ユーザーはアクセスAmazonMWAAFullConsoleAccess許可ポリシーにアクセスする必要がある場合があります。

コンソールを通じたアクセス

48

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
コンソールを通じたアクセスポリシーには、iam:PassRole を実行するためのアクセス許可が含まれている必要があります。これにより、ユーザーはサービスにリンクされたロール と実行ロール を Amazon に渡すことができますMWAA。Amazon は、ユーザーに代わって他の AWS サービスを呼び出すために、各ロールをMWAA引き受けます。次の例では、
iam:PassedToService条件キーを使用して、ロールを渡すことができるMWAAサービス
として Amazon サービスプリンシパル (airflow.amazonaws.com) を指定します。
の詳細についてはiam:PassRole、「 IAMユーザーガイド」の「 AWS サービスにロールを渡すアクセス許可をユーザーに付与する」を参照してください。

保管時のAWS 所有のキー暗号化に を使用して Amazon MWAA環境を作成および管理する場合は、次のポリシーを使用します。 ???
の使用 AWS 所有のキー{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"airflow:*","Resource":"*"},{"Effect":"Allow","Action":["iam:PassRole"],"Resource":"*","Condition":{"StringLike":{"iam:PassedToService":"airflow.amazonaws.com"}}},{"Effect":"Allow","Action":["iam:ListRoles"
コンソールを通じたアクセス

49

Amazon Managed Workflows for Apache Airflow

ユーザーガイド],"Resource":"*"},{"Effect":"Allow","Action":["iam:CreatePolicy"],"Resource":"arn:aws:iam::YOUR_ACCOUNT_ID:policy/service-role/MWAA-ExecutionPolicy*"},{"Effect":"Allow","Action":["iam:AttachRolePolicy","iam:CreateRole"],"Resource":"arn:aws:iam::YOUR_ACCOUNT_ID:role/service-role/AmazonMWAA*"},{"Effect":"Allow","Action":["iam:CreateServiceLinkedRole"],"Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/
AWSServiceRoleForAmazonMWAA"},{"Effect":"Allow","Action":["s3:GetBucketLocation","s3:ListAllMyBuckets","s3:ListBucket","s3:ListBucketVersions"],"Resource":"*"},{"Effect":"Allow","Action":["s3:CreateBucket","s3:PutObject","s3:GetEncryptionConfiguration"],

コンソールを通じたアクセス

50

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Resource":"arn:aws:s3:::*"},{"Effect":"Allow","Action":["ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs","ec2:DescribeRouteTables"],"Resource":"*"},{"Effect":"Allow","Action":["ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup"],"Resource":"arn:aws:ec2:*:*:security-group/airflow-security-group-*"},{"Effect":"Allow","Action":["kms:ListAliases"],"Resource":"*"},{"Effect":"Allow","Action":"ec2:CreateVpcEndpoint","Resource":["arn:aws:ec2:*:*:vpc-endpoint/*","arn:aws:ec2:*:*:vpc/*","arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:security-group/*"]},{"Effect":"Allow","Action":["ec2:CreateNetworkInterface"],"Resource":["arn:aws:ec2:*:*:subnet/*",コンソールを通じたアクセス

51

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"arn:aws:ec2:*:*:network-interface/*"]}]}

保管時の暗号化にカスタマーマネージドキーを使用して Amazon MWAA環境を作成および管理する
場合は、次のポリシーを使用します。カスタマーマネージドキーを使用するには、プリンIAMシパルに、アカウントに保存されているキーを使用して AWS KMS リソースにアクセスするアクセス許可が必要です。
カスタマーマネージドキーを使用する{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"airflow:*","Resource":"*"},{"Effect":"Allow","Action":["iam:PassRole"],"Resource":"*","Condition":{"StringLike":{"iam:PassedToService":"airflow.amazonaws.com"}}},{"Effect":"Allow","Action":["iam:ListRoles"],"Resource":"*"},{"Effect":"Allow","Action":[コンソールを通じたアクセス

52

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"iam:CreatePolicy"],"Resource":"arn:aws:iam::YOUR_ACCOUNT_ID:policy/service-role/MWAA-ExecutionPolicy*"},{"Effect":"Allow","Action":["iam:AttachRolePolicy","iam:CreateRole"],"Resource":"arn:aws:iam::YOUR_ACCOUNT_ID:role/service-role/AmazonMWAA*"},{"Effect":"Allow","Action":["iam:CreateServiceLinkedRole"],"Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/
AWSServiceRoleForAmazonMWAA"},{"Effect":"Allow","Action":["s3:GetBucketLocation","s3:ListAllMyBuckets","s3:ListBucket","s3:ListBucketVersions"],"Resource":"*"},{"Effect":"Allow","Action":["s3:CreateBucket","s3:PutObject","s3:GetEncryptionConfiguration"],"Resource":"arn:aws:s3:::*"},{"Effect":"Allow","Action":["ec2:DescribeSecurityGroups",

コンソールを通じたアクセス

53

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"ec2:DescribeSubnets","ec2:DescribeVpcs","ec2:DescribeRouteTables"],"Resource":"*"},{"Effect":"Allow","Action":["ec2:AuthorizeSecurityGroupIngress","ec2:CreateSecurityGroup"],"Resource":"arn:aws:ec2:*:*:security-group/airflow-security-group-*"},{"Effect":"Allow","Action":["kms:ListAliases"],"Resource":"*"},{"Effect":"Allow","Action":["kms:DescribeKey","kms:ListGrants","kms:CreateGrant","kms:RevokeGrant","kms:Decrypt","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Resource":"arn:aws:kms:*:YOUR_ACCOUNT_ID:key/YOUR_KMS_ID"},{"Effect":"Allow","Action":"ec2:CreateVpcEndpoint","Resource":["arn:aws:ec2:*:*:vpc-endpoint/*","arn:aws:ec2:*:*:vpc/*","arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:security-group/*"]コンソールを通じたアクセス

54

Amazon Managed Workflows for Apache Airflow

ユーザーガイド},{"Effect":"Allow","Action":["ec2:CreateNetworkInterface"],"Resource":["arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:network-interface/*"]}]}

フルアクセスポリシーAPIとコンソールアクセスポリシー:
AmazonMWAAFullApiAccess
環境の管理MWAAAPIsに使用されるすべての Amazon にアクセスする必要がある場合、ユーザー
はAmazonMWAAFullApiAccessアクセス許可ポリシーにアクセスする必要がある場合があります。Apache Airflow UI にアクセスするための許可は付与されません。
Note
フルAPIアクセスポリシーには、 を実行するためのアクセス許可を含める必要があり
ますiam:PassRole。これにより、ユーザーはサービスにリンクされたロール と実行
ロール を Amazon に渡すことができますMWAA。Amazon は、ユーザーに代わって他の AWS サービスを呼び出すために、各ロールをMWAA引き受けます。次の例では、
iam:PassedToService条件キーを使用して、ロールを渡すことができるMWAAサービス
として Amazon サービスプリンシパル (airflow.amazonaws.com) を指定します。
の詳細についてはiam:PassRole、「 IAMユーザーガイド」の「 AWS サービスにロールを渡すアクセス許可をユーザーに付与する」を参照してください。

保管時の AWS 所有のキー 暗号化に を使用して Amazon MWAA環境を作成および管理する場合は、次のポリシーを使用します。
の使用 AWS 所有のキー{"Version":"2012-10-17",
フル API アクセス55

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Statement":[{"Effect":"Allow","Action":"airflow:*","Resource":"*"},{"Effect":"Allow","Action":["iam:PassRole"],"Resource":"*","Condition":{"StringLike":{"iam:PassedToService":"airflow.amazonaws.com"}}},{"Effect":"Allow","Action":["iam:CreateServiceLinkedRole"],"Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/
AWSServiceRoleForAmazonMWAA"},{"Effect":"Allow","Action":["ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs","ec2:DescribeRouteTables"],"Resource":"*"},{"Effect":"Allow","Action":["s3:GetEncryptionConfiguration"],"Resource":"arn:aws:s3:::*"},{

フル API アクセス

56

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Effect":"Allow","Action":"ec2:CreateVpcEndpoint","Resource":["arn:aws:ec2:*:*:vpc-endpoint/*","arn:aws:ec2:*:*:vpc/*","arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:security-group/*"]},{"Effect":"Allow","Action":["ec2:CreateNetworkInterface"],"Resource":["arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:network-interface/*"]}]}

保管時の暗号化にカスタマーマネージドキーを使用して Amazon MWAA環境を作成および管理する
場合は、次のポリシーを使用します。カスタマーマネージドキーを使用するには、プリンIAMシパルに、アカウントに保存されているキーを使用して AWS KMS リソースにアクセスするアクセス許可が必要です。
カスタマーマネージドキーを使用する{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":"airflow:*","Resource":"*"},{"Effect":"Allow","Action":["iam:PassRole"],"Resource":"*",
フル API アクセス57

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Condition":{"StringLike":{"iam:PassedToService":"airflow.amazonaws.com"}}},{"Effect":"Allow","Action":["iam:CreateServiceLinkedRole"],"Resource":"arn:aws:iam::*:role/aws-service-role/airflow.amazonaws.com/
AWSServiceRoleForAmazonMWAA"},{"Effect":"Allow","Action":["ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcs","ec2:DescribeRouteTables"],"Resource":"*"},{"Effect":"Allow","Action":["kms:DescribeKey","kms:ListGrants","kms:CreateGrant","kms:RevokeGrant","kms:Decrypt","kms:Encrypt","kms:GenerateDataKey*","kms:ReEncrypt*"],"Resource":"arn:aws:kms:*:YOUR_ACCOUNT_ID:key/YOUR_KMS_ID"},{"Effect":"Allow","Action":["s3:GetEncryptionConfiguration"],"Resource":"arn:aws:s3:::*"

フル API アクセス58

Amazon Managed Workflows for Apache Airflow

ユーザーガイド},{"Effect":"Allow","Action":"ec2:CreateVpcEndpoint","Resource":["arn:aws:ec2:*:*:vpc-endpoint/*","arn:aws:ec2:*:*:vpc/*","arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:security-group/*"]},{"Effect":"Allow","Action":["ec2:CreateNetworkInterface"],"Resource":["arn:aws:ec2:*:*:subnet/*","arn:aws:ec2:*:*:network-interface/*"]}]}

読み取り専用コンソールアクセスポリシー:
AmazonMWAAReadOnlyAccessAmazon MWAAコンソール環境の詳細ページで環境で使用されるリソースを表示する必要がある場
合、ユーザーはアクセスAmazonMWAAReadOnlyAccess許可ポリシーにアクセスする必要がある場
合があります。ユーザーが新しい環境を作成したり、既存の環境を編集したり、Apache Airflow UIを表示したりすることはできません。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["airflow:ListEnvironments","airflow:GetEnvironment","airflow:ListTagsForResource"],
読み取り専用コンソールアクセス

59

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Resource": "*"}]}Apache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess
Apache Airflow UI にアクセスする必要がある場合、AmazonMWAAWebServerAccess ユーザーはアクセス権限ポリシーにアクセスする必要がある場合があります。ユーザーが Amazon MWAAコン
ソールで環境を表示したり、Amazon MWAA APIs を使用してアクションを実行したりすることはできません。{airflow-role} で Admin、Op、User、Viewer または Public ロールを指定して、ウェブトークンのユーザーのアクセスレベルをカスタマイズします。詳細については、Apache
Airflow リファレンスガイドの「デフォルトロール」を参照してください。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "airflow:CreateWebLoginToken","Resource": ["arn:aws:airflow:{your-region}:YOUR_ACCOUNT_ID:role/{your-environmentname}/{airflow-role}"
]
}
]
}

Note
Amazon MWAAは、5 つのデフォルトの Apache Airflow ロールベースのアクセスコントロー
ル (RBAC) ロール とIAMの統合を提供します。カスタム Apache Airflow ロールの使用詳細については、「the section called “チュートリアル:ユーザーを DAG のサブセットに制限する”」を参照してください。

Apache Airflow CLIポリシー: AmazonMWAAAirflowCliAccess
Apache Airflow CLI コマンド ( など) を実行する必要がある場合、ユーザーはアクセスAmazonMWAAAirflowCliAccess許可ポリシーにアクセスする必要がある場合がありま
Apache Airflow UI アクセス60

Amazon Managed Workflows for Apache Airflow

ユーザーガイドすtrigger_dag。ユーザーが Amazon MWAAコンソールで環境を表示したり、Amazon MWAA
APIs を使用してアクションを実行したりすることはできません。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["airflow:CreateCliToken"],"Resource": "arn:aws:airflow:${Region}:${Account}:environment/${EnvironmentName}"}]}

JSON ポリシーの作成
JSON ポリシーを作成し、 IAMコンソールのユーザー、ロール、またはグループにポリシーをアタッ
チできます。次の手順では、 でJSONポリシーを作成する方法について説明しますIAM。
JSON ポリシーを作成するには
1.

IAM コンソールでポリシーページを開きます。

2.

[Create policy] を選択します。

3.

JSON タブを選択します。

4.

JSON ポリシーを追加します。

5.

[ポリシーの確認] を選択します。

6.

[名前] と [説明] (オプション) のテキストフィールドに値を入力します。
たとえば、ポリシーには AmazonMWAAReadOnlyAccess という名前を付けることができます。

7.

[Create policy] を選択します。

開発者グループにポリシーをアタッチするユースケースの例というIAM名前の グループを使用してAirflowDevelopmentGroup、Apache Airflow
開発チームのすべてのデベロッパーにアクセス許可を適用するとします。これらのユー
JSON ポリシーの作成

61

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ザーは AmazonMWAAFullConsoleAccess、AmazonMWAAAirflowCliAccess および
AmazonMWAAWebServerAccess の権限ポリシーにアクセスする必要があります。このセクションでは、 でグループを作成しIAM、これらのポリシーを作成してアタッチし、そのグループを IAM
ユーザーに関連付ける方法について説明します。この手順では、AWS が所有するキーを使用する場合を想定しています。
A mazonMWAAFullConsoleAccess ポリシーを作成するには1.

A mazonMWAAFullConsoleAccess アクセスポリシー をダウンロードします。

2.

IAM コンソールでポリシーページを開きます。

3.

[Create policy] を選択します。

4.

JSON タブを選択します。

5.

のJSONポリシーを貼り付けますAmazonMWAAFullConsoleAccess。

6.

以下の値を置き換えます。
a.

{your-account-id} – AWS アカウント ID ( など0123456789）b.

{your-kms-id} – カスタマーマネージドキーの一意の識別子。保管時の暗号化にカスタ
マーマネージドキーを使用する場合にのみ適用されます。

7.

[ポリシーの確認] を選択します。

8.

[名前] に AmazonMWAAFullConsoleAccess と入力します。

9.

[Create policy] を選択します。

A mazonMWAAWebServerAccess ポリシーを作成するには1.

A mazonMWAAWebServerAccess アクセスポリシー をダウンロードします。

2.

IAM コンソールでポリシーページを開きます。

3.

[Create policy] を選択します。

4.

JSON タブを選択します。

5.

のJSONポリシーを貼り付けますAmazonMWAAWebServerAccess。

6.

以下の値を置き換えます。
a.

{your-region} – Amazon MWAA環境のリージョン ( などus-east-1）b.

{your-account-id} – AWS アカウント ID ( など0123456789）

c.

{your-environment-name} – Amazon MWAA環境名 ( などMyAirflowEnvironment）

ユースケースの例

62

Amazon Managed Workflows for Apache Airflowd.

ユーザーガイド{airflow-role} – Admin Apache Airflow のデフォルトロール

7.

[ポリシーの確認] を選択します。

8.

[名前] に AmazonMWAAWebServerAccess と入力します。

9.

[Create policy] を選択します。

A mazonMWAAAirflowCliAccess ポリシーを作成するには1.

A mazonMWAAAirflowCliAccess アクセスポリシー をダウンロードします。

2.

IAM コンソールでポリシーページを開きます。

3.

[Create policy] を選択します。

4.

JSON タブを選択します。

5.

のJSONポリシーを貼り付けますAmazonMWAAAirflowCliAccess。

6.

[ポリシーの確認] を選択します。

7.

[名前] に AmazonMWAAAirflowCliAccess と入力します。

8.

[Create policy] を選択します。

グループを作成するには
1.

IAM コンソールでグループページを開きます。

2.

AirflowDevelopmentGroup の名前を入力します。

3.

［Next Step］(次のステップ) をクリックします。

4.

[フィルター] に AmazonMWAA を入力して結果を絞り込みます。

5.

作成した 3 つのポリシーを選択します。

6.

［Next Step］(次のステップ) をクリックします。

7.

[グループを作成] を選択します。

ユーザーに関連付ける手順
1.

IAM コンソールでユーザーページを開きます。

2.

ユーザーを選択します。

3.

[グループ] を選択します。

4.

[グループにユーザーを追加] を選択します。

ユースケースの例

63

Amazon Managed Workflows for Apache Airflow

5.

を選択しますAirflowDevelopmentGroup。

6.

続いて、[Add to Groups] (グループに追加) を選択します。

ユーザーガイド

次のステップ• Apache Airflow へのアクセス で Apache Airflow UI にアクセスするトークンを生成する方法について説明します。
• IAM ポリシーの作成の詳細については、「ポリシーの作成IAM」を参照してください。

Amazon のサービスにリンクされたロール MWAA
Amazon Managed Workflows for Apache Airflow は AWS Identity and Access Management 、 (IAM）
サービスにリンクされたロール を使用します。サービスにリンクされたロールは、Amazon に直接リンクされた一意のタイプのIAMロールですMWAA。サービスにリンクされたロールは Amazon によって事前定義MWAAされており、ユーザーに代わってサービスから他の AWS のサービスを呼び出すために必要なすべてのアクセス許可が含まれています。
サービスにリンクされたロールを使用すると、必要なアクセス許可を手動で追加する必要がなくなる
ため、Amazon の設定MWAAが簡単になります。Amazon MWAAは、サービスにリンクされたロー
ルのアクセス許可を定義します。特に定義されている場合を除き、Amazon のみがそのロールを引き受けMWAAることができます。定義されたアクセス許可には、信頼ポリシーとアクセス許可ポリシーが含まれ、そのアクセス許可ポリシーを他のIAMエンティティにアタッチすることはできません。
サービスリンクロールは、まずその関連リソースを削除しなければ削除できません。これにより、MWAAリソースにアクセスするためのアクセス許可を誤って削除することがないため、Amazon
リソースが保護されます。
サービスにリンクされたロールをサポートする他のサービスの詳細については、AWS 「 と連携するのサービスIAM」を参照し、「サービスにリンクされたロール」列で「はい」があるサービスを探します。 サービスにリンクされたロールに関するドキュメントをサービスで表示するには、[Yes] (はい) リンクを選択します。

次のステップ64

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon のサービスにリンクされたロールのアクセス許可 MWAA
Amazon は、 という名前のサービスにリンクされたロールMWAAを使用しますAWSServiceRoleForAmazonMWAA。 アカウントで作成されたサービスにリンクされたロール
は、以下の AWS サービスMWAAへのアクセス権を Amazon に付与します。
• Amazon CloudWatch Logs (CloudWatch ログ) – Apache Airflow ログのロググループを作成します。
• Amazon CloudWatch （CloudWatch) – 環境とその基盤となるコンポーネントに関連するメトリク
スをアカウントに公開します。
• Amazon Elastic Compute Cloud (Amazon EC2) – 次のリソースを作成します。
• Apache Airflow スケジューラとワーカー が使用する AWSマネージド Amazon Aurora
PostgreSQL データベースクラスターVPCの 内の Amazon VPCエンドポイント。
• Apache Airflow ウェブサーバー のプライベートネットワークオプションを選択した場合に、ウェブサーバーへのネットワークアクセスを有効にする追加の Amazon VPCエンドポイン
ト。
• Amazon の Elastic Network Interfaces (ENIs） VPCを使用して、Amazon でホストされている
AWS リソースへのネットワークアクセスを有効にしますVPC。
次の信頼ポリシーは、サービスプリンシパルがサービスにリンクされたロールを引き受けることを許可します。Amazon のサービスプリンシパルMWAAは、 ポリシーで示されているairflow.amazonaws.comとおりです。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": "airflow.amazonaws.com"},"Action": "sts:AssumeRole"}]}という名前のロール許可ポリシーAmazonMWAAServiceRolePolicyはMWAA、Amazon が指定されたリソースに対して以下のアクションを実行することを許可します。
Amazon のサービスにリンクされたロールのアクセス許可 MWAA

65

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:CreateLogGroup","logs:DescribeLogGroups"],"Resource": "arn:aws:logs:*:*:log-group:airflow-*:*"},{"Effect": "Allow","Action": ["ec2:AttachNetworkInterface","ec2:CreateNetworkInterface","ec2:CreateNetworkInterfacePermission","ec2:DeleteNetworkInterface","ec2:DeleteNetworkInterfacePermission","ec2:DescribeDhcpOptions","ec2:DescribeNetworkInterfaces","ec2:DescribeSecurityGroups","ec2:DescribeSubnets","ec2:DescribeVpcEndpoints","ec2:DescribeVpcs","ec2:DetachNetworkInterface"],"Resource": "*"},{"Effect": "Allow","Action": "ec2:CreateVpcEndpoint","Resource": "arn:aws:ec2:*:*:vpc-endpoint/*","Condition": {"ForAnyValue:StringEquals": {"aws:TagKeys": "AmazonMWAAManaged"}}},{"Effect": "Allow","Action": [Amazon のサービスにリンクされたロールのアクセス許可 MWAA

66

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"ec2:ModifyVpcEndpoint","ec2:DeleteVpcEndpoints"],"Resource": "arn:aws:ec2:*:*:vpc-endpoint/*","Condition": {"Null": {"aws:ResourceTag/AmazonMWAAManaged": false}}},{"Effect": "Allow","Action": ["ec2:CreateVpcEndpoint","ec2:ModifyVpcEndpoint"],"Resource": ["arn:aws:ec2:*:*:vpc/*","arn:aws:ec2:*:*:security-group/*","arn:aws:ec2:*:*:subnet/*"]},{"Effect": "Allow","Action": "ec2:CreateTags","Resource": "arn:aws:ec2:*:*:vpc-endpoint/*","Condition": {"StringEquals": {"ec2:CreateAction": "CreateVpcEndpoint"},"ForAnyValue:StringEquals": {"aws:TagKeys": "AmazonMWAAManaged"}}},{"Effect": "Allow","Action": "cloudwatch:PutMetricData","Resource": "*",
"Condition": {"StringEquals": {"cloudwatch:namespace": ["AWS/MWAA"]

Amazon のサービスにリンクされたロールのアクセス許可 MWAA

67

Amazon Managed Workflows for Apache Airflow

ユーザーガイド}}}]}

IAM エンティティ (ユーザー、グループ、ロールなど) がサービスにリンクされたロールを作成、編集、または削除できるようにするには、アクセス許可を設定する必要があります。詳細について
は、「 ユーザーガイド」の「サービスにリンクされたロールのアクセス許可IAM」を参照してくだ
さい。

Amazon のサービスにリンクされたロールの作成 MWAA
サービスリンクロールを手動で作成する必要はありません。 AWS Management Console、、 AWS
CLIまたは を使用して新しい Amazon MWAA環境を作成すると AWS API、Amazon によってサービスにリンクされたロールMWAAが作成されます。
このサービスリンクロールを削除した後で再度作成する必要が生じた場合は、同じ方法でアカウントにロールを再作成できます。別の環境を作成すると、Amazon によってサービスにリンクされたロールが再度MWAA作成されます。

Amazon のサービスにリンクされたロールの編集 MWAA
Amazon MWAA では、 AWSServiceRoleForAmazonMWAA サービスにリンクされたロールを編集することはできません。サービスリンクロールを作成した後は、多くのエンティティによってロールが参照される可能性があるため、ロール名を変更することはできません。ただし、 を使用してロールの説明を編集することはできますIAM。詳細については、「 IAMユーザーガイド」の「サービスにリンクされたロールの編集」を参照してください。

Amazon のサービスにリンクされたロールの削除 MWAA
サービスリンクロールが必要な機能またはサービスが不要になった場合には、そのロールを削除することをお勧めします。そうすることで、モニタリングや保守が積極的に行われていない未使用のエンティティを排除できます。
Amazon MWAA環境を削除すると、Amazon はサービスの一部として使用するすべての関連リソース
MWAAを削除します。ただし、Amazon が環境の削除MWAAを完了するまで待ってから、サービスにリンクされたロールを削除する必要があります。Amazon が環境を削除する前にサービスにリンクされたロールMWAAを削除すると、Amazon は環境に関連付けられているリソースをすべて削除できないMWAA場合があります。
Amazon のサービスにリンクされたロールの作成 MWAA

68

Amazon Managed Workflows for Apache Airflow

ユーザーガイドを使用してサービスにリンクされたロールを手動で削除するには IAM
IAM コンソール、、または AWS API を使用して AWS CLI、サービスにリンクされたロールを削除します AWSServiceRoleForAmazonMWAA。詳細については、「 ユーザーガイド」の「サービスにリンクされたロールの削除IAM」を参照してください。

Amazon MWAAサービスにリンクされたロールでサポートされているリージョン
Amazon は、サービスが利用可能なすべてのリージョンで、サービスにリンクされたロールの使用
MWAAをサポートしています。詳細は、Amazon Managed Workflows for Apache Airflow エンドポイ
ントとクオータを参照してください。

ポリシーの更新
変更

説明

日付

Amazon がサービスにリンクされたロールのアクセス許可
ポリシーMWAAを更新する

AmazonMWAAServiceR

2022 年 11 月 18 日

olePolicy — Amazon
は、サービスにリンクされたロールのアクセス許可ポ
リシーMWAAを更新して、サービスの基盤となるリソー
スに関連する追加のメトリク
スをお客様のアカウントに発行するMWAAアクセス許可
を Amazon に付与します。
これらの新しいメトリクス
は、AWS/MWAA 以下で公開されます。

Amazon が変更の追跡MWAA
を開始しました

Amazon は AWS 、マネージドサービスにリンクされたロールのアクセス許可ポリシーの変更の追跡MWAAを開始しました。

Amazon MWAAサービスにリンクされたロールでサポートされているリージョン

2022 年 11 月 18 日

69

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA 実行ロール
実行ロールは、ユーザーに代わって他の AWS サービスのリソースを呼び出すアクセス許可をAmazon Managed Workflows for Apache Airflow に付与するアクセス許可ポリシーを持つ AWS
Identity and Access Management （IAM) ロールです。これには、Amazon S3 バケット、 AWS 所有
キー、 CloudWatch ログなどのリソースが含まれます。Amazon MWAA環境には、環境ごとに 1 つの実行ロールが必要です。このページでは、Amazon が環境で使用される他の AWS リソースにアクセスできるようにMWAA、環境の実行ロールを使用して設定する方法について説明します。
目次• 実行ロールの概要• 権限はデフォルトで付与されます。
• 他の AWS のサービスを使用するためのアクセス許可を追加する方法• 新しい実行ロールを関連付ける方法• 新規ロールの作成• 実行ロールポリシーの表示および更新• 他の AWS のサービスを使用するJSONポリシーをアタッチする• アカウントレベルのパブリックアクセスブロックで Amazon S3 バケットへのアクセスを許可する• Apache Airflow 接続を使用する• 実行ロールのサンプルJSONポリシー• カスタマーマネージドキーのポリシー例• AWS 所有キーのサンプルポリシー• 次のステップ

実行ロールの概要
Amazon が環境で使用される他の AWS のサービスを使用するMWAAためのアクセス許可は、実行ロールから取得されます。Amazon MWAA実行ロールには、環境で使用される以下の AWS サービスに対するアクセス許可が必要です。
• Amazon CloudWatch （CloudWatch) – Apache Airflow メトリクスとログを送信します。
• Amazon Simple Storage Service (Amazon S3) – 環境のDAGコードとサポートファイル ( など) を解析しますrequirements.txt。
実行ロール

70

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon Simple Queue Service (Amazon SQS) — Amazon が所有する Amazon キューで環境のApache Airflow タスクをSQSキューに入れる。 MWAA
• AWS Key Management Service （AWS KMS) – 環境のデータ暗号化 ( AWS 所有キーまたはカスタ
マーマネージドキー を使用) 用。
Note
Amazon が AWS 所有KMSキーMWAAを使用してデータを暗号化することを選択した
場合は、Amazon MWAA実行ロールにアタッチされたポリシーでアクセス許可を定義
し、Amazon 経由でアカウント外部に保存されている任意のKMSキーへのアクセスを許可する必要がありますSQS。環境の実行ロールが任意のKMSキーにアクセスするには、次の2 つの条件が必要です。
• サードパーティーアカウントのKMSキーは、リソースポリシーを介してこのクロスアカ
ウントアクセスを許可する必要があります。
• DAG コードは、サードパーティーアカウントの airflow-celery-で始まり、暗号化に同じKMSキーを使用する Amazon SQSキューにアクセスする必要があります。
リソースへのクロスアカウントアクセスに関連するリスクを軽減するために、 に配置されたコードを確認してDAGs、ワークフローがアカウント外の任意の Amazon SQSキューにアクセスしていないことを確認することをお勧めします。さらに、自分のアカウントに保存されているカスタマーマネージドKMSキーを使用して、Amazon の暗号化を管理できま
すMWAA。これにより、環境の実行ロールが アカウントの KMS キーにのみアクセスする
ように制限されます。
暗号化オプションを選択した後は、既存の環境では選択内容を変更できないことに注意してください。

実行ロールには、次のIAMアクションに対するアクセス許可も必要です。
• airflow:PublishMetrics — Amazon が環境の状態をMWAAモニタリングできるようにします。

権限はデフォルトで付与されます。
Amazon MWAAコンソールのデフォルトオプションを使用して実行ロールと AWS 所有キー を作成
し、このページのステップを使用して実行ロールにアクセス許可ポリシーを追加できます。

実行ロールの概要

71

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• コンソールで新しいロールの作成オプションを選択すると、Amazon は環境に必要な最小限のアクセス許可を実行ロールにアMWAAタッチします。
• 場合によっては、Amazon は最大アクセス許可をアMWAAタッチします。例えば、環境を作成するときに Amazon MWAAコンソールで オプションを選択して実行ロールを作成することをお勧めします。Amazon は、実行ロールの正規表現パターンを として使用して、すべての CloudWatch
Logs グループのアクセス許可ポリシーを自動的にMWAA追加します"arn:aws:logs:yourregion:your-account-id:log-group:airflow-your-environment-name-*"。

他の AWS のサービスを使用するためのアクセス許可を追加する方法
Amazon MWAAは、環境の作成後に既存の実行ロールにアクセス許可ポリシーを追加または編集することはできません。環境に必要な追加のアクセス権限ポリシーを使用して実行ロールを更新する必要があります。例えば、 が へのアクセスDAGを必要とする場合 AWS Glue、Amazon MWAA は環境に必要なこれらのアクセス許可を自動的に検出したり、実行ロールにアクセス許可を追加したりすることはできません。
実行ロールにアクセス許可は、次の 2 つのページから追加できます。
• 実行ロールのJSONポリシーをインラインで変更します。このページのサンプルJSONポリシード
キュメントを使用して、IAMコンソールで実行ロールのJSONポリシーを に追加または置き換える
ことができます。
• AWS サービスのJSONポリシーを作成し、実行ロールにアタッチします。このページのステップを使用して、 AWS サービスの新しいJSONポリシードキュメントをIAMコンソールの実行ロールに関連付けることができます。
実行ロールが既に環境に関連付けられていると仮定すると、Amazon MWAAは追加されたアクセス
許可ポリシーの使用をすぐに開始できます。つまり、実行ロールから必要なアクセス許可を削除すると、 が失敗DAGsする可能性があります。

新しい実行ロールを関連付ける方法
お使いの環境の実行ロールはいつでも変更できます。新しい実行ロールがまだお使いの環境に関連付
けられていない場合は、このページの手順を使用して新しい実行ロールポリシーを作成し、そのロールを環境に関連付けます。

実行ロールの概要

72

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

新規ロールの作成
デフォルトでは、Amazon はユーザーに代わってデータ暗号化用の AWS 所有キーと実行ロール
MWAAを作成します。環境を作成するときに、Amazon MWAAコンソールでデフォルトのオプションを選択できます。次のイメージは、環境の実行ロールを作成するデフォルトオプションを示しています。

実行ロールポリシーの表示および更新
Amazon MWAAコンソールで環境の実行ロールを表示し、IAMコンソールでロールのJSONポリシーを更新できます。
実行ロールポリシーを更新するには1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

アクセス許可ペインで実行ロールを選択して、 のアクセス許可ページを開きますIAM。

4.

実行ロールの名前を選択し、権限ポリシーを開きます。

5.

[Edit policy] (ポリシーの編集) を選択します。

6.

JSON タブを選択します。

7.

JSON ポリシーを更新します。

8.

[ポリシーの確認] を選択します。

9.

[Save changes] (変更の保存) をクリックします。

新規ロールの作成

73

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

他の AWS のサービスを使用するJSONポリシーをアタッチする
AWS サービスのJSONポリシーを作成し、実行ロールにアタッチできます。例えば、次のJSONポリ
シーをアタッチして、 のすべてのリソースへの読み取り専用アクセスを許可できます AWS Secrets
Manager。
{"Version":"2012-10-17","Statement":[{"Effect":"Allow","Action":["secretsmanager:GetResourcePolicy","secretsmanager:GetSecretValue","secretsmanager:DescribeSecret","secretsmanager:ListSecretVersionIds"],"Resource":[
"*"
]
}
]
}

実行ロールにポリシーを添付するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[権限] ペインで実行ロールを選択します。

4.

[ポリシーのアタッチ] を選択します。

5.

[Create policy] を選択します。

6.

を選択しますJSON。

7.

JSON ポリシーを貼り付けます。

8.

[次の手順: タグ]、[次の手順: 確認] の順に選択します。

9.

わかりやすい名前 (SecretsManagerReadPolicy など) とポリシーの説明を入力します。

10. [Create policy] を選択します。

実行ロールポリシーの表示および更新

74

Amazon Managed Workflows for Apache Airflow

ユーザーガイドアカウントレベルのパブリックアクセスブロックで Amazon S3 バケットへのアクセスを許可する
PutPublicAccessBlock Amazon S3 オペレーションを使用して、アカウントのすべてのバケット
へのアクセスをブロックしたい場合があります。アカウントのすべてのバケットへのアクセスをブロックする場合、環境実行ロールはその s3:GetAccountPublicAccessBlock アクションをアクセス権限ポリシーに含める必要があります。
次の例は、アカウントのすべての Amazon S3 バケットへのアクセスをブロックするときに実行ロー
ルにアタッチする必要があるポリシーを示しています。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "s3:GetAccountPublicAccessBlock","Resource": "*"}]}Amazon S3 バケットへのパブリックアクセスのブロックの詳細については、Amazon Simple
Storage Service ユーザーガイドの「Amazon S3 ストレージへのパブリックアクセスのブロック」を参照してください。

Apache Airflow 接続を使用する
Apache Airflow 接続を作成し、Apache Airflow 接続オブジェクトARNで実行ロールとそのロールを指定することもできます。詳細については、「Apache エアフローへの接続の管理」を参照してください。

実行ロールのサンプルJSONポリシー
このセクションのサンプルアクセス権限ポリシーは、既存の実行ロールに使用されているアクセス
権限ポリシーを置き換える場合と、新しい実行ロールを作成して環境で使用する場合に使用できる
2 つのポリシーを示しています。これらのポリシーには、Apache Airflow ロググループのリソース
ARNプレースホルダー、Amazon S3 バケット、および Amazon MWAA環境 が含まれています。
アカウントレベルのパブリックアクセスブロックで Amazon S3 バケットへのアクセスを許可する

75

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

サンプルポリシーをコピーし、サンプルARNsまたはプレースホルダーを置き換えてから、JSON
ポリシーを使用して実行ロールを作成または更新することをお勧めします。たとえば、{yourregion} を us-east-1 に置き換えます。

カスタマーマネージドキーのポリシー例
次の例は、カスタマーマネージドキーに使用できる実行ロールポリシーを示しています。
{"Version": "2012-10-17","Statement": [{"Effect": "Deny","Action": "s3:ListAllMyBuckets","Resource": ["arn:aws:s3:::{your-s3-bucket-name}","arn:aws:s3:::{your-s3-bucket-name}/*"]},{"Effect": "Allow","Action": ["s3:GetObject*","s3:GetBucket*","s3:List*"],"Resource": ["arn:aws:s3:::{your-s3-bucket-name}","arn:aws:s3:::{your-s3-bucket-name}/*"]},{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:CreateLogGroup","logs:PutLogEvents","logs:GetLogEvents","logs:GetLogRecord","logs:GetLogGroupFields","logs:GetQueryResults"],"Resource": [サンプルポリシー

76

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{yourenvironment-name}-*"]},{"Effect": "Allow","Action": ["logs:DescribeLogGroups"],"Resource": [
"*"
]
},
{
"Effect": "Allow","Action": ["s3:GetAccountPublicAccessBlock"],"Resource": [
"*"
]
},
{
"Effect": "Allow","Action": "cloudwatch:PutMetricData","Resource": "*"},{"Effect": "Allow","Action": ["sqs:ChangeMessageVisibility","sqs:DeleteMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl","sqs:ReceiveMessage","sqs:SendMessage"],"Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*"},{"Effect": "Allow","Action": ["kms:Decrypt","kms:DescribeKey",

サンプルポリシー

77

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"kms:GenerateDataKey*","kms:Encrypt"],"Resource": "arn:aws:kms:{your-region}:{your-account-id}:key/{your-kms-cmkid}","Condition": {"StringLike": {"kms:ViaService": ["sqs.{your-region}.amazonaws.com","s3.{your-region}.amazonaws.com"
]
}
}
}
]
}

次に、ユーザーに代わってアクションを実行MWAAするために、Amazon がこのロールを引き受けることを許可する必要があります。これは、IAMコンソール を使用してこの実行ロー
ルの信頼されたエンティティのリストに "airflow.amazonaws.com"および "airflowenv.amazonaws.com"サービスプリンシパルを追加するか、 を使用して IAM create-role コマンドを使用して、これらのサービスプリンシパルをこの実行ロールの継承ロールポリシードキュメントに配置することで実行できます AWS CLI。ロール割り当てポリシーのサンプルは以下にあります。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"]},"Action": "sts:AssumeRole"}]}

次に、次のJSONポリシーをカスタマーマネージドキー にアタッチします。このポリシーは、
kms:EncryptionContext条件キープレフィックスを使用して、 CloudWatch Logs の Apache
Airflow ロググループへのアクセスを許可します。

サンプルポリシー

78

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Sid": "Allow logs access","Effect": "Allow","Principal": {"Service": "logs.{your-region}.amazonaws.com"},"Action": ["kms:Encrypt*","kms:Decrypt*","kms:ReEncrypt*","kms:GenerateDataKey*","kms:Describe*"],"Resource": "*",
"Condition": {"ArnLike": {"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:{your-region}:{youraccount-id}:*"}}}AWS 所有キーのサンプルポリシー
次の例は、AWS カスタマーマネージドキーに使用できる実行ロールポリシーを示しています。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "airflow:PublishMetrics","Resource": "arn:aws:airflow:{your-region}:{your-account-id}:environment/{your-environment-name}"},{"Effect": "Deny","Action": "s3:ListAllMyBuckets","Resource": ["arn:aws:s3:::{your-s3-bucket-name}","arn:aws:s3:::{your-s3-bucket-name}/*"]},サンプルポリシー

79

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Effect": "Allow","Action": ["s3:GetObject*","s3:GetBucket*","s3:List*"],"Resource": ["arn:aws:s3:::{your-s3-bucket-name}","arn:aws:s3:::{your-s3-bucket-name}/*"]},{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:CreateLogGroup","logs:PutLogEvents","logs:GetLogEvents","logs:GetLogRecord","logs:GetLogGroupFields","logs:GetQueryResults"],"Resource": ["arn:aws:logs:{your-region}:{your-account-id}:log-group:airflow-{yourenvironment-name}-*"]},{"Effect": "Allow","Action": ["logs:DescribeLogGroups"],"Resource": [
"*"
]
},
{
"Effect": "Allow","Action": ["s3:GetAccountPublicAccessBlock"],"Resource": ["*"サンプルポリシー

80

Amazon Managed Workflows for Apache Airflow

ユーザーガイド]},{"Effect": "Allow","Action": "cloudwatch:PutMetricData","Resource": "*"},{"Effect": "Allow","Action": ["sqs:ChangeMessageVisibility","sqs:DeleteMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl","sqs:ReceiveMessage","sqs:SendMessage"],"Resource": "arn:aws:sqs:{your-region}:*:airflow-celery-*"},{"Effect": "Allow","Action": ["kms:Decrypt","kms:DescribeKey","kms:GenerateDataKey*","kms:Encrypt"],"NotResource": "arn:aws:kms:*:{your-account-id}:key/*","Condition": {"StringLike": {"kms:ViaService": ["sqs.{your-region}.amazonaws.com"
]
}
}
}
]
}

次のステップ• あなたと Apache Airflow ユーザーが Amazon MWAA環境へのアクセス で環境にアクセスするために必要な権限について説明します。
次のステップ81

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 暗号化のためのカスタマーマネージドキーの使用 についてはこちら。
• その他のカスタマー管理ポリシーの例をご覧ください。

サービス間での不分別な代理処理の防止
混乱した代理問題は、アクションを実行するためのアクセス許可を持たないエンティティが、より特権のあるエンティティにアクションの実行を強制できてしまう場合に生じる、セキュリティ上の問題です。では AWS、サービス間のなりすましにより、混乱した代理問題が発生する可能性があります。サービス間でのなりすましは、1 つのサービス (呼び出し元サービス) が、別のサービス (呼び出
し対象サービス) を呼び出すときに発生する可能性があります。呼び出し元サービスは、本来ならアクセスすることが許可されるべきではない方法でその許可を使用して、別のお客様のリソースに対する処理を実行するように操作される場合があります。これを防ぐため、 AWS では、アカウント内のリソースへのアクセス権が付与されたサービスプリンシパルですべてのサービスのデータを保護するために役立つツールを提供しています。
環境の実行ロールで aws:SourceArnおよび aws:SourceAccount グローバル条件コンテキス
トキーを使用して、Amazon が別のサービスにMWAA付与するリソースへのアクセス許可を制
限することをお勧めします。クロスサービスアクセスにリソースを 1 つだけ関連付けたい場合
は、aws:SourceArn を使用します。そのアカウント内のリソースをクロスサービスの使用に関連付けることを許可する場合は、aws:SourceAccount を使用します。
混乱した代理問題から保護する最も効果的な方法は、リソースARNがいっぱいになった
aws:SourceArn グローバル条件コンテキストキーを使用することです。リソースARNの全体がわからない場合や、複数のリソースを指定する場合は、 の不明な部分にワイルドカード
文字 (*) を含むaws:SourceArnグローバルコンテキスト条件キーを使用しますARN。例えば、arn:aws:airflow:*:123456789012:environment/* と指定します。
の値はARN、実行ロールを作成する Amazon MWAA環境 aws:SourceArnである必要があります。
次の例では、お使いの環境内の実行ロール信頼ポリシーで aws:SourceArn および
aws:SourceAccount グローバル条件コンテキストキーを使用して、混乱した代理問題を回避する方法を示します。新しい実行ロールを作成する際、次の信頼ポリシーを使用できます。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {サービス間での不分別な代理処理の防止

82

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Service": ["airflow.amazonaws.com","airflow-env.amazonaws.com"]},"Action": "sts:AssumeRole","Condition":{"ArnLike":{"aws:SourceArn":"arn:aws:airflow:yourregion:123456789012:environment/your-environment-name"},"StringEquals":{"aws:SourceAccount":"123456789012"
}
}
}
]
}

Apache Airflow のアクセスモード
Amazon Managed Workflows for Apache Airflow コンソールには、お使いの環境上の Apache Airflow
ウェブサーバーへのプライベートルーティングまたはパブリックルーティングを構成するための組
み込みオプションが含まれています。このガイドでは、Amazon Managed Workflows for Apache
Airflow 環境で Apache Airflow ウェブサーバーで使用できるアクセスモードと、VPCプライベート
ネットワークオプションを選択した場合に Amazon で設定する必要がある追加のリソースについて説明します。
目次• Apache Airflow のアクセスモード• パブリックネットワーク• プライベートネットワーク• アクセスモードの概要• パブリックネットワークアクセスモード• プライベートネットワークアクセスモード• プライベートアクセスモードとパブリックアクセスモードのセットアップ• パブリックネットワークのセットアップ• プライベートネットワークのセットアップ• Apache Airflow ウェブサーバーのVPCエンドポイントへのアクセス (プライベートネットワークア
クセス）
Apache Airflow のアクセスモード

83

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow のアクセスモード
Apache Airflow ウェブサーバーのルーティングは、プライベートルーティングまたはパブリックルー
ティングを選択できます。プライベートルーティングを有効にするには、プライベートネットワー
クを選択します。これにより、Apache Airflow ウェブサーバーへのユーザーアクセスが Amazon 内
でに制限されますVPC。パブリックルーティングを有効にするには、パブリックネットワークを選択します。これにより、ユーザーはインターネット経由で Apache Airflow ウェブサーバーにアクセスできます。

パブリックネットワーク
次のアーキテクチャ図は、パブリックウェブサーバーを備えた Amazon MWAA環境を示しています。

パブリックネットワークアクセスモードでは、環境 のポリシーへのアクセス権を付与されたユー
ザーが、インターネット経由で Apache Airflow UI にアクセスできるようになります。 IAM
次の図は、Amazon MWAAコンソールでパブリックネットワークオプションの場所を示しています。

Apache Airflow のアクセスモード

84

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プライベートネットワーク
次のアーキテクチャ図は、プライベートウェブサーバーを備えた Amazon MWAA環境を示しています。

プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、環境 のポリシー
へのアクセスが許可されている Amazon 内のVPCユーザーに制限します。 IAM
プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python
Wheel アーカイブ (.whl) にパッケージ化し、その後、requirements.txt で .whl を参照する必要があります。wheel を使用して依存関係をパッケージ化およびインストールする手順については、「Python wheel を使用した依存関係の管理」を参照してください。
次の図は、Amazon MWAAコンソールでプライベートネットワークオプションを見つける場所を示しています。

Apache Airflow のアクセスモード

85

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アクセスモードの概要
このセクションでは、パブリックネットワークまたはプライベートネットワークアクセスモードを選
択VPCしたときに Amazon で作成されるVPCエンドポイント (AWS PrivateLink) について説明します。

パブリックネットワークアクセスモード
Apache Airflow ウェブサーバーでパブリックネットワークアクセスモードを選択した場合、ネット
ワークトラフィックはインターネット経由でパブリックにルーティングされます。
• Amazon MWAA は、Amazon Aurora PostgreSQL メタデータデータベースのVPCインターフェイ
スエンドポイントを作成します。エンドポイントは、プライベートサブネットにマッピングされたアベイラビリティーゾーンに作成され、他の AWS アカウントから独立しています。
• MWAA 次に、Amazon はプライベートサブネットの IP アドレスをインターフェイスエンドポイン
トにバインドします。これは、Amazon の各アベイラビリティーゾーンから単一の IP をバインドするベストプラクティスをサポートするように設計されていますVPC。

プライベートネットワークアクセスモード
Apache Airflow ウェブサーバー のプライベートネットワークアクセスモードを選択した場合、ネッ
トワークトラフィックは Amazon 内でプライベートにルーティングされますVPC。
• Amazon MWAAは、Apache Airflow ウェブサーバー のVPCインターフェイスエンドポイントと、Amazon Aurora PostgreSQL メタデータデータベースのインターフェイスエンドポイントを作成します。エンドポイントは、プライベートサブネットにマッピングされたアベイラビリティー
ゾーンに作成され、他の AWS アカウントから独立しています。
• MWAA 次に、Amazon はプライベートサブネットの IP アドレスをインターフェイスエンドポイン
トにバインドします。これは、Amazon の各アベイラビリティーゾーンから単一の IP をバインドするベストプラクティスをサポートするように設計されていますVPC。
詳細については、「the section called “Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例”」を参照してください。

プライベートアクセスモードとパブリックアクセスモードのセットアップ
次のセクションでは、環境に合わせて選択した Apache Airflow アクセスモードに基づいて必要となる追加のセットアップと構成について説明します。
アクセスモードの概要

86

Amazon Managed Workflows for Apache Airflow

ユーザーガイドパブリックネットワークのセットアップ
Apache Airflow ウェブサーバーのパブリックネットワークオプションを選択した場合、環境を作成した後に Apache Airflow UI を使い始めることができます。
ユーザーのアクセスと、環境が他の AWS のサービスを使用するためのアクセス許可を設定するには、次のステップを実行する必要があります。
1.

アクセス許可を追加します。Amazon には、他の AWS のサービスを使用するためのアクセ
ス許可MWAAが必要です。環境を作成すると、Amazon は Amazon Elastic Container Registry(Amazon ECR）、 CloudWatch Logs、および Amazon に対して特定のIAMアクションを使用できるようにするサービスにリンクされたロールMWAAを作成しますEC2。
これらのサービスに対して追加のアクションを使用するアクセス許可を追加したり、実行ロールにアクセス許可を追加することで他の AWS サービスを使用するアクセス許可を追加したりできます。詳細については、「Amazon MWAA 実行ロール」を参照してください。

2.

ユーザーポリシーを作成します。環境と Apache Airflow UI へのアクセスを設定するには、ユーザーが複数のIAMポリシーを作成する必要がある場合があります。詳細については、「Amazon
MWAA環境へのアクセス」を参照してください。

プライベートネットワークのセットアップ
Apache Airflow ウェブサーバー のプライベートネットワークオプションを選択した場合は、ユー
ザーのアクセス、環境が他の AWS のサービスを使用するためのアクセス許可を設定し、コンピュー
タVPCから Amazon のリソースにアクセスするメカニズムを作成する必要があります。
1.

アクセス許可を追加します。Amazon には、他の AWS のサービスを使用するためのアクセ
ス許可MWAAが必要です。環境を作成すると、Amazon は Amazon Elastic Container Registry(Amazon ECR）、 CloudWatch Logs、および Amazon に対して特定のIAMアクションを使用できるようにするサービスにリンクされたロールMWAAを作成しますEC2。
これらのサービスに対して追加のアクションを使用するアクセス許可を追加したり、実行ロールにアクセス許可を追加することで他の AWS サービスを使用するアクセス許可を追加したりできます。詳細については、「Amazon MWAA 実行ロール」を参照してください。

2.

ユーザーポリシーを作成します。環境と Apache Airflow UI へのアクセスを設定するには、ユーザーが複数のIAMポリシーを作成する必要がある場合があります。詳細については、「Amazon
MWAA環境へのアクセス」を参照してください。

プライベートアクセスモードとパブリックアクセスモードのセットアップ

87

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

ネットワークアクセスを有効にします。Apache Airflow ウェブサーバー のVPCエンドポイント(AWS PrivateLink) に接続VPCするためのメカニズムを Amazon で作成する必要があります。例
えば、 を使用してコンピュータからVPNトンネルを作成するとします AWS Client VPN。

Apache Airflow ウェブサーバーのVPCエンドポイントへのアクセス (プライベートネットワークアクセス）
プライベートネットワークオプションを選択した場合は、Amazon で Apache Airflow ウェブサー
バー のVPCエンドポイント (AWS PrivateLink) VPCにアクセスするメカニズムを作成する必要があります。これらのリソースにはVPC、Amazon MWAA環境と同じ Amazon 、VPCセキュリティグ
ループ、プライベートサブネットを使用することをお勧めします。
詳細については、VPC「エンドポイント へのアクセスの管理」を参照してください。

Apache Airflow ウェブサーバーのVPCエンドポイントへのアクセス (プライベートネットワークアクセス）88Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow へのアクセス
Amazon MWAA では、Apache Airflow ユーザーインターフェイス (UI) コンソール、Apache Airflow
CLI、および Apache Airflow REST API の複数の方法を使用して Apache Airflow 環境にアクセスできます。Amazon MWAA コンソールを使って Apache Airflow UI で DAG を表示して呼び出す
か、Amazon MWAA APIを使ってトークンを取得して DAG を呼び出すことができます。このセク
ションでは、Apache Airflow UI にアクセスするために必要なパーミッション、コマンドシェルで直接 Amazon MWAA API コールを行うためのトークンの生成方法、Apache Airflow CLI でサポートされているコマンドについて説明します。
トピック• 前提条件• Apache Airflow UI を開く• Apache Airflow へのログイン• Apache Airflow ウェブサーバーアクセストークンを作成する• Apache Airflow ウェブサーバーのカスタムドメインの設定• Apache Airflow CLI トークンの作成• Apache Airflow の使用 REST API• Apache Airflow CLI コマンドリファレンス

前提条件
次のセクションでは、このセクションのコマンドとスクリプトを使用するために必要な準備手順について説明します。

アクセス• AWS の Amazon MWAA アクセス許可ポリシーへの AWS Identity and Access Management (IAM)の アカウントアクセスApache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess。
• AWS Amazon MWAA アクセス許可ポリシー への AWS Identity and Access Management(IAM) での アカウントアクセスフルアクセスポリシーAPIとコンソールアクセスポリシー:
AmazonMWAAFullApiAccess。

前提条件

89

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS CLIAWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
• AWS CLI – を使用したクイック設定aws configure。

Apache Airflow UI を開く
以下の図は、Amazon MWAA コンソールの Apache Airflow UI へのリンクを示しています。

Apache Airflow へのログイン
Apache Airflow UI を表示するには、 AWS Identity and Access Management (IAM) AWS のアカウン
トのApache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccessアクセス許可が必要です。
Apache Airflow UI にアクセスするには1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[Airflow UI を開く] を選択します。

Apache Airflow ウェブサーバーアクセストークンを作成する
このページのコマンドを使用して、ウェブサーバーアクセストークンを作成できます。アクセストー
クンを使用すると、Amazon MWAA環境にアクセスできます。例えば、トークンを取得し、Amazon
MWAA を使用してDAGsプログラムでデプロイできますAPIs。次のセクションでは、、bash スクリ
AWS CLI

90

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プト AWS CLI、 POSTAPIリクエスト、または Python スクリプトを使用して Apache Airflow ウェブ
ログイントークンを作成する手順について説明します。レスポンスでリターンされるトークンは 60秒間有効です。
目次• 前提条件• アクセス• AWS CLI
• の使用 AWS CLI• Bash スクリプトを使用する• Python スクリプトを使用します• 次のステップ

前提条件
以下のセクションでは、このページのコマンドとスクリプトを使用するために必要な準備手順について説明します。

アクセス• AWS AWS Identity and Access Management （IAM) の アカウントから、 の Amazon
アクセスMWAA許可ポリシーへのアクセスApache Airflow UI アクセスポリシー:
AmazonMWAAWebServerAccess。
• AWS Amazon アクセスMWAA許可ポリシー への AWS Identity and Access Management（IAM) の アカウントアクセスフルアクセスポリシーAPIとコンソールアクセスポリシー:
AmazonMWAAFullApiAccess。

AWS CLIAWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
• AWS CLI – を使用したクイック設定aws configure。
前提条件

91

Amazon Managed Workflows for Apache Airflow

ユーザーガイドの使用 AWS CLI
次の例では、 の create-web-login-token コマンドを使用して Apache Airflow ウェブログイントーク
ン AWS CLI を作成します。
aws mwaa create-web-login-token --name YOUR_ENVIRONMENT_NAME

Bash スクリプトを使用する
次の例では、bash スクリプトを使用して の create-web-login-token コマンドを呼び出し AWS
CLI 、Apache Airflow ウェブログイントークンを作成します。
1.

以下のコードサンプルの内容をコピーし、ローカルに get-web-token.sh として保存します。
#!/bin/bash
HOST=YOUR_HOST_NAME
YOUR_URL=https://$HOST/aws_mwaa/aws-console-sso?login=true#
WEB_TOKEN=$(aws mwaa create-web-login-token --name YOUR_ENVIRONMENT_NAME --query
WebToken --output text)
echo $YOUR_URL$WEB_TOKEN

2.

のプレースホルダーを置き換える red YOUR_HOST_NAME および用YOUR_ENVIRONMENT_NAME。たとえば、パブリックネットワークのホスト名は次のようになります (https://を除く)。
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

3.

(オプション) macOS と Linux ユーザーは、次のコマンドを実行して、スクリプトが実行可能であることを確認しなければならないことがあります。
chmod +x get-web-token.sh

4.

次のスクリプトを実行して、Web へのログイントークンを作成します。
./get-web-token.sh5.

コマンドプロンプトに次のように表示されるはずです。

の使用 AWS CLI

92

Amazon Managed Workflows for Apache Airflow

ユーザーガイドhttps://123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com/
aws_mwaa/aws-console-sso?login=true#{your-web-login-token}

Python スクリプトを使用します
以下の例では、Python スクリプトの boto3 create_web_login_token メソッドを使用して、Apache
Airflow の Web ログイン・トークンを作成しています。このスクリプトは Amazon の外部で実行できますMWAA。必要なことは、boto3 ライブラリをインストールすることだけです。ライブラリを
インストールするための仮想環境を作成することもできます。アカウントのAWS 認証情報が設定されていることを前提としています。
1.

以下のコードサンプルの内容をコピーし、ローカルに create-web-login-token.py として保存します。
import boto3
mwaa = boto3.client('mwaa')
response = mwaa.create_web_login_token(
Name="YOUR_ENVIRONMENT_NAME")
webServerHostName = response["WebServerHostname"]
webToken = response["WebToken"]
airflowUIUrl = 'https://{0}/aws_mwaa/aws-console-sso?
login=true#{1}'.format(webServerHostName, webToken)
print("Here is your Airflow UI URL: ")print(airflowUIUrl)

2.

のプレースホルダーを置き換える red YOUR_ENVIRONMENT_NAME で許可されるアクションの形式について説明します。

3.

次のスクリプトを実行して、Web へのログイントークンを作成します。
python3 create-web-login-token.py

次のステップ• でウェブログイントークンの作成に使用される Amazon MWAAAPIオペレーションについて説明しますCreateWebLoginToken。

Python スクリプトを使用します93

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow ウェブサーバーのカスタムドメインの設定
Amazon Managed Workflows for Apache Airflow (Amazon MWAA) では、マネージド Apache Airflow
ウェブサーバーのカスタムドメインを設定できます。カスタムドメインを使用すると、Apache
Airflow UI、Apache Airflow CLI、または Apache Airflow ウェブサーバーを使用して、環境の Amazon
MWAA マネージド Apache Airflow ウェブサーバーにアクセスできます。
Note
カスタムドメインは、インターネットアクセスのないプライベートウェブサーバーでのみ使用できます。

Amazon MWAA のカスタムドメインのユースケース
1. でクラウドアプリケーション間でウェブサーバードメインを共有する AWS — カスタムドメインを使用すると、生成されたサービスドメイン名ではなく、ウェブサーバーにアクセスするためのユーザーフレンドリーな URL を定義できます。このカスタムドメインを保存し、アプリケーショ
ンに環境変数として共有できます。
2. プライベートウェブサーバーへのアクセス — インターネットにアクセスできない VPC 内のウェ
ブサーバーのアクセスを設定する場合、カスタムドメインを使用すると URL リダイレクトのワー
クフローが簡素化されます。
トピック• カスタムドメインを設定する• ネットワークインフラストラクチャをセットアップする

カスタムドメインを設定する
カスタムドメイン機能を設定するには、Amazon MWAA 環境を作成または更新するときに、webserver.base_urlApache Airflow 設定を介してカスタムドメイン値を指定する必要があります。カスタムドメイン名には、次の制約が適用されます。
• 値は、プロトコルまたはパスを含まない完全修飾ドメイン名 (FQDN) である必要があります。例
えば your-custom-domain.com です。

カスタムドメインのセットアップ

94

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon MWAA は URL にパスを許可しません。例えば、 your-custom-domain.com/dags/は有効なカスタムドメイン名ではありません。
• URL の長さは 255 文字に制限されています。
• 空の文字列を指定すると、デフォルトでは、Amazon MWAA によって生成されたウェブサーバー
URL を使用して環境が作成されます。
次の例は AWS CLI 、 を使用してカスタムウェブサーバードメイン名で環境を作成する方法を示しています。
$ aws mwaa create-environment \--name my-mwaa-env \--source-bucket-arn arn:aws:s3:::my-bucket \--airflow-configuration-options '{"webserver.base_url":"my-custom-domain.com"}' \--network-configuration '{"SubnetIds":["subnet-0123456789abcdef","subnetfedcba9876543210"]}' \--execution-role-arn arn:aws:iam::123456789012:role/my-execution-role

環境を作成または更新したら、カスタムドメイン経由でプライベートウェブサーバーにアクセスするためのネットワークインフラストラクチャを AWS アカウントで設定する必要があります。
デフォルトのサービス生成 URL に戻すには、プライベート環境を更新し、 webserver.base_url
設定オプションを削除します。

ネットワークインフラストラクチャをセットアップする
次の手順を使用して、 AWS アカウントのカスタムドメインで使用するために必要なネットワークイ
ンフラストラクチャを設定します。
1. Amazon VPC エンドポイントネットワークインターフェイス (ENI) の IP アドレスを取得します。
これを行うには、まず get-environmentを使用して環境WebserverVpcEndpointServiceのを検索します。
$ aws mwaa get-environment --name your-environment-name

成功すると、次のような出力が表示されます。
{"Environment": {ネットワークインフラストラクチャをセットアップする95

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"AirflowConfigurationOptions": {},"AirflowVersion": "latest-version","Arn": "environment-arn","CreatedAt": "2024-06-01T01:00:00-00:00","DagS3Path": "dags",.
.
.
"WebserverVpcEndpointService": "web-server-vpc-endpoint-service","WeeklyMaintenanceWindowStart": "TUE:21:30"}}

WebserverVpcEndpointService 値を書き留めて、次の Amazon EC2 describe-vpcendpoints コマンドweb-server-vpc-endpoint-serviceで に使用します。次のコマンド-filters Name=service-name,Values=web-server-vpc-endpoint-service-idで を使用します。
2. Amazon VPC エンドポイントの詳細を取得します。このコマンドは、特定のサービス名に一致す
る Amazon VPC エンドポイントの詳細を取得し、エンドポイント ID と関連するネットワークイ
ンターフェイス IDs をテキスト形式で返します。
aws ec2 describe-vpc-endpoints \--filters Name=service-name,Values=web-server-vpc-endpoint-service \--query 'VpcEndpoints[*].
{EndpointId:VpcEndpointId,NetworkInterfaceIds:NetworkInterfaceIds}' \--output text$

3. ネットワークインターフェイスの詳細を取得します。このコマンドは、前のステップで識別された Amazon VPC エンドポイントに関連付けられた各ネットワークインターフェイスのプライベー
ト IP アドレスを取得します。
$ for eni_id in $(aws ec2 describe-vpc-endpoints \--filters Name=service-name,Values=service-id \--query 'VpcEndpoints[*].NetworkInterfaceIds' \--output text); do
aws ec2 describe-network-interfaces \--network-interface-ids $eni_id \--query 'NetworkInterfaces[*].PrivateIpAddresses[*].PrivateIpAddress' \--output text
ネットワークインフラストラクチャをセットアップする96

Amazon Managed Workflows for Apache Airflow

ユーザーガイドdone

4. create-target-group を使用して新しいターゲットグループを作成します。このターゲット
グループを使用して、ウェブサーバーの Amazon VPC エンドポイントの IP アドレスを登録します。
$ aws elbv2 create-target-group \--name new-target-group-namne \--protocol HTTPS \--port 443 \--vpc-id web-server-vpc-id \--target-type ip \--health-check-protocol HTTPS \--health-check-port 443 \--health-check-path / \--health-check-enabled \--matcher 'HttpCode="200,302"'

register-targets コマンドを使用して IP アドレスを登録します。
$ aws elbv2 register-targets \--target-group-arn target-group-arn \--targets Id=ip-address-1 Id=ip-address-2

5. ACM 証明書をリクエストします。既存の証明書を使用している場合は、このステップをスキップします。
$ aws acm request-certificate \--domain-name my-custom-domain.com \--validation-method DNS

6. Application Load Balancer を設定します。まず、ロードバランサーを作成し、次にロードバラン
サーのリスナーを作成します。前のステップで作成した ACM 証明書を指定します。
$ aws elbv2 create-load-balancer \--name my-mwaa-lb \--type application \--subnets subnet-id-1 subnet-id-2$ aws elbv2 create-listener \--load-balancer-arn load-balancer-arn \ネットワークインフラストラクチャをセットアップする97

Amazon Managed Workflows for Apache Airflow

ユーザーガイド--protocol HTTPS \--port 443 \--ssl-policy ELBSecurityPolicy-2016-08 \--certificates CertificateArn=acm-certificate-arn \--default-actions Type=forward,TargetGroupArn=target-group-arn

プライベートサブネットで Network Load Balancer を使用する場合は、ウェブサーバーにアクセスするための踏み台ホストまたはAWS VPN トンネルを設定します。
7. ドメインの Route 53 を使用してホストゾーンを作成します。
$ aws route53 create-hosted-zone --name my-custom-domain.com \--caller-reference 1

ドメインの A レコードを作成します。を使用してこれを行うには AWS CLI、 を使用してホス
トゾーン ID を取得しlist-hosted-zones-by-name、 でレコードを適用しますchangeresource-record-sets。
$ HOSTED_ZONE_ID=$(aws route53 list-hosted-zones-by-name \--dns-name my-custom-domain.com \--query 'HostedZones[0].Id' --output text)$ aws route53 change-resource-record-sets \--hosted-zone-id $HOSTED_ZONE_ID \--change-batch '{"Changes": [{"Action": "CREATE","ResourceRecordSet": {"Name": "my-custom-domain.com","Type": "A","AliasTarget": {"HostedZoneId": "load-balancer-hosted-zone-id>","DNSName": "load-balancer-dns-name","EvaluateTargetHealth": true
}
}
}
]
}'

ネットワークインフラストラクチャをセットアップする98

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

8. Application Load Balancer が配置されているパブリックサブネットからの HTTPS トラフィックのみを許可することで、最小特権の原則に従ってウェブサーバー Amazon VPC エンドポイントのセ
キュリティグループルールを更新します。次の JSON をローカルに保存します。例えば、 などですsg-ingress-ip-permissions.json。
{"IpProtocol": "tcp","FromPort": 443,
"ToPort": 443,
"UserIdGroupPairs": [{"GroupId": "load-balancer-security-group-id"}],"IpRanges": [{"CidrIp": "public-subnet-1-cidr"},{"CidrIp": "public-subnet-2-cidr"}]}

次の Amazon EC2 コマンドを実行して、進入セキュリティグループのルールを更新します。のJSON ファイルを指定します--ip-permissions。
$ aws ec2 authorize-security-group-ingress \--group-id <security-group-id> \--ip-permissions file://sg-ingress-ip-permissions.json

次の Amazon EC2 コマンドを実行して、出力ルールを更新します。
$ aws ec2 authorize-security-group-egress \--group-id webserver-vpc-endpoint-security-group-id \--protocol tcp \--port 443 \--source-group load-balancer-security-group-id

ネットワークインフラストラクチャをセットアップする99

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA コンソールを開き、Apache Airflow UI に移動します。ここで使用されている
Application Load Balancer ではなくプライベートサブネットに Network Application Load Balancer を設定する場合は、次のいずれかのオプションを使用してウェブサーバーにアクセスする必要があります。
• the section called “チュートリアル: Linux 踏み台ホスト”• the section called “チュートリアル: AWS Client VPN”

Apache Airflow CLI トークンの作成
このページのコマンドを使用して CLI トークンを生成し、Apache Airflow 用の Amazon マネージドワークフロー API 呼び出しをコマンドシェルで直接行うことができます。例えば、トークンを取得し、Amazon MWAA API を使用してプログラムで DAG をデプロイできます。次のセクションでは、AWS CLI、curl スクリプト、Python スクリプト、または bash スクリプトを使用して Apache
Airflow CLI トークンを作成する手順について説明します。レスポンスでリターンされるトークンは
60 秒間有効です。
Note
この AWS CLI トークンは同期シェルアクションの代わりとなるもので、非同期 API コマン
ドの代わりとなるものではありません。そのため、同時実行には制限があります。ウェブ
サーバーがユーザーに応答し続けるためには、前の AWS CLI リクエストが正常に完了するまで新しいリクエストを開かないことが推奨されます。

目次• 前提条件• アクセス• AWS CLI• AWS CLI を使用する場合• curl スクリプトを使用する• Bash スクリプトを使用する• Python スクリプトを使用します• 次のステップ
Apache Airflow CLI トークン

100

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

前提条件
以下のセクションでは、このページのコマンドとスクリプトを使用するために必要な準備手順について説明します。

アクセス• Amazon MWAA アクセス権限ポリシー Apache Airflow UI アクセスポリシー:
AmazonMWAAWebServerAccess への AWS Identity and Access Management (IAM) の AWS アカ
ウントアクセス。
• Amazon MWAA アクセス権限ポリシー フルアクセスポリシーAPIとコンソールアクセスポリシー:
AmazonMWAAFullApiAccess への AWS Identity and Access Management (IAM) の AWS アカウン
トアクセス。

AWS CLIAWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS
サービスとやり取りするためのオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• 「AWS CLI - バージョン 2 のインストール」• 「AWS CLI - aws configure によるクイック設定」

AWS CLI を使用する場合
次の例では、AWS CLI 内のcreate-cli-token コマンドを使用して Apache Airflow CLI トークンを作成
しています。
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME

curl スクリプトを使用する
次の例では、AWS CLI 内の curl スクリプトを使用して create-web-login-token コマンドを呼び出し、Apache Airflow ウェブサーバ上のエンドポイントを介して Apache Airflow CLI を呼び出していま
す。

前提条件

101

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v2
1.

テキストファイルから curl ステートメントをコピーし、コマンドシェルに貼り付けます。
Note
クリップボードにコピーしたら、シェルメニューから [編集] > [貼り付け] を使用する必要がある場合があります。

CLI_JSON=$(aws mwaa --region YOUR_REGION create-cli-token -name YOUR_ENVIRONMENT_NAME) \&& CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \&& WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \&& CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \--header "Authorization: Bearer $CLI_TOKEN" \--header "Content-Type: text/plain" \--data-raw "dags trigger YOUR_DAG_NAME") \&& echo "Output:" \&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \&& echo "Errors:" \&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode2.

プレースホルダー を、環境の AWS リージョンの YOUR_REGION、YOUR_DAG_NAME、および YOUR_ENVIRONMENT_NAME に置き換えます。たとえば、パブリックネットワークのホス
ト名は次のようになります (https://を除く)。
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

3.

コマンドプロンプトに次のように表示されるはずです。
{"stderr":"<STDERR of the CLI execution (if any), base64 encoded>","stdout":"<STDOUT of the CLI execution, base64 encoded>"}

Apache Airflow v1
1.

テキストファイルから cURL ステートメントをコピーし、コマンドシェルに貼り付けます。

curl スクリプトを使用する

102

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
クリップボードにコピーしたら、シェルメニューから [編集] > [貼り付け] を使用する必要がある場合があります。

CLI_JSON=$(aws mwaa --region YOUR_REGION create-cli-token -name YOUR_ENVIRONMENT_NAME) \&& CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \&& WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \&& CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \--header "Authorization: Bearer $CLI_TOKEN" \--header "Content-Type: text/plain" \--data-raw "trigger_dag YOUR_DAG_NAME") \&& echo "Output:" \&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \&& echo "Errors:" \&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode2.

プレースホルダー を、環境の AWS リージョンの YOUR_REGION、YOUR_DAG_NAME、および YOUR_HOST_NAME に置き換えます。たとえば、パブリックネットワークのホスト名は次のようになります (https://を除く)。
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

3.

コマンドプロンプトに次のように表示されるはずです。
{"stderr":"<STDERR of the CLI execution (if any), base64 encoded>","stdout":"<STDOUT of the CLI execution, base64 encoded>"}4.

プレースホルダーを YOUR_ENVIRONMENT_NAME と YOUR_DAG_NAME に置き換えます。

Bash スクリプトを使用する
次の例では、bash スクリプトを使用して AWS CLI 内のcreate-cli-token コマンドを呼び出し、Apache Airflow CLI トークンを作成しています。
Bash スクリプトを使用する

103

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v2
1.

以下のコードサンプルの内容をコピーし、ローカルに get-cli-token.sh として保存します。
# brew install jq
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | export CLI_TOKEN=$(jq-r .CliToken) && curl --request POST "https://YOUR_HOST_NAME/aws_mwaa/cli" \--header "Authorization: Bearer $CLI_TOKEN" \--header "Content-Type: text/plain" \--data-raw "dags trigger YOUR_DAG_NAME"

2.

##のプレースホルダーを、YOUR_ENVIRONMENT_NAME、YOUR_HOST_NAME および
YOUR_DAG_NAME に置き換えます。たとえば、パブリックネットワークのホスト名は次のよ
うになります (https://を除く)。
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

3.

(オプション) macOS と Linux ユーザーは、次のコマンドを実行して、スクリプトが実行可能であることを確認しなければならないことがあります。
chmod +x get-cli-token.sh

4.

次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
./get-cli-token.sh

Apache Airflow v1
1.

以下のコードサンプルの内容をコピーし、ローカルに get-cli-token.sh として保存します。
# brew install jq
aws mwaa create-cli-token --name YOUR_ENVIRONMENT_NAME | export CLI_TOKEN=$(jq-r .CliToken) && curl --request POST "https://YOUR_HOST_NAME/aws_mwaa/cli" \--header "Authorization: Bearer $CLI_TOKEN" \--header "Content-Type: text/plain" \--data-raw "trigger_dag YOUR_DAG_NAME"

Bash スクリプトを使用する

104

Amazon Managed Workflows for Apache Airflow

2.

ユーザーガイド##のプレースホルダーを、YOUR_ENVIRONMENT_NAME、YOUR_HOST_NAME および
YOUR_DAG_NAME に置き換えます。たとえば、パブリックネットワークのホスト名は次のよ
うになります (https://を除く)。
123456a0-0101-2020-9e11-1b159eec9000.c2.us-east-1.airflow.amazonaws.com

3.

(オプション) macOS と Linux ユーザーは、次のコマンドを実行して、スクリプトが実行可能であることを確認しなければならないことがあります。
chmod +x get-cli-token.sh

4.

次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
./get-cli-token.sh

Python スクリプトを使用します
次の例では、Python スクリプトで boto3 create_cli_token メソッドを使用して Apache Airflow CLI
トークンを作成し、DAG をトリガーします。このスクリプトは、Amazon MWAA の外部で実行できます。必要なことは、boto3 ライブラリをインストールすることだけです。ライブラリをインストー
ルするための仮想環境を作成することもできます。アカウントに AWS 認証情報が設定されていることを前提としています。
Apache Airflow v2
1.

以下のコードサンプルの内容をコピーし、ローカルに create-cli-token.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR

Python スクリプトを使用します

105

Amazon Managed Workflows for Apache Airflow

ユーザーガイドCOPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import boto3
import json
import requests
import base64
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
mwaa_cli_command = 'dags trigger'
client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name)mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']mwaa_webserver_hostname = 'https://{0}/aws_mwaa/
cli'.format(mwaa_cli_token['WebServerHostname'])raw_data = '{0} {1}'.format(mwaa_cli_command, dag_name)mwaa_response = requests.post(
mwaa_webserver_hostname,headers={'Authorization': mwaa_auth_token,'Content-Type': 'text/plain'},
data=raw_data)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')
print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)

2.

プレースホルダーを YOUR_ENVIRONMENT_NAME と YOUR_DAG_NAME に置き換えます。

Python スクリプトを使用します

106

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
python3 create-cli-token.py

Apache Airflow v1
1.

以下のコードサンプルの内容をコピーし、ローカルに create-cli-token.py として保存します。
import boto3
import json
import requests
import base64
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
mwaa_cli_command = 'trigger_dag'client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name)mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']mwaa_webserver_hostname = 'https://{0}/aws_mwaa/
cli'.format(mwaa_cli_token['WebServerHostname'])raw_data = '{0} {1}'.format(mwaa_cli_command, dag_name)mwaa_response = requests.post(
mwaa_webserver_hostname,headers={'Authorization': mwaa_auth_token,'Content-Type': 'text/plain'},
data=raw_data)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')

Python スクリプトを使用します107

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)

2.

プレースホルダーを YOUR_ENVIRONMENT_NAME と YOUR_DAG_NAME に置き換えます。

3.

次のスクリプトを実行して、Apache Airflow CLI トークンを作成します。
python3 create-cli-token.py

次のステップ• CreateClitoken で CLI トークンの作成に使用された Amazon MWAA API オペレーションをご覧ください。

Apache Airflow の使用 REST API
Amazon Managed Workflows for Apache Airflow (Amazon MWAA) は、Apache Airflow v2.4.3 以降を実行している環境RESTAPIに対して、Apache Airflow を使用して Apache Airflow 環境を直接操作することをサポートしています。これにより、Amazon MWAA環境にプログラムでアクセスおよび管理し、データオーケストレーションワークフローを呼び出し、 を管理しDAGs、メタデータデータ
ベース、トリガー、スケジューラなどのさまざまな Apache Airflow コンポーネントのステータスを
モニタリングするための標準化された方法を提供できます。
Apache Airflow の を直接使用できるようにAPI、Amazon MWAAでは、RESTAPIリクエスト、コマ
ンドラインインターフェイス (CLI) REST の使用、または Apache Airflow ユーザーインターフェイス(UI) の同時ユーザーなど、需要の増加に対応するためにウェブサーバー容量を水平方向にスケーリン
グするオプションが用意されています。Amazon がウェブサーバーをMWAAスケーリングする方法の詳細については、「」を参照してくださいthe section called “ウェブサーバーのオートスケーリン
グの設定”。
Apache Airflow を使用してRESTAPI、環境に次のユースケースを実装できます。
• プログラムによるアクセス — Apache Airflow UI や に頼ることなく、Apache Airflow DAGの実行を開始したり、データセットを管理したり、メタデータデータベース、トリガー、スケジューラな
どのさまざまなコンポーネントのステータスを取得したりできるようになりましたCLI。

次のステップ108

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 外部アプリケーションやマイクロサービスとの統合 – REST API サポートにより、Amazon MWAA
環境を他のシステムと統合するカスタムソリューションを構築できます。例えば、完了したデータ
ベースジョブや新しいユーザーのサインアップなど、外部システムからのイベントに応じてワークフローを開始できます。
• 一元化されたモニタリング – 複数の Amazon MWAA環境DAGsにわたる のステータスを集約する
モニタリングダッシュボードを構築して、一元的なモニタリングと管理を可能にします。
以下のトピックでは、ウェブサーバーアクセストークンを取得し、そのトークンを使用して Apache
Airflow をAPI呼び出す方法を示しますRESTAPI。次の例では、 を呼び出しAPIて新しいDAG実行を開始します。
Apache Airflow の詳細についてはAPI、REST「Apache Airflow RESTAPIリファレンス」を参照して
ください。
トピック
• ウェブサーバーセッショントークンを作成する• Apache Airflow を呼び出す REST API

ウェブサーバーセッショントークンを作成する
ウェブサーバーアクセストークンを作成するには、次の Python 関数を使用します。この関数は、まず Amazon を呼び出しMWAAAPIてウェブログイントークンを取得します。60 秒後に期限切れになるウェブログイントークンは、ウェブセッショントークンと交換されます。これにより、ウェブサー
バーにアクセスして Apache Airflow を使用できますRESTAPI。
Note
セッショントークンは 12 時間後に期限切れになります。

def get_session_info(region, env_name):
logging.basicConfig(level=logging.INFO)
try:# Initialize MWAA client and request a web login token
mwaa = boto3.client('mwaa', region_name=region)
response = mwaa.create_web_login_token(Name=env_name)ウェブサーバーセッショントークンを作成する

109

Amazon Managed Workflows for Apache Airflow

ユーザーガイド# Extract the web server hostname and login token
web_server_host_name = response["WebServerHostname"]
web_token = response["WebToken"]# Construct the URL needed for authentication
login_url = f"https://{web_server_host_name}/aws_mwaa/login"login_payload = {"token": web_token}# Make a POST request to the MWAA login url using the login payload
response = requests.post(
login_url,
data=login_payload,
timeout=10)# Check if login was succesfull
if response.status_code == 200:
# Return the hostname and the session cookie
return (web_server_host_name,response.cookies["session"])else:# Log an error
logging.error("Failed to log in: HTTP %d", response.status_code)
return None
except requests.RequestException as e:# Log any exceptions raised during the request to the MWAA login endpoint
logging.error("Request failed: %s", str(e))
return None
except Exception as e:# Log any other unexpected exceptions
logging.error("An unexpected error occurred: %s", str(e))
return None

Apache Airflow を呼び出す REST API
認証が完了すると、APIエンドポイントへのリクエストの送信を開始するための認証情報が取得されます。以下の例では、エンドポイント を使用します/dags/dag_id/dag。
def trigger_dag(region, env_name, dag_name):
Apache Airflow を呼び出す REST API

110

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"""
Triggers a DAG in a specified MWAA environment using the Airflow REST API.
Args:
region (str): AWS region where the MWAA environment is hosted.
env_name (str): Name of the MWAA environment.
dag_name (str): Name of the DAG to trigger.
"""
logging.info(f"Attempting to trigger DAG {dag_name} in environment {env_name} atregion {region}")# Retrieve the web server hostname and session cookie for authenticationtry:
web_server_host_name, session_cookie = get_session_info(region, env_name)
if not session_cookie:
logging.error("Authentication failed, no session cookie retrieved.")returnexcept Exception as e:logging.error(f"Error retrieving session info: {str(e)}")return# Prepare headers and payload for the request
cookies = {"session": session_cookie}
json_body = {"conf": {}}# Construct the URL for triggering the DAG
url = f"https://{web_server_host_name}/api/v1/dags/{dag_id}/dagRuns"# Send the POST request to trigger the DAG
try:response = requests.post(url, cookies=cookies, json=json_body)# Check the response status code to determine if the DAG was triggered
successfully
if response.status_code == 200:
logging.info("DAG triggered successfully.")else:
logging.error(f"Failed to trigger DAG: HTTP {response.status_code} {response.text}")
except requests.RequestException as e:logging.error(f"Request to trigger DAG failed: {str(e)}")if __name__ == "__main__":logging.basicConfig(level=logging.INFO)Apache Airflow を呼び出す REST API

111

Amazon Managed Workflows for Apache Airflow

ユーザーガイド# Check if the correct number of arguments is provided
if len(sys.argv) != 4:
logging.error("Incorrect usage. Proper format: python script_name.py {region}{env_name} {dag_name}")sys.exit(1)region = sys.argv[1]env_name = sys.argv[2]dag_name = sys.argv[3]# Trigger the DAG with the provided arguments
trigger_dag(region, env_name, dag_name)

Apache Airflow CLI コマンドリファレンス
このページでは、Apache Airflow 用の Amazon マネージドワークフローでサポートされている
Apache Airflow CLI コマンドとサポートされていない Apache Airflow CLI コマンドについて説明します。
目次• 前提条件• アクセス• AWS CLI
• v2 での変更点• サポート済みの CLI コマンド• サポートされているコマンド• DAGs を解析するコマンドを使用する• 「サンプルコード」• Apache Airflow v2 変数を設定、取得、または削除します。
• DAG をトリガーするときに設定を追加します。
• 拠点ホストへの SSH 踏み台ホストで CLI コマンドを実行します• GitHub および AWS チュートリアルのサンプル

Apache Airflow CLI コマンドリファレンス

112

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

前提条件
以下のセクションでは、このページのコマンドとスクリプトを使用するために必要な準備手順について説明します。

アクセス• AWS の Amazon MWAA アクセス許可ポリシーへの AWS Identity and Access Management (IAM)の アカウントアクセスApache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess。
• AWS Amazon MWAA アクセス許可ポリシー への AWS Identity and Access Management(IAM) の アカウントアクセスフルアクセスポリシーAPIとコンソールアクセスポリシー:
AmazonMWAAFullApiAccess。

AWS CLIAWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
• AWS CLI – を使用したクイック設定aws configure。

v2 での変更点• 新規:エアフロー CLI コマンド構造。Apache Airflow v2 CLI は、関連するコマンドがサブコマンドとしてグループ化されるように設定されています。つまり、Apache Airflow v2 にアップグレード
する場合は、Apache Airflow v1 スクリプトを更新する必要があります。例えば、Apache Airflow
v1 unpause は、Apache Airflow v2では dags unpause になりました。詳細については、Apache
Airflow リファレンスガイドの 「2 におけるエアフロー CLI の変更点」 を参照してください。

サポート済みの CLI コマンド
以下のセクションでは、Amazon MWAA で使用できる Apache Airflow CLI コマンドの一覧を表示し
ています。

前提条件

113

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

サポートされているコマンド
Apache Airflow v2
マイナーバージョン

Commandv2.0+「チートシート」

v2.0+「接続を追加する」

v2.0+「接続を削除する」「v2.2+ (注)」「dags バックフィル」

v2.0+「dags 削除」

「v2.2+ (注)」「dags リスト」

v2.0+

「dags リスト-ジョブ」

バージョン 2.6 以降

dags list-import-errors「v2.2+ (注)」「dags リスト-ラン」「v2.2+ (注)」「dags 次回の実行」

v2.0+「dags 一時停止」

v2.0+「dags レポート」

バージョン 2.4 以降「dags リシリアライズ」

v2.0+「dags 表示」

v2.0+

「dags 状態」

v2.0+

「dags テスト」

v2.0+

「dags トリガー」

v2.0+「dags 一時停止解除」

サポート済みの CLI コマンド114

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

マイナーバージョン

Commandバージョン 2.4 以降「DB クリーン」

v2.0+「プロバイダーの行動」

v2.0+「プロバイダー取得」

v2.0+「プロバイダーフック」

v2.0+「プロバイダーリンク」

v2.0+「プロバイダーリスト」

v2.8 以降

プロバイダーの通知

バージョン 2.6 以降「プロバイダーの秘密」

v2.7+「プロバイダートリガー」

v2.0+「プロバイダーウィジェッ
ト」

バージョン 2.6 以降「ロールアドパーマ」

バージョン 2.6 以降「ロールの役割」

バージョン 2.6 以降

ロールの作成v2.0+「ロールリスト」

v2.0+「タスククリア」

v2.0+「タスク失敗-DEPS」

v2.0+「タスクリスト」

v2.0+「タスクレンダー」

v2.0+「タスク状態」

v2.0+

タスク states-for-dag-run

サポート済みの CLI コマンド115

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

マイナーバージョン

Commandv2.0+「タスクテスト」

v2.0+「変数を削除する」

v2.0+「変数を取得する」

v2.0+「変数を取得する」

v2.0+「変数リスト」

v2.0+

バージョン

DAGs を解析するコマンドを使用する環境が Apache Airflow v1.10.12 または v2.0.2 を実行している場合、DAGs が を介してインストー
ルされたパッケージに依存するプラグインを使用すると、DAG を解析する CLI コマンドは失敗しますrequirements.txt。
Apache Airflow v2.0.2• dags backfill• dags list
• dags list-runs• dags next-execution
DAG が requirements.txt を介してインストールされたパッケージに依存するプラグインを使用していない場合は、次の CLI コマンドを使用できます。

「サンプルコード」
次のセクションには、Apache Airflow CLI を使用する各種方法の例が含まれています。

Apache Airflow v2 変数を設定、取得、または削除します。
次のサンプルコードを使用して、WWH 形式で変数を設定、取得、または削除できます<script><mwaa env name> get | set | delete <variable> <variable value> </variable></variable>。
「サンプルコード」

116

Amazon Managed Workflows for Apache Airflow

ユーザーガイド[ $# -eq 0 ] && echo "Usage: $0 MWAA environment name " && exit
if [[ $2 == "" ]]; thendag="variables list"elif[ $2 == "get" ] || [ $2 == "delete" ] ||dag="variables $2 $3 $4 $5"[ $2 == "set" ]; thenelseecho "Not a valid command"
exit 1fi
CLI_JSON=$(aws mwaa --region $AWS_REGION create-cli-token --name $1) \&& CLI_TOKEN=$(echo $CLI_JSON | jq -r '.CliToken') \&& WEB_SERVER_HOSTNAME=$(echo $CLI_JSON | jq -r '.WebServerHostname') \&& CLI_RESULTS=$(curl --request POST "https://$WEB_SERVER_HOSTNAME/aws_mwaa/cli" \--header "Authorization: Bearer $CLI_TOKEN" \--header "Content-Type: text/plain" \--data-raw "$dag" ) \&& echo "Output:" \&& echo $CLI_RESULTS | jq -r '.stdout' | base64 --decode \&& echo "Errors:" \&& echo $CLI_RESULTS | jq -r '.stderr' | base64 --decode

DAG をトリガーするときに設定を追加します。
Apache Airflow v1 および Apache Airflow v2 で次のサンプル コードを使用すると、DAG がトリガーされたときに airflow trigger_dag 'dag_name' —conf '{"key":"value"}' などの構成を追加できます。
import boto3
import json
import requests
import base64
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
key = "YOUR_KEY"
value = "YOUR_VALUE"
conf = "{\"" + key + "\":\"" + value + "\"}"「サンプルコード」

117

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name)mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']mwaa_webserver_hostname = 'https://{0}/aws_mwaa/
cli'.format(mwaa_cli_token['WebServerHostname'])raw_data = "trigger_dag {0} -c '{1}'".format(dag_name, conf)
mwaa_response = requests.post(
mwaa_webserver_hostname,headers={'Authorization': mwaa_auth_token,'Content-Type': 'text/plain'},
data=raw_data)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')
print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)

拠点ホストへの SSH 踏み台ホストで CLI コマンドを実行します
次の例は、Linux 踏み台ホストトへの SSH トンネルプロキシを使用して Airflow CLI コマンドを実行する方法を示しています。
curl を使用
1.
2.

ssh -D 8080 -f -C -q -N YOUR_USER@YOUR_BASTION_HOST
curl -x socks5h://0:8080 --request POST https://YOUR_HOST_NAME/aws_mwaa/cli -header YOUR_HEADERS --data-raw YOUR_CLI_COMMAND「サンプルコード」

118

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

GitHub および AWS チュートリアルのサンプル• 「Apache Airflow の Amazon マネージドワークフローでの Apache Airflow v2.0.2 パラメータと変数の使用」• 「Amazon MWAA の Apache Airflow v1.10.12 をコマンドラインから操作する」• での Amazon MWAA と Bash Operator での Apache Airflow v1.10.12 を使用したインタラクティブ
コマンド GitHub「サンプルコード」

119

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache エアフローへの接続の管理
このセクションでは、Amazon Managed Workflows for Apache Airflow 環境の Apache Airflow 接続を構成するさまざまな方法について説明します。
トピック• Apache エアフロー変数と接続の概要• Amazon MWAA 環境にインストールされている Apache エアフロープロバイダーパッケージ• 接続タイプの概要• AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定

Apache エアフロー変数と接続の概要
場合によっては、環境に対して追加の接続や変数を指定したいことがあります。例えば、AWSプロ
ファイルを追加したり、Apache Airflowメタストア内の接続オブジェクトに実行ロールを追加したりして、それをDAG内から参照することがあります。
• セルフマネージド Apache Airflow 自己管理型のApache Airflowインストールでは、Apache Airflow
構成オプションはairflow.cfgで設定します。
[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 構成オプション として追加する必要があります。Apache Airflow 構成オ
プションは環境変数として記述され、同じ設定の他のすべての既存設定よりも優先されます。

Amazon MWAA 環境にインストールされている Apache エアフ
ロープロバイダーパッケージ
Amazon MWAA では、新しい環境を作成すると、Apache Airflow v2 以降の接続タイプ用のプロバイ
ダーエクストラがインストールされます。プロバイダーパッケージをインストールすると、Apache
Airflow UI に接続タイプが表示されます。また、これらのパッケージをrequirements.txtファイ
概要

120

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ル内の Python 依存関係として指定する必要がないことも意味します。このページには、Amazon
MWAA によってすべての Apache Airflow v2 環境にインストールされた Apache Airflow プロバイ
ダーパッケージが一覧表示されます。
Note
Apache Airflow v2 以降では、Amazon MWAA は の実行後に Watchtower バージョン 2.0.1 を
インストールしpip3 install -r requirements.txt、 CloudWatch ログ記録との互換性が他の Python ライブラリのインストールによって上書きされないようにします。

目次• Apache Airflow v2.9.2 接続用のプロバイダーパッケージ• Apache Airflow v2.8.1 接続用のプロバイダーパッケージ• Apache Airflow v2.7.2 接続用のプロバイダーパッケージ• Apache Airflow v2.6.3 接続用のプロバイダーパッケージ• Apache Airflow v2.5.1 接続用のプロバイダーパッケージ• Apache Airflow v2.4.3 接続用のプロバイダーパッケージ• Apache Airflow v2.2.2 接続用のプロバイダーパッケージ• Apache Airflow v2.0.2 接続用のプロバイダーパッケージ• 新しいプロバイダーパッケージの指定

Apache Airflow v2.9.2 接続用のプロバイダーパッケージ
Apache Airflow v2.9.2 で Amazon MWAA 環境を作成すると、Amazon MWAA は Apache Airflow 接続に使用される以下のプロバイダーパッケージをインストールします。
Note
このプロバイダをアップグレードするには、サポートされている最新バージョンのapacheairflow-providers-amazonを指定できます。新しいバージョンの指定に関する詳細は、「the section called “新しいプロバイダーパッケージの指定”」を参照してください。

Apache Airflow v2.9.2 接続用のプロバイダーパッケージ

121

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon[aiobotocore]==8.24.0

Postgres 接続

apache-airflow-providers-postgres==5.11.1

FTP 接続apache-airflow-providers-ftp==3.9.1

Fab 接続apache-airflow-providers-fab==1.1.1

セロリ接続

apache-airflow-providers-celery==3.7.2

HTTP 接続

apache-airflow-providers-http==4.11.1

IMAP 接続

apache-airflow-providers-imap==3.6.1

共通 SQLapache-airflow-providers-common-sql==1.14.0

SQLite コネクション

apache-airflow-providers-sqlite==3.8.1

SMTP 接続

apache-airflow-providers-smtp==1.7.1

Apache Airflow v2.8.1 接続用のプロバイダーパッケージ
Apache Airflow v2.8.1 で Amazon MWAA 環境を作成すると、Amazon MWAA は Apache Airflow 接続に使用される以下のプロバイダーパッケージをインストールします。
Note
このプロバイダをアップグレードするには、サポートされている最新バージョンのapacheairflow-providers-amazonを指定できます。新しいバージョンの指定に関する詳細は、「the section called “新しいプロバイダーパッケージの指定”」を参照してください。

Apache Airflow v2.8.1 接続用のプロバイダーパッケージ

122

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon[aiobotocore]==8.16.0

Postgres 接続

apache-airflow-providers-postgres==5.10.0

FTP 接続apache-airflow-providers-ftp==3.7.0

セロリ接続

apache-airflow-providers-celery==3.5.1

HTTP 接続

apache-airflow-providers-http==4.8.0

IMAP 接続

apache-airflow-providers-imap==3.5.0

共通 SQLapache-airflow-providers-common-sql==1.10.0

SQLite コネクション

apache-airflow-providers-sqlite==3.7.0

Apache Airflow v2.7.2 接続用のプロバイダーパッケージ
Apache Airflow v2.7.2 で Amazon MWAA 環境を作成すると、Amazon MWAA は Apache Airflow 接続に使用される以下のプロバイダーパッケージをインストールします。
Note
このプロバイダをアップグレードするには、サポートされている最新バージョンのapacheairflow-providers-amazonを指定できます。新しいバージョンの指定に関する詳細は、「the section called “新しいプロバイダーパッケージの指定”」を参照してください。

接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon[aiobotocore]==8.7.1

Postgres 接続

apache-airflow-providers-postgres==5.6.1

Apache Airflow v2.7.2 接続用のプロバイダーパッケージ

123

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

接続タイプ

パッケージ

FTP 接続apache-airflow-providers-ftp==3.5.2

セロリ接続

apache-airflow-providers-celery==3.3.4

HTTP 接続

apache-airflow-providers-http==4.5.2

IMAP 接続

apache-airflow-providers-imap==3.3.2

共通 SQLapache-airflow-providers-common-sql==1.7.2

SQLite コネクション

apache-airflow-providers-sqlite==3.4.3

Apache Airflow v2.6.3 接続用のプロバイダーパッケージ
Apache Airflow v2.6.3 で Amazon MWAA 環境を作成すると、Amazon MWAA は Apache Airflow 接続に使用される以下のプロバイダーパッケージをインストールします。
Note
このプロバイダをアップグレードするには、サポートされている最新バージョンのapacheairflow-providers-amazonを指定できます。新しいバージョンの指定に関する詳細は、「the section called “新しいプロバイダーパッケージの指定”」を参照してください。

接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon[aiobotocore]==8.2.0

Postgres 接続

apache-airflow-providers-postgres==5.5.1

FTP 接続apache-airflow-providers-ftp==3.4.2

セロリ接続

apache-airflow-providers-celery==3.2.1

HTTP 接続

apache-airflow-providers-http==4.4.2

Apache Airflow v2.6.3 接続用のプロバイダーパッケージ124

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

接続タイプ

パッケージ

IMAP 接続

apache-airflow-providers-imap==3.2.2

共通 SQLapache-airflow-providers-common-sql==1.5.2

SQLite コネクション

apache-airflow-providers-sqlite==3.4.2

Apache Airflow v2.5.1 接続用のプロバイダーパッケージ
Apache Airflow v2.5.1 で Amazon MWAA 環境を作成すると、Amazon MWAA は Apache Airflow 接続に使用される以下のプロバイダーパッケージをインストールします。
Note
このプロバイダをアップグレードするには、サポートされている最新バージョンのapacheairflow-providers-amazonを指定できます。新しいバージョンの指定に関する詳細は、「the section called “新しいプロバイダーパッケージの指定”」を参照してください。

接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon==7.1.0

Postgres 接続

apache-airflow-providers-postgres==5.4.0

FTP 接続apache-airflow-providers-ftp==3.3.0

セロリ接続

apache-airflow-providers-celery==3.1.0

HTTP 接続

apache-airflow-providers-http==4.1.1

IMAP 接続

apache-airflow-providers-imap==3.1.1

共通 SQLapache-airflow-providers-common-sql==1.3.3

SQLite コネクション

apache-airflow-providers-sqlite==3.3.1

Apache Airflow v2.5.1 接続用のプロバイダーパッケージ

125

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v2.4.3 接続用のプロバイダーパッケージ
Apache Airflow v2.4.3でAmazon MWAA環境を作成すると、Amazon MWAAはApache Airflow接続に使用される以下のプロバイダーパッケージをインストールします。
接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon==6.0.0

Postgres 接続

apache-airflow-providers-postgres==5.2.2

FTP 接続apache-airflow-providers-ftp==3.1.0

セロリ接続

apache-airflow-providers-celery==3.0.0

HTTP 接続

apache-airflow-providers-http==4.0.0

IMAP 接続

apache-airflow-providers-imap==3.0.0

共通 SQLapache-airflow-providers-common-sql==1.2.0

SQLite コネクション

apache-airflow-providers-sqlite==3.2.1

Apache Airflow v2.2.2 接続用のプロバイダーパッケージ
Apache Airflow v2.2.2でAmazon MWAA環境を作成すると、Amazon MWAAはApache Airflow接続に使用される以下のプロバイダーパッケージをインストールします。
接続タイプ

パッケージ

AWS 接続apache-airflow-providers-amazon==2.4.0

Postgres 接続

apache-airflow-providers-postgres==2.3.0

FTP 接続apache-airflow-providers-ftp==2.0.1

セロリ接続

apache-airflow-providers-celery==2.1.0

HTTP 接続

apache-airflow-providers-http==2.0.1

Apache Airflow v2.4.3 接続用のプロバイダーパッケージ

126

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

接続タイプ

パッケージ

IMAP 接続

apache-airflow-providers-imap==2.0.1

SQLite コネクション

apache-airflow-providers-sqlite==2.0.1

Apache Airflow v2.0.2 接続用のプロバイダーパッケージ
Apache Airflow v2.0.2でAmazon MWAA環境を作成すると、Amazon MWAAはApache Airflow接続に使用される以下のプロバイダーパッケージをインストールします。
接続タイプ

パッケージ

Tableau Connection

apache-airflow-providers-tableau==1.0.0

データブリックス接続

apache-airflow-providers-databricks==1.0.1

SSH 接続apache-airflow-providers-ssh==1.3.0

Postgres 接続

apache-airflow-providers-postgres==1.0.2

Docker Connection

apache-airflow-providers-docker==1.2.0

Oracle Connection

apache-airflow-providers-oracle==1.1.0

Presto Connection

apache-airflow-providers-presto==1.0.2

SFTP 接続

apache-airflow-providers-sftp==1.2.0

新しいプロバイダーパッケージの指定
Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める必要があります。制約を指定しない場合、要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するため、Amazon MWAA はお客様に代わって制約を指定します。
Apache Airflow の制約ファイルには、Apache Airflow のリリース時点で利用可能なプロバイダーのバージョンが指定されています。ただし、多くの場合、新しいプロバイダーはそのバージョンのApache Airflow v2.0.2 接続用のプロバイダーパッケージ

127

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow と互換性があります。制約を使用する必要があるため、プロバイダ・パッケージの新しいバージョンを指定するには、特定のプロバイダ・バージョンに合わせて制約ファイルを変更できます。
1.

バージョン固有の制約ファイルを https://raw.githubusercontent.com/apache/airflow/
constraints-2.7.2/constraints-3.11.txt "からダウンロードしてください。

2.

制約ファイル内のapache-airflow-providers-amazonバージョンを、使用したいバージョンに変更します。

3.

変更した制約ファイルを、Amazon MWAA 環境の Amazon S3 DAGs フォルダに保存してください。例えば、constraints-3.11-updated.txtとして保存します。

4.

次に示すように、要件を指定します。
--constraint "/usr/local/airflow/dags/constraints-3.11-updated.txt"
apache-airflow-providers-amazon==version-number

Note
プライベートウェブサーバーを使用している場合は、Amazon MWAA local-runner を使用して必要なライブラリを WHL ファイルとしてパッケージ化することをお勧めします。

接続タイプの概要
Apache Airflow は接続を接続 URI 文字列として保存します。接続タイプに関係なく、接続 URI 文字列を生成するための接続テンプレートが Apache Airflow UI に提供されます。Apache Airflow UI で接続テンプレートが使用できない場合は、HTTP 接続テンプレートを使用するなど、代替の接続テ
ンプレートを使用してこの接続 URI 文字列を生成できます。主な違いは、my-conn-type:// などのURIのプレフィックスにあります。通常、Apache Airflow プロバイダーは接続時にこれを無視します。このページでは、Apache Airflow UI の接続テンプレートを異なる接続タイプで互換的に使用する方法について説明します。

接続タイプ

128

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

WarningAmazon MWAA で aws_default の接続を上書きしないでください。Amazon MWAA はこの接続を使用して、タスクログの収集など、さまざまな重要なタスクを実行します。この接続を上書きすると、データが失われ、環境の可用性が中断される可能性があります。

トピック• 接続 URI 文字列の例• サンプル接続テンプレート• JDBC 接続に HTTP 接続テンプレートを使用する例

接続 URI 文字列の例
次の例は、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%2FAmazonMWAAMyAirflowEnvironment-iAaaaA&region_name=us-east-1'

サンプル接続テンプレート
次の例は、Apache Airflow UI の HTTP 接続テンプレートを示しています。
Apache Airflow v2
次の例は、Apache Airflow UI の Apache Airflow v2 の HTTP 接続テンプレートを示しています。

接続 URI 文字列の例

129

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v1
次の例は、Apache Airflow UI の Apache Airflow v1 の HTTP 接続テンプレートを示しています。

サンプル接続テンプレート

130

Amazon Managed Workflows for Apache Airflow

ユーザーガイドJDBC 接続に HTTP 接続テンプレートを使用する例
次の例は、Apache Airflow v2.0.2 の Jdbc 接続タイプの HTTP 接続テンプレートと、Apache Airflow
UI の Apache Airflow v1.10.12 の Jdbc 接続テンプレートの同じ値を使用する方法を示しています。
Apache Airflow v2
次の例は、このセクションの例で Apache Airflow によって生成された接続 URI 文字列を示しています。
http://myconnectionurl/some/path&login=mylogin&extra__jdbc__dry__path=usr/local/
airflow/dags/classpath/redshifjdbc42-2.0.0.1.jar&extra__jdbc__dry__clsname=redshift-jdbc42-2.0.0.1

次の例は、Apache Airflow UI で Apache Airflow v2 の Jdbc 接続に HTTP 接続テンプレートを使用する方法を示しています。

JDBC 接続に HTTP 接続テンプレートを使用する例

131

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v1
次の例は、このセクションの例で Apache Airflow によって生成された接続 URI 文字列を示しています。
jdbc://myconnectionurl/some/path&login=mylogin&extra__jdbc__dry__path=usr/local/
airflow/dags/classpath/redshifjdbc42-2.0.0.1.jar&extra__jdbc__dry__clsname=redshift-jdbc42-2.0.0.1

次の例は、Apache Airflow UI の Apache Airflow v1.10.12 用の Jdbc 接続テンプレートを示しています。

JDBC 接続に HTTP 接続テンプレートを使用する例

132

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS Secrets Manager シークレットを使用した Apache Airflow 接
続の設定
AWS Secrets Manager は、Amazon Managed Workflows for Apache Airflow 環境でサポートされている代替 Apache Airflow バックエンドです。このガイドでは、 AWS Secrets Manager を使用して Apache Airflow 変数のシークレットと Apache Airflow 接続を Amazon Managed Workflows for
Apache Airflow に安全に保存する方法を示します。
Note• 作成したシークレットには料金が発生します。Secrets Manager の価格については、「AWS 価格」を参照してください。
• AWS Systems Manager パラメータストアは、Amazon のシークレットバックエンドとしてもサポートされていますMWAA。詳細については、「Amazon プロバイダーパッケージのドキュメント」を参照してください。

Secrets Manager の設定

133

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

目次• ステップ 1: Amazon に Secrets Manager シークレットキーへのアクセス許可MWAAを付与する• ステップ 2: Secrets Manager のバックエンドを Apache Airflow 構成オプションとして作成する• ステップ 3: Apache Airflow AWS 接続URI文字列を生成する• ステップ 4: Secrets Manager に変数を追加する• ステップ 5: Secrets Manager に接続を追加する• 「サンプルコード」• リソース• 次のステップ

ステップ 1: Amazon に Secrets Manager シークレットキーへのアクセス許可MWAAを付与する
Amazon MWAA環境の実行ロールには、 のシークレットキーへの読み取りアクセスが必要です AWS
Secrets Manager。次のIAMポリシーでは、 AWS 管理SecretsManagerReadWriteポリシーを使用した読み取り/書き込みアクセスを許可します。
実行ロールにポリシーを添付するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[権限] ペインで実行ロールを選択します。

4.

[Attach policies] (ポリシーの添付) を選択します。

5.

[Filter policies] (フィルターポリシー) テキストフィールドに SecretsManagerReadWrite をタイプ。

6.

Attach policy] (ポリシーのアタッチ) を選択します。

AWS 管理アクセス許可ポリシーを使用しない場合は、環境の実行ロールを直接更新して、Secrets
Manager リソースへの任意のレベルのアクセスを許可できます。例えば、次のポリシーステートメ
ントは、Secrets Manager の特定の AWS リージョンで作成したすべてのシークレットへの読み取り
アクセスを許可します。
{"Version": "2012-10-17",ステップ 1: Amazon に Secrets Manager シークレットキーへのアクセス許可MWAAを付与する

134

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Statement": [{"Effect": "Allow","Action": ["secretsmanager:GetResourcePolicy","secretsmanager:GetSecretValue","secretsmanager:DescribeSecret","secretsmanager:ListSecretVersionIds"],"Resource": "arn:aws:secretsmanager:us-west-2:012345678910:secret:*"},{"Effect": "Allow","Action": "secretsmanager:ListSecrets","Resource": "*"}]}ステップ 2: Secrets Manager のバックエンドを Apache Airflow 構成オプションとして作成する
次のセクションでは、Amazon MWAAコンソールで AWS Secrets Manager バックエンドの Apache
Airflow 設定オプションを作成する方法について説明します。airflow.cfg で同じ名前の設定を使用している場合は、次のステップで作成した設定が優先され、設定よりも優先されます。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

[Next (次へ)] を選択します。

5.

Airflow 設定オプションペインで [カスタム設定を追加] を選択します。以下のキーと値のペアを追加します。
a.

secrets.backend:

airflow.providers.amazon.aws.secrets.secrets_manager.SecretsManagerBackendb.

secrets.backend_kwargs: {"connections_prefix" : "airflow/
connections", "variables_prefix" : "airflow/variables"} これにより、Apache Airflow は接続文字列と変数をairflow/connections/*およびairflow/
variables/*のパスで検索するように構成されます。

ステップ 2: Secrets Manager のバックエンドを Apache Airflow 構成オプションとして作成する

135

Amazon Managed Workflows for Apache Airflow

ユーザーガイドルックアップパターンを使用して、Amazon がユーザーに代わって Secrets Manager に対してMWAA行うAPI呼び出しの数を減らすことができます。検索パターンを指定しない場
合、Apache Airflow は設定されたバックエンドのすべての接続と変数を検索します。パターンを指定することで、Apache Airflow が検索する可能性のあるパスを絞り込むことができます。これにより、Amazon で Secrets Manager を使用する場合のコストが削減されます
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"}

Noteconnections_lookup_pattern および variables_lookup_pattern を使用
するには、apache-airflow-providers-amazon バージョン 7.3.0 以上をインストールする必要があります。プロバイダパッケージを新しいバージョンに更新する方法の詳細については、the section called “新しいプロバイダーパッケージの指定” を参照してください。
6.

[Save] を選択します。

ステップ 3: Apache Airflow AWS 接続URI文字列を生成する
接続文字列を作成するには、キーボードの「tab」キーを使用して、接続オブジェクトのキーと値のペアをインデントします。また、シェルセッションで extra オブジェクト用の変数を作成することをおすすめします。次のセクションでは、Apache Airflow または Python スクリプトを使用してAmazon 環境の Apache Airflow 接続文字列を生成するURI手順について説明します。 MWAA

ステップ 3: Apache Airflow AWS 接続URI文字列を生成する

136

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow CLI
次のシェルセッションでは、ローカルの Airflow CLIを使用して接続文字列を生成します。CLI が
インストールされていない場合は、Python スクリプトを使用することをお勧めします。
1.

Python シェルセッションを開きます。
python32.

次のコマンドを入力します。
>>> import json

3.

次のコマンドを入力します。
>>> from airflow.models.connection import Connection

4.

シェルセッションにextraオブジェクト用の変数を作成します。のサンプル値を置き換え
る YOUR_EXECUTION_ROLE_ARN で実行ロール を使用しARN、 でリージョンを使用する
YOUR_REGION ( などus-east-1）。
>>> extra=json.dumps({'role_arn': 'YOUR_EXECUTION_ROLE_ARN', 'region_name':'YOUR_REGION'})5.

接続オブジェクトを作成します。myconn のサンプル値を Apache Airflow 接続の名前に置き換えてください。
>>> myconn = Connection(

6.

キーボードの tab キーを使用して、接続オブジェクト内の以下のキーと値のペアをそれぞれ
インデントします。のサンプル値を置き換える red.
a.

AWS 接続タイプを指定します。
... conn_id='aws',b.

Apache Airflow データベースオプションを指定します。
... conn_type='mysql',

ステップ 3: Apache Airflow AWS 接続URI文字列を生成する

137

Amazon Managed Workflows for Apache Airflowc.

ユーザーガイドURL Amazon で Apache Airflow UI を指定しますMWAA。
... host='288888a0-50a0-888-9a88-1a111aaa0000.a1.useast-1.airflow.amazonaws.com/home',d.

Amazon にログインする AWS アクセスキー ID (ユーザー名) を指定しますMWAA。
... login='YOUR_AWS_ACCESS_KEY_ID',e.

Amazon にログインする AWS シークレットアクセスキー (パスワード) を指定します
MWAA。
... password='YOUR_AWS_SECRET_ACCESS_KEY',f.

extra シェルセッション変数を指定します。
... extra=extrag.

接続オブジェクトを閉じます。
... )

7.

接続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

ステップ 3: Apache Airflow AWS 接続URI文字列を生成する

138

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

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 = 'YOUR_REGION'
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)

2.

のプレースホルダーを置き換える red.

3.

次のスクリプトを実行して、接続文字列を生成します。
python3 mwaa_connection.py

ステップ 4: Secrets Manager に変数を追加する
次のセクションでは、Secrets Manager で変数のシークレットを作成する方法について説明します。
シークレットを作成するには
1.

AWS Secrets Manager コンソールを開きます。

2.

[新しいシークレットを保存] を選択します。

3.

[他の種類のシークレット] を選択します。

4.

[このシークレットに保存するキーと値のペアを指定してください] ペインで、[プレーンテキス
ト] を選択します。

5.

変数値を次の形式でプレーンテキストとして追加します。
"YOUR_VARIABLE_VALUE"

たとえば、整数を指定するには:
14

ステップ 4: Secrets Manager に変数を追加する

139

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

例えば、文字列を指定する："mystring"

6.

暗号化キー で、ドロップダウンリストから AWS KMS キーオプションを選択します。

7.

[シークレット名] のテキストフィールドに、次の形式で名前を入力します。
airflow/variables/YOUR_VARIABLE_NAME

例:
airflow/variables/test-variable

8.

[Next (次へ)] を選択します。

9.

[シークレットの設定] ページの [シークレットの名前と説明] ペインで、次の操作を行います。
a.

[シークレット名] には、シークレットの名前を入力します。

b.

（オプション）[説明] として、シークレットの説明を入力します。

[Next (次へ)] を選択します。
10. [ローテーションの設定-オプション] では、デフォルトオプションのままにして、[次へ] を選択します。
11. 追加したい変数があれば、Secrets Manager でこれらの手順を繰り返します。
12. [レビュー] ページで、自分の秘密を確認し、[ストア] を選択します。

ステップ 5: Secrets Manager に接続を追加する
次のセクションでは、Secrets Manager URIで接続文字列のシークレットを作成する方法について説明します。
シークレットを作成するには
1.

AWS Secrets Manager コンソールを開きます。

2.

[新しいシークレットを保存] を選択します。

3.

[他の種類のシークレット] を選択します。

ステップ 5: Secrets Manager に接続を追加する

140

Amazon Managed Workflows for Apache Airflow

4.

ユーザーガイド[このシークレットに保存するキーと値のペアを指定してください] ペインで、[プレーンテキス
ト] を選択します。

5.

接続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

Warning
Apache Airflow は接続文字列の各値を解析します。一重引用符や二重引用符は使用しな
いでください。そうしないと、接続が 1 つの文字列として解析されます。
6.

暗号化キー で、ドロップダウンリストから AWS KMS キーオプションを選択します。

7.

[シークレット名] のテキストフィールドに、次の形式で名前を入力します。
airflow/connections/YOUR_CONNECTION_NAME

例:
airflow/connections/myconn

8.

[Next (次へ)] を選択します。

9.

[シークレットの設定] ページの [シークレットの名前と説明] ペインで、次の操作を行います。
a.

[シークレット名] には、シークレットの名前を入力します。

b.

（オプション）[説明] として、シークレットの説明を入力します。

[Next (次へ)] を選択します。
10. [ローテーションの設定-オプション] では、デフォルトオプションのままにして、[次へ] を選択します。
11. 追加したい変数があれば、Secrets Manager でこれらの手順を繰り返します。
ステップ 5: Secrets Manager に接続を追加する

141

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

12. [レビュー] ページで、自分の秘密を確認し、[ストア] を選択します。

「サンプルコード」• このページの Apache Airflow 接続 (myconn) のシークレットキーの使用方法については、Apache
Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する のサンプルコードを参照してください。
• このページの Apache Airflow 変数 (test-variable) のシークレットキーの使用方法について
は、Apache Airflow 変数 AWS Secrets Manager の でのシークレットキーの使用 にあるサンプル
コードを使用して学習してください。

リソース• コンソールと を使用して Secrets Manager シークレットを設定する方法の詳細については AWS
CLI、「 AWS Secrets Manager ユーザーガイド」の「シークレットの作成」を参照してください。
• Apache Airflowの大量の変数や接続をSecrets Managerに移行するために、Pythonスクリプトを使用して、Apache Airflowの接続と変数を AWS Secrets Managerに移動してください。

次のステップ• Apache Airflow へのアクセス で Apache Airflow UI にアクセスするトークンを生成する方法について説明します。

「サンプルコード」

142

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA 環境の管理
Apache Airflow 用 Amazon マネージドワークフローコンソールには、Apache Airflow UI へのプラ
イベートアクセスまたはパブリックアクセスを構成するための組み込みオプションが含まれています。また、環境サイズ、ワーカーをスケーリングするタイミングを構成する組み込みオプショ
ン、Apache Airflow 構成オプションも用意されています。これにより、通常は airflow.cfg でのみアクセス可能な Apache Airflow 構成をオーバーライドできます。このガイドでは、Amazon
MWAA コンソールでこれらの構成を使用する方法について説明します。
トピック• Amazon MWAA環境クラスの設定• Amazon MWAA ワーカーの自動スケーリングの設定• Amazon MWAA ウェブサーバーの自動スケーリングの設定• Amazon MWAA での Apache Airflow 構成オプションの使用• Apache Airflow バージョンのアップグレード• Amazon MWAA でのスタートアップスクリプトの使用

Amazon MWAA環境クラスの設定
Amazon 環境用に選択したMWAA環境クラスによって、Celery Executor が実行される AWSマネージド AWS Fargate コンテナのサイズと、Apache Airflow スケジューラがタスクインスタンスを作成す
る AWSマネージド Amazon Aurora PostgreSQL メタデータデータベースが決まります。このページ
では、各 Amazon MWAA環境クラスと、Amazon MWAAコンソールで環境クラスを更新する手順について説明します。
セクション• 環境機能• Apache Airflow スケジューラー

環境機能
次のセクションには、各環境クラスのデフォルトの同時 Apache Airflow タスク、ランダムアクセス
メモリ (RAM）、仮想集中型処理ユニット (vCPUs) が含まれています。記載されている同時実行タ
環境クラスの構成

143

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

スクは、タスクの同時実行性が環境内の Apache Airflow ワーカーのキャパシティを超えないことを前提としています。
次の表では、DAGキャパシティとは実行ではなくDAG定義を指し、 DAGsが単一の Python ファイルで動的であり、Apache Airflow のベストプラクティス で記述されていることを前提としています。
タスクの実行は、同時にスケジュールされる数によって異なり、同時に開始するように設定されたDAG実行数がデフォルトの 、およびこのトピックで説明されているワー
カーmax_dagruns_per_loop_to_scheduleのサイズと数を超えないことを前提としています。
mw1.small• 最大 50 個のDAG容量• 同時 5 タスク (デフォルト)• コンポーネント：• ウェブサーバー: 1 vCPU、RAM各 2GB• ワーカー: 1 vCPU、RAM各 2GB• スケジューラ: 1 vCPU、RAM各 2GB• データベース: 2 vCPU、4GB RAM
mw1.medium• 最大 250 個のDAG容量• 同時 10 タスク (デフォルト)• コンポーネント：• ウェブサーバー: RAM各 1 vCPU 2GB• ワーカー: RAM各 2 vCPU 4GB• スケジューラ: RAM各 2 vCPU 4GB• データベース: 2 vCPU 8GB RAM
mw1.large• 最大 1000 個のDAG容量• 同時 20 タスク (デフォルト)• コンポーネント：
環境機能

144

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• ウェブサーバー: RAM各 2 vCPU 4GB• ワーカー: RAMそれぞれ 4 GB とCPU 8GB• スケジューラ: RAM各 4 vCPU 8GB• データベース: 2 vCPU 8GB RAM
mw1.xlarge• 最大 2000 個のDAG容量• 40 個の同時タスク (デフォルト）• コンポーネント：• ウェブサーバー: RAM各 4 vCPU 12GB
• ワーカー: RAMそれぞれ 8 GB とCPU 24GB
• スケジューラ: RAMそれぞれ 8 vCPU 24GB
• データベース: 4 vCPU 32GB RAM
mw1.2xlarge• 最大 4000 個のDAG容量• 80 個の同時タスク (デフォルト）• Componenets:• ウェブサーバー: RAMそれぞれ 8 vCPU 24GB
• ワーカー: RAMそれぞれ 16 GB とCPU 48GB• スケジューラ: RAM各 16 vCPU 48GB
• データベース: 8 vCPU 64GB RAM
celery.worker_autoscale を使用して、作業者 1 人あたりのタスク数を増やすことができます。詳細については、「the section called “高パフォーマンスのユースケースの例”」を参照してくだ
さい。

Apache Airflow スケジューラー
次のセクションには、Amazon で使用可能な Apache Airflow スケジューラオプションとMWAA、ス
ケジューラの数がトリガーの数にどのように影響するかが含まれています。
Apache Airflow スケジューラー

145

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow では、トリガーを使用して指定された特定の条件が満たされるまでタスクを延期するトリガーがタスクを管理します。Amazon ではMWAA、トリガーは同じ Fargate タスクのスケ
ジューラと一緒に実行されます。スケジューラーの数を増やすと、それに応じて使用可能なトリガーの数も増え、遅延されたタスクを環境がどのように管理するかが最適化されます。これにより、タスクを効率的に処理できるようになり、条件が満たされた時点でタスクを迅速に実行するようにスケ
ジューリングできます。
Apache Airflow v2• v2 - 2 から 5 までを受け入れます。デフォルトは 2 です。

Amazon MWAA ワーカーの自動スケーリングの設定
自動スケーリングメカニズムは、Amazon Managed Workflows for Apache Airflow 環境で実行中のタスクとキューに入れられたタスクに応じて Apache Airflow ワーカーの数を自動的に増やし、キューに入れられたタスクや実行中のタスクがなくなったときに余分なワーカーを破棄します。このページ
では、Amazon MWAA コンソールを使用して環境で実行される Apache Airflow ワーカーの最大数を指定して、自動スケーリングを設定する方法について説明します。
Note
Amazon MWAA は Apache Airflow メトリクスを使用して Celery Executor ワーカーをいつ追加する必要があるかを判断し、必要に応じて Fargate ワーカーの数をmax-workersで指定された値まで増やします。追加のワーカーが作業を完了し、作業負荷が減少すると、Amazon MWAA はそれらを削除し、 によって設定された値にダウンスケーリングしますmin-workers。
ワーカーがダウンスケーリング中に新しいタスクを取得した場合、Amazon MWAA は
Fargate リソースを保持し、ワーカーを削除しません。詳細については、「Amazon MWAA
Auto Scaling の仕組み」を参照してください。

セクション• ワーカースケーリングの仕組み• Amazon MWAA コンソールの使用• 高パフォーマンスのユースケースの例• タスクが実行状態で止まってしまう問題のトラブルシューティング
ワーカーの自動スケーリングの設定

146

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 次のステップ

ワーカースケーリングの仕組み
Amazon MWAA は、(実行中のタスク + キューに入れられたタスク) / (ワーカーごとのタスク) = (必要なワーカー) というRunningTasksとQueuedTasksのメトリクスを使用します。必要なワーカー
数が現在のワーカー数よりも多い場合、Amazon MWAA は Fargate ワーカーコンテナを、maxworkersで指定された最大値までその値に追加します。
ワークロードが減少し、 RunningTasksおよび QueuedTasksメトリクスの合計が減少すると、Amazon MWAA は Fargate に環境のワーカーのスケールダウンを要求します。まだ作業を完了しているワーカーは、作業が完了するまでダウンスケーリング中も保護されます。ワークロードによっては、ワーカーがダウンスケールしている間にタスクがキューに入れられる場合があります。

Amazon MWAA コンソールの使用
Amazon MWAA コンソールでは、環境上で同時に実行できるワーカーの最大数を選択できます。デ
フォルトでは、最大値を 25 まで指定できます。
ワーカー数を設定するには
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

[次へ] をクリックします。

5.

[環境クラス] ペインで、[最大ワーカー数] に値を入力します。

6.

[保存] を選択します。

Note
環境への変更が適用されるまで数分ほどかかります。

高パフォーマンスのユースケースの例
次のセクションでは、ある環境で高いパフォーマンスと並列処理を実現するために使用できる構成の種類について説明します。
ワーカースケーリングの仕組み

147

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

オンプレミスの Apache エアフロー
通常、オンプレミスの Apache Airflow プラットフォームでは、 airflow.cfg ファイルでタスクの並列処理、自動スケーリング、および同時実行の設定を行います。
• core.parallelism— スケジューラーごとに同時に実行できるタスクインスタンスの最大数。
• core.dag_concurrency— DAG (ワーカーではない) の最大同時実行数。
• celery.worker_autoscale— 任意のワーカーで同時に実行できるタスクの最大数と最小数。
例えば、core.parallelismが100に設定され、core.dag_concurrencyが7に設定されている場合、2つのDAGがある場合でも、同時に合計14つのタスクしか実行できません。各DAGが同時に実行されるタスク数がcore.dag_concurrencyで7に設定されている場合、全体の並列度
がcore.parallelismで100に設定されていても、同時に実行されるタスクは最大で7つに制限されます。

Amazon MWAA 環境で
Amazon MWAA 環境では、、Amazon MWAA での Apache Airflow 構成オプションの使用、および最大ワーカー数の自動スケーリングメカニズムを使用してAmazon MWAA環境クラスの設定、Amazon
MWAA コンソールでこれらの設定を直接設定できます。core.dag_concurrency は Amazon
MWAA コンソールの Apache Airflow 設定オプションとしてドロップダウンリストでは使用できませんが、カスタム Apache Airflow 設定オプション として追加できます。
環境を作成したときに、次の設定を選択したとします。
1.

mw1.small 環境クラスは、各ワーカーがデフォルトで実行できる同時タスクの最大数とコンテ
ナーの vCPU を制御します。

2.

「最大ワーカー数」のデフォルト設定は10のワーカーです。

3.

celery.worker_autoscaleのワーカーあたりの5,5のタスクのための Apache Airflow 構成オ
プション。

つまり、環境内で 50 件のタスクを同時に実行できます。50 個を超えるタスクはキューに入れられ、実行中のタスクが完了するまで待機します。
同時実行タスクをさらに実行する。以下の構成を使用して、より多くのタスクを同時に実行するように環境を変更できます。
高パフォーマンスのユースケースの例

148

Amazon Managed Workflows for Apache Airflow

ユーザーガイド1.

環境クラス mw1.medium (デフォルトでは 10 個の同時タスク) を選択して、各ワーカーがデフォルトで実行できる同時タスクの最大数とコンテナの vCPU を増やします。

2.

celery.worker_autoscaleをApache Airflow 構成オプションとして追加してください。

3.

最大ワーカー数を増やしてください。この例では、最大ワーカーを10から20に増やすと、環境が同時に実行できるタスクの数が倍になります。

最小ワーカー数を指定します。 AWS Command Line Interface () を使用して、環境で実行される
Apache Airflow ワーカーの最小数と最大数を指定することもできますAWS CLI。例:
aws mwaa update-environment --max-workers 10 --min-workers 10 -name YOUR_ENVIRONMENT_NAME

詳細については、 AWS CLIの update-environment コマンドを参照してください。

タスクが実行状態で止まってしまう問題のトラブルシューティング
まれに、Apache Airflow がまだ実行中のタスクがあると判断することがあります。この問題を解決す
るには、Apache Airflow UI で孤立したタスクをクリアする必要があります。詳細については、トラ
ブルシューティングトピック「タスクが行き詰まっいるか、完了していません。」 を参照してください。

次のステップ• ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細について
は、「Amazon での Apache Airflow のパフォーマンスチューニング MWAA」 を参照してください。

Amazon MWAA ウェブサーバーの自動スケーリングの設定
Apache Airflow Apache Airflow v2.2.2 以降を実行している環境では、Amazon MWAA は変動する
ワークロードを処理するようにウェブサーバーを動的にスケーリングし、ピーク負荷時のパフォーマンスの問題を防ぎます。CPU 使用率とアクティブな接続数に基づいてウェブサーバーの数を自動的にスケーリングすることで、Amazon MWAA は、REST API リクエスト、CLI 使用状況、または複数の同時 Apache Airflow ユーザーインターフェイスユーザーのいずれからでも、Apache Airflow 環境
が需要の増加にシームレスに対応できるようにします。
セクション
タスクが実行状態で止まってしまう問題のトラブルシューティング

149

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• ウェブサーバーのスケーリングの仕組み• Amazon MWAA コンソールの使用

ウェブサーバーのスケーリングの仕組み
Amazon MWAA は、コンテナメトリクス CPUUtilizationとロードバランサーメトリクス を使用してActiveConnectionCount、トラフィックの量に基づいてウェブサーバーのスケー
リングが必要かどうかを判断します。CPUUtilization が 70 より大きい場合、または 15
ActiveConnectionCountより大きい場合、Amazon MWAA は で指定された最大値まで Fargate
ウェブサーバーコンテナを追加しますMaxWebservers。
トラフィックが減少し、 CPUUtilization と のActiveConnectionCount値が減少すると、Amazon MWAA は Fargate に環境のウェブサーバーコンテナを で設定された最小値にスケールダウンするよう要求しますMinimumWebservers。

Amazon MWAA コンソールの使用
Amazon MWAA コンソールで、環境で同時に実行できるウェブサーバーの数を選択できます。デ
フォルトでは、ウェブサーバーの最小数は 2 で、ウェブサーバーの最大数は 5 です。
ウェブサーバーの数を設定するには
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

[次へ] をクリックします。

5.

環境クラスペインで、ウェブサーバーの最大数 に値を入力します。

6.

次に、「ウェブサーバーの最小数」に値を入力します。

7.

[保存] を選択します。

Note
環境への変更が適用されるまで数分ほどかかります。

ウェブサーバーのスケーリングの仕組み

150

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA での Apache Airflow 構成オプションの使用
Apache Airflow 構成オプションは、Apache Airflow 用 Amazon マネージドワークフロー環境に環境変数としてアタッチできます。推奨ドロップダウンリストから選択するか、Amazon MWAA コン
ソールでお使いの Apache Airflow バージョンに合わせてカスタム構成オプションを指定できます。
このページでは、使用可能な Apache Airflow 構成オプションと、これらのオプションを使用して環境の Apache Airflow 構成設定を上書きする方法について説明します。
目次• 前提条件• 仕組み• 設定オプションを使用して Apache Airflow v2 にプラグインをロードする• 設定オプションの概要• Apache Airflow 構成オプション• Apache エアフローリファレンス• Amazon MWAA コンソールの使用• 設定リファレンス• 電子メールの設定• タスクの設定• スケジューラーの設定• ワーカーの設定• ウェブサーバーの設定• トリガー設定• 例とサンプルコード• DAG の例
• 電子メール通知の設定例• 次のステップ

前提条件
このページのステップを完了するには、以下のものが必要です。
構成オプションの使用

151

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• アクセス許可 — AWS アカウントには、管理者から環境の AmazonMWAAFullConsole アクセスコ
ントロールポリシーへのアクセスが付与されている必要があります。さらに、Amazon MWAA 環
境は、環境で使用される AWS リソースへのアクセスを実行ロールで許可する必要があります。
• アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「the section called “Apache Airflow のアクセスモード”」を参照してください。
• Amazon S3 設定 — plugins.zip で DAG、カスタムプラグイン、および requirements.txt
で Python の依存関係を保存するために使用される「Amazon S3 バケット」は、Public Access
Blocked と Versioning Enabledで構成する必要があります。

仕組み
環境を作成すると、Amazon MWAA は Airflow 設定オプションの Amazon MWAA コンソールで指定した設定を環境変数として環境の AWS Fargate コンテナにアタッチします。airflow.cfgで同じ名前の設定を使用している場合は、Amazon MWAA コンソールで指定するオプションのほうが、airflow.cfgの値よりも優先されます。
デフォルトでは、Amazon MWAA 環境の Apache Airflow UI airflow.cfgで を公開しませんが、設定を公開webserver.expose_configする設定を含め、Amazon MWAA コンソールで Apache
Airflow 設定オプションを直接変更できます。

設定オプションを使用して Apache Airflow v2 にプラグインをロードする
Apache Airflow v2 のデフォルトでは、プラグインは設定を使用して「遅延的に」ロードされるようにcore.lazy_load_plugins : True設定されています。Apache Airflow v2でカスタムプラグインを使用している場合、デフォルトの設定をオーバーライドするために、Airflow
プロセスの開始時にプラグインをロードするためのApache Airflow 構成オプションとしてcore.lazy_load_plugins : Falseを追加する必要があります。を追加する必要があります。

設定オプションの概要
Amazon MWAA コンソールで設定を追加すると、Amazon MWAA はその設定を環境変数として書き込みます。
• リストされたオプション。ドロップダウンリストで、お使いの Apache Airflow バージョンで使用可能な設定のいずれかを選択できます。例えば、dag_concurrency : 16 です。その構成設定
仕組み

152

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

は、環境のFargateコンテナにAIRFLOW__CORE__DAG_CONCURRENCY : 16として反映されます。
• 「カスタムオプション」 お使いの Apache Airflow バージョンにはない Airflow 設定オプションをドロップダウンリストに指定することもできます。例えば、foo.user : YOUR_USER_NAME です。その構成設定は、環境のFargateコンテナにAIRFLOW__FOO__USER : YOUR_USER_NAMEとして反映されます。

Apache Airflow 構成オプション
以下の画像は、Amazon MWAA コンソールで Apache Airflow 構成オプションをカスタマイズできる場所を示しています。

Apache エアフローリファレンス
Apache Airflow でサポートされている設定オプションのリストについては、『Apache Airflow リ
ファレンスガイド』の「設定リファレンス」を参照してください。Amazon MWAA で実行している
Apache Airflow のバージョンのオプションを表示するには、ドロップダウンリストからバージョンを選択します。

Amazon MWAA コンソールの使用
以下の手順では、Airflow 構成オプションを環境に追加するステップを説明します。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

[次へ] をクリックします。

5.

Airflow 設定オプションペインで [カスタム設定を追加] を選択します。

設定オプションの概要

153

Amazon Managed Workflows for Apache Airflow

6.

ユーザーガイド

ドロップダウンリストから構成を選択して値を入力するか、カスタム構成を入力して値を入力します。

7.

追加する設定ごとに [カスタム設定を追加] を選択します。

8.

[保存] を選択します。

設定リファレンス
以下のセクションでは、Amazon MWAA コンソールのドロップダウンリストに利用可能な Apache
Airflow 設定のリストが表示されます。

電子メールの設定
次のリストは、Amazon MWAA で使用できる Airflow E メール通知設定オプションを示しています。
SMTP トラフィックにはポート 587 を使用することをお勧めします。デフォルトでは、 はすべてのAmazon EC2 インスタンスのポート 25 でアウトバウンド SMTP トラフィックを AWS ブロックしま
す。ポート 25 でアウトバウンド・トラフィックを送信したい場合は、「この制限を解除するようリクエストする」ことができます。
Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

メール.メール_バッ
クエンド

email_backend のメール通知に使用される Apache エア
フローユーティリ
ティ。

airflow.utils.emai
l.send_email_smtp

v2

smtp.smtp_host

smtp_host の電子
メールアドレスに使用される送信サーバーの名前。

localhostv2

smtp.smtp_starttls

Transport Layer
Security (TLS)
は、smtp_starttlsで

False

設定リファレンス

154

Amazon Managed Workflows for Apache Airflow

Airflow のバージョン

エアフロー設定のオ
プション

ユーザーガイド

説明

値の例

インターネットの E
メールの暗号化に使用されます。
v2

smtp.smtp_ssl

セキュアソケットレイヤー (SSL)は、smtp_ssl でサーバーとメールクライ
アントを接続するために使用されます。

True

v2

smtp.smtp_port

smtp_portでサーバに指定されたTransmis
sion Control Protocol(TCP)。

587

v2

smtp.smtp_mail_from

smtp_mail_fromにあるアウトバウンド
メールアドレス。

myemail@domain.com

タスクの設定次のリストは、Amazon MWAA の Airflow タスクのドロップダウンリストで使用できる設定を示しています。
Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

core .default_task_retries

Apache エアフロー
タスクを default_t
ask_retriesでリトラ
イする回数。

3

設定リファレンス

155

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

コア・パラレリズム

環境全体で同時に実行できるタスクイン
スタンスの最大数(parallel 処理)。

40

スケジューラーの設定
次のリストは、Amazon MWAA のドロップダウンリストで使用できる Apache Airflow スケジュー
ラー設定を示しています。
Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

スケジューラー.
キャッチアップ・バ
イ・デフォルト

catchup_by_defaultの特定の時間間隔に「catch く」ための
DAG 実行を作成す
るようにスケジュー
ラーに指示します。

False

v2

scheduler.scheduler_zombie_task_thre
shold

タスクインスタンスを障害としてマークし、scheduler_zombie_task_threshold内のタスクを再スケジュールするかどうかをスケジュー
ラーに指示します。

300

設定リファレンス

156

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ワーカーの設定
次のリストは、Amazon MWAA のドロップダウンリストで使用できる Airflow ワーカー設定を示しています。
Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

celery.worker_auto
scale

worker_autoscale のCelery Executor を使用するすべてのワーカーで同時に実行できるタスクの最大数と最小数。値は次の順序でカンマ
で区切る必要があ

16、12

ります:max_concu
rrency,min_concurrency

ウェブサーバーの設定
次のリストは、Amazon MWAA のドロップダウンリストで使用できる Airflow ウェブサーバー設定を示しています。
Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2

ウェブサーバー.default_ui_timezone

default_ui_timezoneの Apache Airflow UIのデフォルト日時設定。

America/New_York

設定リファレンス

157

Amazon Managed Workflows for Apache Airflow

Airflow のバージョン

エアフロー設定のオ
プション

ユーザーガイド

説明

値の例

Note
こ
のdefault_u
i_timezon
e オプショ
ンを設定しても、DAG の
実行がスケ
ジュールさ
れているタ
イムゾーンは変更されません。DAG のタイムゾーンを変更するに
は、カスタ
ムプラグイ
ンを使用で
きます。詳細については、「the section
called “DAGのタイムゾーンの変更”」
を参照してください。

トリガー設定以下のリストは、Amazon MAA で利用できる Apache エアフロートリガー設定を示しています。

設定リファレンス

158

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v2
Airflow のバージョン

エアフロー設定のオ
プション

説明

値の例

v2.7

mwaa トリガー_enabled

Amazon MAA でトリガーをアクティ
ブ化および非アク
ティブ化するために使用されます。デフォルトでは、この値

True

は True に設定されます。Falseに設定すると、Amazon
MWAA はスケジュー
ラーのトリガープロ
セスを開始しません。
v2.7

トリガー. デフォルト
容量

各トリガーでparallelに実行できる、トリ
ガーの数を定義しま
す。Amazon MWAA
では、両方のコンポーネントが互いに並行して実行されるため、この容量はトリガーごととスケジューラーごとに設定されます。スケジュー
ラごとのデフォルト

125

は、スモール60イ
ンスタンス、ミディアムインスタンス
500、ラージインス
タンス、xlarge イン
スタンス、および
設定リファレンス

159

Amazon Managed Workflows for Apache Airflow

Airflow のバージョン

エアフロー設定のオ
プション

ユーザーガイド

説明

値の例

125 2502xlarge イン
スタンス1000で、それぞれ 、、、、および に設定されます。

例とサンプルコード
DAG の例
次の DAG を使用して email_backend Apache Airflow 構成オプションを印刷できます。Amazon
MWAA イベントに応答して実行するには、Amazon S3 ストレージバケットにある環境の DAG フォ
ルダにコードをコピーします。
from airflow.decorators import dag
from datetime import datetime
def print_var(**kwargs):
email_backend = kwargs['conf'].get(section='email', key='email_backend')
print("email_backend")
return email_backend@dag(
dag_id="print_env_variable_example",schedule_interval=None,start_date=datetime(yyyy, m, d),catchup=False,)
def print_variable_dag():
email_backend_test = PythonOperator(
task_id="email_backend_test",
python_callable=print_var,
provide_context=True)
print_variable_test = print_variable_dag()

例とサンプルコード160

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

電子メール通知の設定例
アプリパスワードを使用する Gmail.com メールアカウントには、次の Apache Airflow 構成オプショ
ンを使用できます。詳しくは、Gmail ヘルプリファレンスガイドの「アプリパスワードを使用してログインする」を参照してください。

次のステップ• DAG の追加と更新で、DAG フォルダを Amazon S3 バケットにアップロードする方法について説明します。

Apache Airflow バージョンのアップグレード
Amazon MWAA はマイナーバージョンアップグレードをサポートしています。これは、環境をバー
ジョン x.4.z から x.5.z にアップグレードできることを意味します。メジャーバージョンのアップグレード、たとえばバージョン 1.y.z から 2.y.z へのアップグレードを行うには、新しい環境を作成し、リソースを移行する必要があります。Apache Airflow の新しいメジャーバージョンへの
次のステップ161

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アップグレードの詳細については、Amazon MWAA 移行ガイドの「新しい Amazon MWAA 環境への移行」を参照してください。
アップグレードプロセス中、Amazon MWAA は環境メタデータのスナップショットをキャプチャ
し、ワーカー、スケジューラー、ウェブサーバーを新しい Apache Airflow バージョンにアップグ
レードし、最後にそのスナップショットを使用してメタデータデータベースを復元します。
Note
ご使用の環境に合わせて Apache Airflow バージョンをダウングレードすることはできません。

アップグレードする前に、DAG やその他のワークフローリソースが、アップグレード先の新しい
Apache Airflow バージョンと互換性があることを確認してください。requirements.txt を使用して依存関係を管理する場合は、要件で指定する依存関係が新しいバージョンと互換性があることも確認する必要があります。
トピック• ワークフローリソースのアップグレード• 新しいバージョンを指定してください

ワークフローリソースのアップグレード
Apache Airflow のバージョンを変更するときは必ず、--constraint 内の正しい
requirements.txt URL お客様するようにしてください。
Warning
アップグレード中に対象の Apache Airflow バージョンと互換性のない要件を指定すると、以前の要件バージョンの Apache Airflow へのロールバックプロセスに時間がかかる可能性があります。

ワークフローリソースを移行するには
1.

aws-mwaa-local-runner リポジトリのフォークを作成し、Amazon MWAA ローカルランナーのコ
ピーをクローンしてください。

ワークフローリソースのアップグレード

162

Amazon Managed Workflows for Apache Airflow

2.

ユーザーガイド

アップグレードしようとしているバージョンと一致する aws-mwaa-local-runner リポジトリのブ
ランチにチェックアウトします。

3.

Amazon MWAA ローカルランナー CLI ツールを使用して Docker イメージをビルドし、Apache
Airflow をローカルで実行します。詳細については、GitHub リポジトリのローカル・ランナー「README」を参照してください。

4.

requirements.txt を更新するには、Amazon MWAA ユーザーガイドの「Python 依存関係の管理」で推奨されているベストプラクティスに従ってください。

5.

(オプション) アップグレードプロセスをスピードアップするには、「環境のメタデータデータ
ベースをクリーンアップ」 します。メタデータの量が多い環境では、アップグレードにかなり時間がかかることがあります。

6.

ワークフローリソースのテストに成功したら、DAG、requirements.txt、およびプラグイン
を環境の Amazon S3 バケットにコピーします。

これで、環境を編集し、新しい Apache Airflow バージョンを指定して、更新手順を開始する準備ができました。

新しいバージョンを指定してください
ワークフローリソースの更新を完了して新しい Apache Airflow バージョンとの互換性を確認した
ら、次の手順を実行して環境の詳細を編集し、アップグレードする Apache Airflow のバージョンを指定します。
Note
アップグレードを実行すると、その環境で現在実行されているすべてのタスクが手順中に終了します。アップデート手順には最大 2 時間かかることがあり、その間は環境が使用できな
くなります。

コンソールを使用して新しいバージョンを指定するには
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

[環境] のリストで、アップグレードしたい環境を選択します。

3.

環境ページで [編集] を選択して環境を編集します。

4.

[環境の詳細] セクションの [Airflow バージョン] で、環境をアップグレードしたい新しい Apache
Airflow バージョン番号をドロップダウンリストから選択します。

新しいバージョンを指定してください

163

Amazon Managed Workflows for Apache Airflow

5.

[レビューと保存] ページが表示されるまで、[次へ] を選択します。

6.

[レビューと保存] ページで変更内容を確認し、[保存] を選択します。

ユーザーガイド

変更を適用すると、環境がアップグレード手順を開始します。この期間中、Amazon MWAA がどのようなアクションを実行しているか、および手順が成功したかどうかが環境の「ステータス」でわかります。
アップグレードが成功したシナリオでは、ステータスは UPDATING が表示され、その後
CREATING_SNAPSHOT となり、Amazon MWAA がメタデータのバックアップをキャプチャします。
最後に、ステータスはまず UPDATING に戻り、手順が完了すると AVAILABLE に戻ります。
環境のアップグレードに失敗した場合、環境のステータスは ROLLING_BACK を表示します。ロール
バックが成功した場合、ステータスは最初に UPDATE_FAILED を表示し、これは更新が失敗したが環境は利用可能であることを示します。ロールバックが失敗した場合、ステータスは UNAVAILABLEを表示し、環境にアクセスできないことを示します。

Amazon MWAA でのスタートアップスクリプトの使用
スタートアップスクリプトは、DAG、要件、プラグインと同様に、環境の Amazon S3 バケットでホストするシェル (.sh) スクリプトです。Amazon MWAA は、要件のインストールと Apache Airflow
プロセスの初期化の前に、このスクリプトをすべての個々の Apache Airflow コンポーネント (ワーカー、スケジューラ、ウェブサーバー) で起動中に実行します。起動スクリプトを使用して次のことができます。
• ランタイムのインストール — ワークフローと接続に必要な Linux ランタイムをインストールします。
• 環境変数の設定 — Apache Airflow コンポーネントごとに環境変数を設定しま
す。PATH、PYTHONPATH、LD_LIBRARY_PATH などの一般的な変数を上書きします。
• キーとトークンの管理 – カスタムリポジトリへのアクセストークンを requirements.txt に渡し、セキュリティキーを構成します。
以下のトピックでは、Linux ランタイムをインストールし、環境変数を設定し、CloudWatch Logs を使用して関連する問題をトラブルシューティングするための起動スクリプトを設定する方法について説明します。
トピック
スタートアップスクリプトの使用

164

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• スタートアップスクリプトを設定します。
• スタートアップスクリプトを使用して Linux ランタイムをインストールします。
• 起動スクリプトを使用して環境変数を設定する

スタートアップスクリプトを設定します。
既存の Amazon MWAA 環境で起動スクリプトを使用するには、環境の Amazon S3 バケットに .sh
ファイルをアップロードします。次に、スクリプトを環境に関連付けるには、環境の詳細で以下を指定します。
• スクリプトへの Amazon S3 URL パス — バケットでホストされているスクリプトへの相対パス。
例: s3://mwaa-environment/startup.sh• スクリプトの Amazon S3 バージョン ID — Amazon S3 バケット内の起動シェルスクリプトのバージョン。スクリプトを更新するたびに、Amazon S3 がファイルに割り当てる「バージョン ID」を指定する必要があります。バージョン ID は、ユニコード、UTF-8 エンコード、URL レディ、不透明文字列で、長さは 1,024 バイト以下で、例えば 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo です。
このセクションの手順を完了するには、次のサンプルスクリプトを使用します。このスクリプト
は、MWAA_AIRFLOW_COMPONENT に割り当てられた値を出力します。この環境変数は、スクリプトが実行される各 Apache Airflow コンポーネントを識別します。
コードをコピーし、startup.sh としてローカルに保存します。
#!/bin/shecho "Printing Apache Airflow component"
echo $MWAA_AIRFLOW_COMPONENT

次に、スクリプトを Amazon S3 バケットにアップロードします。
AWS Management Console
シェルスクリプトをアップロードするには (コンソール)
1.

AWS Management Console にサインインし、Amazon S3 コンソール https://
console.aws.amazon.com/s3/ を開きます。

2.

[バケット] リストで、環境に関連付けられているバケットの名前を選択します。

スタートアップスクリプトを設定します。

165

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

3.

[オブジェクト] タブで、[アップロード] を選択します。

4.

[アップロード] ページで、作成したシェルスクリプトをドラッグアンドドロップします。

5.

[アップロード] を選択します。

スクリプトは [オブジェクト] のリストに表示されます。Amazon S3 によって、ファイルの新しいバージョン ID が作成されます。スクリプトを更新し、同じファイル名を使用して再度アップロードすると、新しいバージョン ID がファイルに割り当てられます。
AWS CLI
シェルスクリプト (CLI) を作成してアップロードするには1.

新しいコマンドプロンプトを開き、Amazon S3 ls コマンドを実行して、環境に関連付けられているバケットを一覧表示して識別します。
$ aws s3 ls2.

シェルスクリプトを保存したフォルダに移動します。新しいプロンプトウィンドウで cp を使用して、スクリプトをバケットにアップロードします。your-s3-bucket を情報に置き換えてください。
$ aws s3 cp startup.sh s3://your-s3-bucket/startup.sh

成功すると、Amazon S3 はオブジェクトへの URL パスを出力します。
upload: ./startup.sh to s3://your-s3-bucket/startup.sh

3.

次のコマンドを使って、スクリプトの最新バージョン ID を取得します。
$ aws s3api list-object-versions --bucket your-s3-bucket --prefix startup -query 'Versions[?IsLatest].[VersionId]' --output text

BbdVMmBRjtestta1EsVnbybZp1Wqh1J4

このバージョン ID は、スクリプトを環境に関連付けるときに指定します。
次に、スクリプトを環境に関連付けます。
スタートアップスクリプトを設定します。

166

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS Management Console
スクリプトを環境に関連付けるには (コンソール)
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

更新する環境の行を選択し、[編集] を選択します。

3.

[詳細の指定] ページの [スタートアップスクリプトファイル — オプション] に、スクリプトのAmazon S3 URL を入力します 例: s3://your-mwaa-bucket/startup-sh.。

4.

ドロップダウンリストから最新バージョンを選択するか、[ブラウザ S3] をクリックしてスクリプトを検索します。

5.

[次] を選択して、[レビュー] ページを開きます。

6.

変更を確認し、[保存] を選択します。

環境の更新には 10 分から 30 分かかることがあります。Amazon MWAA は、環境内の各コン
ポーネントの再起動時に起動スクリプトを実行します。
AWS CLI
スクリプトを環境 (CLI) に関連付けるには•コマンドプロンプトを開き、update-environment を使用してスクリプトの Amazon S3
URL とバージョン ID を指定します。
$ aws mwaa update-environment \--name your-mwaa-environment \--startup-script-s3-path startup.sh \--startup-script-s3-object-version BbdVMmBRjtestta1EsVnbybZp1Wqh1J4成功すると、Amazon MWAA から環境の Amazon リソースネーム (ARN) が返されます。
arn:aws::airflow:us-west-2:123456789012:environment/your-mwaa-environment

環境の更新には 10 分から 30 分かかることがあります。Amazon MWAA は、環境内の各コン
ポーネントの再起動時に起動スクリプトを実行します。
最後に、ログイベントを取得して、スクリプトが期待どおりに動作していることを確認します。各Apache Airflow コンポーネントのロギングを有効にすると、Amazon MWAA は新しいロググループ
スタートアップスクリプトを設定します。

167

Amazon Managed Workflows for Apache Airflow

ユーザーガイドとログストリームを作成します。詳細については、「Apache Airflow ログタイプ」を参照してください。
AWS Management Console
Apache Airflow ログストリームを確認するには (コンソール)
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[モニタリング] ペインで、ログを表示したいロググループ ([Airflow スケジューラロググルー
プ] など) を選択します。

4.

CloudWatch コンソールで、[ログストリーム] リストから以下のプレフィックスを持つスト
リームを選択します: startup_script_exection_ip.

5.

[ログイベント] ペインには、MWAA_AIRFLOW_COMPONENT の値を表示するコマンドの出力が表示されます。たとえば、スケジューラーログの場合、次のようになります。
Printing Apache Airflow component
scheduler
Finished running startup script. Execution time: 0.004s.
Running verification
Verification completed

前の手順を繰り返して、ワーカーとウェブサーバーのログを表示できます。

スタートアップスクリプトを使用して Linux ランタイムをインストールします。
起動スクリプトを使用して Apache Airflow コンポーネントのオペレーティングシステムを更新し、ワークフローで使用する追加のランタイムライブラリをインストールします。例えば、次のスクリプ
トは yum update を実行してオペレーティングシステムを更新します。
スタートアップスクリプトで yum update を実行する際は、例に示すように -exclude=python* を使用して Python を除外する必要があります。環境を実行するために、Amazon MWAA は環境と互換性のある特定のバージョンの Python をインストールします。そのため、起動スクリプトを使用して環境の Python バージョンを更新することはできません。
#!/bin/shLinux ランタイムのインストール

168

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

echo "Updating operating system"
sudo yum update -y --exclude=python*

特定の Apache Airflow コンポーネントにランタイムをインストールするには、MWAA_AIRFLOW_COMPONENT、if、fi の条件文を使用します。この例では、libaio ライブラ
リをスケジューラとワーカーにインストールする単一のコマンドを実行しますが、ウェブサーバーにはインストールしません。
Important• 「プライベートウェブサーバー」を設定した場合は、インストールタイムアウトを回避するために、次の条件を使用するか、すべてのインストールファイルをローカルで提供する必要があります。
• 管理特権が必要な操作を実行するには、sudo を使用します。

#!/bin/sh
if [[ "${MWAA_AIRFLOW_COMPONENT}" != "webserver" ]]thensudo yum -y install libaio
fi

起動スクリプトを使用して Python のバージョンを確認できます。
#!/bin/shexport PYTHON_VERSION_CHECK=`python -c 'import sys; version=sys.version_info[:3];print("{0}.{1}.{2}".format(*version))'`echo "Python version is $PYTHON_VERSION_CHECK"

Amazon MWAA はデフォルトの Python バージョンのオーバーライドをサポートしていません。これは、インストールされている Apache Airflow ライブラリとの互換性がなくなる可能性があるためです。

Linux ランタイムのインストール

169

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

起動スクリプトを使用して環境変数を設定する
起動スクリプトを使用して環境変数を設定し、Apache Airflow 設定を変更します。以下は、新しい変数 ENVIRONMENT_STAGE を定義しています。この変数は DAG またはカスタムモジュールで参照できます。
#!/bin/shexport ENVIRONMENT_STAGE="development"echo "$ENVIRONMENT_STAGE"

起動スクリプトを使用して、一般的な Apache Airflow またはシステム変数を上書きします。例えば、LD_LIBRARY_PATH を設定して Python に対してバイナリを指定したパスで探すように指示します。これにより、「プラグイン」を使用してワークフローにカスタムバイナリを提供できます。
#!/bin/shexport LD_LIBRARY_PATH=/usr/local/airflow/plugins/your-custom-binary

予約済み環境変数
Amazon MWAA は一連の重要な環境変数を予約します。予約された変数を上書きすると、Amazon
MWAA はその変数をデフォルトに戻します。リザーブド変数は以下のとおりです。
• MWAA__AIRFLOW__COMPONENT — 次のいずれかの値で Apache Airflow コンポーネントを識別するために使用されます: scheduler、worker、または webserver。
• AIRFLOW__WEBSERVER__SECRET_KEY — Apache Airflow ウェブサーバのセッションクッキーに安全に署名するために使用されるシークレットキー。
• AIRFLOW__CORE__FERNET_KEY — メタデータデータベースに保存されている機密データ（接続パスワードなど）の暗号化と復号化に使用されるキー。
• AIRFLOW_HOME — 設定ファイルと DAG ファイルがローカルに保存されている Apache Airflow
ホームディレクトリへのパス。
• AIRFLOW__CELERY__BROKER_URL — Apache Airflow スケジューラーと Celery ワーカーノード間の通信に使用されるメッセージブローカーの URL。
• AIRFLOW__CELERY__RESULT_BACKEND — Celery タスクの結果を保存するために使用される
データベースの URL。
環境変数を設定する

170

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AIRFLOW__CORE__EXECUTOR — Apache Airflow が使用する必要のあるエグゼキュータークラ
ス。Amazon MWAA では、これは CeleryExecutor です• AIRFLOW__CORE__LOAD_EXAMPLES — サンプル DAG のロードを有効化または無効化するために使用されます。
• AIRFLOW__METRICS__METRICS_BLOCK_LIST — Amazon MWAA がどのような Apache Airflow
メトリクスを生成し、CloudWatch でキャプチャするかを管理するために使用されます。
• SQL_ALCHEMY_CONN — Amazon MWAA に Apache Airflow メタデータを保存するために使用される RDS for PostgreSQL データベースの接続文字列。
• AIRFLOW__CORE__SQL_ALCHEMY_CONN — SQL_ALCHEMY_CONN と同じ目的で使用されますが、新しい Apache Airflow の命名規則に従います。
• AIRFLOW__CELERY__DEFAULT_QUEUE — Apache Airflow の Celery タスクのデフォルトキュー。
• AIRFLOW__OPERATORS__DEFAULT_QUEUE — 特定の Apache Airflow オペレータを使用するタス
クのデフォルトキュー。
• AIRFLOW_VERSION — Amazon MWAA 環境にインストールされている Apache Airflow バージョン。
• AIRFLOW_CONN_AWS_DEFAULT — 他の AWS サービスと統合するために使用されるデフォルトのAWS 資格情報。
• AWS_DEFAULT_REGION — デフォルトの資格情報と統合するために使用されるデフォルトの AWS
リージョンを設定します。他の AWS サービスと統合します。
• AWS_REGION — 定義されている場合、この環境変数は環境変数 AWS_DEFAULT_REGION およびプロファイル設定のリージョンの値を上書きします。
• PYTHONUNBUFFERED —コンテナログに stdout および stderr のストリームを送信するために使用されます。
• AIRFLOW__METRICS__STATSD_ALLOW_LIST — リストの要素で始まるメトリクスを送信するた
めの、コンマで区切られたプレフィックスの許可リストを設定するために使用されます。
• AIRFLOW__METRICS__STATSD_ON — StatsD へのメトリクスの送信を有効にします。
• AIRFLOW__METRICS__STATSD_HOST — StatSD デーモンへの接続に使用されます。
• AIRFLOW__METRICS__STATSD_PORT — StatSD デーモンへの接続に使用されます。
• AIRFLOW__METRICS__STATSD_PREFIX — StatSD デーモンへの接続に使用されます。
• AIRFLOW__CELERY__WORKER_AUTOSCALE — 同時実行数の最大値と最小値を設定します。
• AIRFLOW__CORE__DAG_CONCURRENCY — 1 つの DAG でスケジューラーが同時に実行できるタ
スクインスタンスの数を設定します。
環境変数を設定する

171

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AIRFLOW__CORE__MAX_ACTIVE_TASKS_PER_DAG — DAG あたりのアクティブタスクの最大数を設定します。
• AIRFLOW__CORE__PARALLELISM — 同時に実行できるタスクインスタンスの最大数を定義します。
• AIRFLOW__SCHEDULER__PARSING_PROCESSES — DAG をスケジュールするためにスケジュー
ラーが解析するプロセスの最大数を設定します。
• AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__VISIBILITY_TIMEOUT — メッセージが別のワーカーに再配信されるまでに、ワーカーがタスクの承認を待つ秒数を定義します。
• AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__REGION — 基礎となる Celery トランスポートの AWS リージョンを設定します。
• AIRFLOW__CELERY_BROKER_TRANSPORT_OPTIONS__PREDEFINED_QUEUES — 基盤となる
Celery トランスポートのキューを設定します。
• AIRFLOW_SCHEDULER_ALLOWED_RUN_ID_PATTERN— DAG をトリガーする際の run_id パラ
メータの入力の妥当性を確認するために使用されます。
• AIRFLOW__WEBSERVER__BASE_URL — Apache Airflow UI をホストするために使用されるウェブサーバーの URL。

予約されていない環境変数
起動スクリプトを使用して、予約されていない環境変数を上書きできます。以下に、これらの一般的な変数のいくつかを列挙します。
• PATH — オペレーティングシステムが実行ファイルとスクリプトを検索するディレクトリのリストを指定します。コマンドがコマンドラインで実行されると、システムはコマンドを見つけて実行するために PATH のディレクトリを順番にチェックします。Apache Airflow でカスタムオペレータ
やタスクを作成する場合、外部スクリプトや実行可能ファイルに依存することがあるかもしれません。これらのファイルを含むディレクトリが PATH の変数で指定されていない場合、システムはそれらを見つけることができないため、タスクは実行に失敗します。適切なディレクトリを PATH に追加することで、Apache Airflow タスクは必要な実行可能ファイルを見つけて実行できるようになります。
• PYTHONPATH — Python インタープリターが、インポートされたモジュールやパッケージを検索するディレクトリを決定するために使用されます。デフォルトの検索パスに追加できるディレク
トリのリストです。これにより、インタプリタは標準ライブラリに含まれていない、またはシス
テムディレクトリにインストールされていない Python ライブラリを見つけて読み込むことができ環境変数を設定する

172

Amazon Managed Workflows for Apache Airflow

ユーザーガイドます。この変数を使用してモジュールとカスタム Python パッケージを追加し、DAG で使用します。
• LD_LIBRARY_PATH — Linux の動的リンカーとローダーが共有ライブラリを検索してロードするために使用する環境変数。共有ライブラリを含むディレクトリのリストを指定し、デフォルトのシ
ステムライブラリディレクトリの前に検索します。この変数を使用してカスタムバイナリを指定します。
• CLASSPATH — Java ランタイム環境 (JRE) と Java 開発キット (JDK) によって使用され、実行時に Java クラス、ライブラリ、リソースを検索してロードします。コンパイルされた Java コードを含むディレクトリ、JAR ファイル、および ZIP アーカイブのリストです。

環境変数を設定する

173

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA での DAG の取り扱い
Amazon Managed Workflows for Apache Airflow 環境でダイレクト非循環グラフ (DAG) を実行す
るには、環境に接続されている Amazon S3 ストレージバケットにファイルをコピーし、Amazon
MWAA コンソール上の DAG とサポートファイルの場所を Amazon MWAA に知らせます。Amazon
MWAA は、ワーカー、スケジューラー、ウェブサーバー間で DAG を同期します。このガイドでは、Amazon MWAA 環境に DAG を追加または更新する方法、およびカスタムプラグインと Python
依存関係をインストールする方法について説明します。
トピック• Amazon S3 バケットの概要• DAG の追加と更新• カスタムプラグインのインストール• Python 依存関係のインストール• Amazon S3 でファイルの削除

Amazon S3 バケットの概要
Amazon MWAA 環境の Amazon S3 バケットには、パブリックアクセスがブロックされている必要があります。デフォルトでは、Amazon S3 のリソースバケット、オブジェクト、関連サブリソース(例: 設定や 設定) などのすべてのリソースはプライベートです。
• リソース所有者 (バケットを作成した AWS アカウント) のみが、リソースにアクセスできます。
リソースの所有者 (管理者など) は、アクセス制御ポリシーを作成することにより、他のユーザーにアクセス許可を付与することもできます。
• 設定するアクセスポリシーには、Amazon S3 バケットに DAG、requirements.txt のカスタム
プラグイン、および plugins.zip のPython 依存関係を追加する権限が必要です。必要なアクセ
ス権限を含むポリシーの例については、「AmazonMWAAFullConsoleAccess」を参照してください。
Amazon MWAA 環境の Amazon S3 バケットでは、バージョニング管理が有効になっている必要があります。Amazon S3 バケットのバージョニング管理が有効になっている場合、新しいバージョンが作成されるたびに、新しいコピーが作成されます。
Amazon S3 バケットの概要

174

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• バージョニングは、Amazon S3 バケットの plugins.zip のカスタムプラグインと
requirements.txt の Python 依存関係に対して有効になっています。
• Amazon S3 バケットでこれらのファイルが更新されるたびに、Amazon MWAA コンソール
で、plugins.zip と requirements.txt のバージョンを指定する必要があります。

DAG の追加と更新
有向非巡回グラフ (DAG) は、DAG の構造をコードとして定義する Python ファイル内で定義されます。AWS CLI および Amazon S3 コンソールを使用して、DAG をご利用の環境にアップロードできます。このページでは、Amazon S3 バケット内の dags フォルダを使用して、Amazon Managed
Workflows for Apache Airflow 環境に Apache Airflow DAG を追加または更新する手順について説明し
ます。
セクション
• 前提条件• 使用方法• v2 での変更点• Amazon MWAA CLI ユーティリティを使用した DAG のテスト
• Amazon S3 への DAG コードのアップロード• Amazon MWAA コンソールで DAG フォルダへのパスを指定する (初回)
• Apache Airflow UI での変更の表示• 次のステップ

前提条件
このページのステップを完了するには、以下のものが必要です。
• 権限 — AWS アカウントには、管理者から、ご使用の環境の「AmazonMWAAFullConsoleAccess」 アクセスコントロールポリシーへのアクセス権限が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリ
ソースへのアクセスを「実行ロール」で許可されている必要があります。
• アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「the section called “Apache Airflow のアクセスモード”」を参照してください。
DAG の追加と更新

175

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon S3 設定 — plugins.zip で DAG、カスタムプラグイン、および requirements.txt
で Python の依存関係を保存するために使用される「Amazon S3 バケット」は、Public Access
Blocked と Versioning Enabledで構成する必要があります。

使用方法
有向非巡回グラフ (DAG) は、DAG の構造をコードとして定義する単一の Python ファイル内で定義されます。その構成は以下の通りである：• 「DAG」 の定義。
• DAG の実行方法と実行する「タスク」 を説明する「オペレーター」。
• タスクを実行する順序を記述する「オペレータ関係」。
Amazon MWAA 環境で Apache Airflow プラットフォームを実行するには、DAG 定義をストレージバ
ケット内の dags フォルダにコピーする必要があります。たとえば、ストレージバケット内の DAG
フォルダは以下のようになっている場合があります。
Example DAG フォルダーdags/# dag_def.py

Amazon MWAA は、Amazon S3 バケットの新規オブジェクトと変更されたオブジェクトを 30 秒ごとに Amazon MWAA スケジューラとワーカーコンテナの /usr/local/airflow/dags フォルダに自動的に同期し、ファイルタイプに関係なく Amazon S3 ソースのファイル階層を維持します。新しい DAG が Apache Airflow UI に表示されるまでの時間は、scheduler.dag_dir_list_interval
によって制御されます。既存の DAG への変更は、次の「DAG 処理ループ」 で取り込まれます。
Note
DAG フォルダーには airflow.cfg 設定ファイルを含める必要はありません。Amazon
MWAA コンソールからデフォルトの Apache Airflow 設定を上書きできます。詳細について
は、「Amazon MWAA での Apache Airflow 構成オプションの使用」を参照してください。

使用方法

176

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

v2 での変更点• 新規:オペレータ、フック、エグゼキューター。Apache Airflow v1と Apache Airflow
v2 の間で、Amazon MWAA の plugins.zip に指定する DAG 内のインポート文やカスタムプラグインが変更されています。例えば、Apache Airflow v1の fromairflow.contrib.hooks.aws_hook import AwsHook は、Apache Airflow v2 では fromairflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook に変更されています。詳細については、Apache Airflow リファレンスガイドの「Python API リファレンス」 を参照してください。

Amazon MWAA CLI ユーティリティを使用した DAG のテスト
• コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for
Apache Airflow (Amazon MWAA) 環境をローカルに複製します。
• CLI は、Amazon MWAA のプロダクションイメージに似た Docker コンテナイメージをローカルで
ビルドします。これにより、Amazon MWAA にデプロイする前に、ローカルの Apache Airflow 環
境を実行して DAG、カスタムプラグイン、依存関係を開発およびテストできます。
• CLI を実行するには、GitHub の「aws-mwaa-local-runner」 を参照してください。

Amazon S3 への DAG コードのアップロード
Amazon S3 コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon S3
バケットに DAG コードをアップロードできます。以下の手順では、コード（.py)をAmazon S3バケット内の dags という名前のフォルダーにアップロードすることを前提としています。

AWS CLI を使用する場合
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS
サービスとやり取りするためのオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• 「AWS CLI - バージョン 2 のインストール」• 「AWS CLI - aws configure によるクイック設定」

v2 での変更点

177

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS CLI を使用してアップロードするには
1.

以下のコマンドを使って、Amazon S3 バケットをすべてリストアップしますaws s3 ls

2.

以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一
覧表示します。
aws s3 ls s3://YOUR_S3_BUCKET_NAME

3.

以下のコマンドは、dag_def.py ファイルを dags フォルダにアップロードします。
aws s3 cp dag_def.py s3://YOUR_S3_BUCKET_NAME/dags/

Amazon S3 バケットに dags という名前のフォルダがまだ存在しない場合、このコマンドはdags フォルダを作成し、新しいフォルダに名前が dag_def.py のファイルをアップロードします。

Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理できるウェブベース
のユーザーインターフェイスです。以下の手順では、DAGs フォルダーが dags という名前であると仮定しています。
Amazon S3 コンソールを使ってアップロードするには1.

Amazon MWAA コンソールで「環境ページ」 を開きます。

2.

環境を選択します。

3.

Amazon S3コンソールの「DAG コード in S3」ペインでDAG コード内のS3バケット リンクを選択して、ストレージバケットを開きます。

4.

dags フォルダを選択します。

5.

[アップロード] を選択します。

6.

[ファイルの追加] を選択します。

7.

dag_def.py のローカルコピーを選択し、[アップロード] を選択します。

Amazon S3 への DAG コードのアップロード

178

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA コンソールで DAG フォルダへのパスを指定する (初回)
以下の手順では、dags という名前の Amazon S3 バケット上のフォルダへのパスを指定していると仮定します。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

DAG を実行する環境を選択します。

3.

[Edit] (編集) を選択します。

4.

[Amazon S3 ペインの DAG コード] で、[DAG フォルダ] のフィールドの横にある [S3 を参照] を選択します。

5.

dags フォルダを選択します。

6.

[選択] を選択します。

7.

[次へ]、[環境の更新] を選択します。

Apache Airflow UI での変更の表示
Apache Airflow へのログイン
Apache Airflow UI を表示するためには、AWS Identity and Access Management (IAM) で AWS アカ
ウントに対して Apache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccess のアクセス許可が必要です。
Apache Airflow UI にアクセスするには1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[Airflow UI を開く] を選択します。

次のステップ• GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

DAGs フォルダへのパスの指定

179

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

カスタムプラグインのインストール
Amazon Managed Workflows for Apache Airflow は Apache Airflow の組み込みプラグインマネー
ジャーをサポートしているため、カスタム Apache Airflow オペレータ、フック、センサー、または
インターフェイスを使用できます。このページでは、 plugins.zip ファイルを使用して Amazon
MWAA環境に Apache Airflow カスタムプラグインをインストールする手順について説明します。
目次• 前提条件• 仕組み• プラグインを使用するタイミング• カスタムプラグイン数• カスタムプラグインのディレクトリとサイズの制限• カスタムプラグイン数• plugins.zip でフラットなディレクトリ構造を使用する例• plugins.zip のネストされたディレクトリ構造を使用する例• plugins.zip ファイルの作成• ステップ 1: Amazon MWAACLIユーティリティを使用してカスタムプラグインをテストする• ステップ 2: plugins.zip ファイルを作成する• plugins.zip を Amazon S3 にアップロードします。
• の使用 AWS CLI• Amazon S3 コンソールの使用• 環境へのカスタムプラグインのインストール• Amazon MWAAコンソールplugins.zipでの へのパスの指定 (初回）
• Amazon MWAAコンソールでplugins.zipバージョンを指定する• plugins.zip のユースケースの例• 次のステップ

前提条件
このページのステップを完了するには、以下のものが必要です。
カスタムプラグインのインストール

180

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• アクセス許可 — AWS アカウントには、管理者から環境の AmazonMWAAFullConsoleAccess ア
クセスコントロールポリシーへのアクセスが付与されている必要があります。さらに、Amazon
MWAA環境は、環境で使用される AWS リソースへのアクセスを実行ロールで許可する必要があります。
• アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「the section called “Apache Airflow のアクセスモード”」を参照してください。
• Amazon S3 設定 — 、 のカスタムプラグインDAGs、および Python の依存関係を保存するために使用される Amazon S3 バケットはplugins.zip、パブリックアクセスブロックおよびバージョ
ニングが有効な で設定requirements.txtする必要があります。

仕組み
カスタムプラグインを環境で実行するには、次の 3 つのことを行う必要があります。
1.

plugins.zip ファイルをローカルに作成します。

2.

plugins.zip のファイルを Amazon S3 のバケットにアップロードしてください。

3.

このファイルのバージョンを Amazon MWAAコンソールのプラグインファイルフィールドに指
定します。

Note
を Amazon S3 バケットplugins.zipに初めてアップロードする場合は、Amazon MWAAコ
ンソールで ファイルへのパスも指定する必要があります。 Amazon S3 1 回だけこのステップを行ってください。

プラグインを使用するタイミング
プラグインは、「Apache Airflow ドキュメント」で説明されているように、Apache Airflow ユー
ザーインターフェイスを拡張するためにのみ必要です。カスタム演算子は、DAGコードと一緒に /dagsフォルダに直接配置できます。

仕組み

181

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

外部システムとの独自の統合を作成する必要がある場合は、/ dagsフォルダまたはサブフォルダ内に配置しますが、 plugins.zip フォルダには配置しません。Apache Airflow 2.x では、プラグインは
主に UI の拡張に使用されます。
同様に、他の依存関係を に配置しないでくださいplugins.zip。代わりに、Amazon S3 /dagsフォルダの下の場所に保存して、Apache Airflow の開始前に各 Amazon MWAAコンテナに同期
できます。
Note
Apache Airflow DAG オブジェクトを明示的に定義plugins.zipしていない/dagsフォルダ
または 内のファイルは、 .airflowignore ファイルにリストされている必要があります。

カスタムプラグイン数
Apache Airflow の組み込みプラグインマネージャは、単にファイルを$AIRFLOW_HOME/
pluginsフォルダにドロップすることで外部の機能をコアに統合できます。これにより、カスタ
ムの Apache Airflow オペレータ、フック、センサー、またはインターフェースを使用できます。
次のセクションでは、ローカル開発環境におけるフラットでネストされたディレクトリ構造の例と、plugins.zip 内のディレクトリ構造を決定する import ステートメントの例を示します。

カスタムプラグインのディレクトリとサイズの制限
Apache Airflow スケジューラとワーカーは、 の環境の AWSマネージド Fargate コンテナで起動時にカスタムプラグインを探します/usr/local/airflow/plugins/*。
• ディレクトリ構造。(/*での) ディレクトリ構造は、plugins.zip ファイルの内容に基づいています。例えば、plugins.zip に operators ディレクトリがトップレベルディレクトリとして含まれている場合、そのディレクトリは環境の /usr/local/airflow/plugins/operators に抽出されます。
• サイズ制限。1 GB 未満の plugins.zip ファイルをお勧めします。plugins.zip ファイ
ルのサイズが大きいほど、環境でのスタートアップ時間が長くなります。Amazon MWAA
はplugins.zipファイルのサイズを明示的に制限しませんが、10 分以内に依存関係をインストー
ルできない場合、Fargate サービスはタイムアウトし、環境を安定した状態にロールバックしようとします。

カスタムプラグイン数

182

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
Apache Airflow v1.10.12 または Apache Airflow v2.0.2 を使用する環境では、Amazon はApache Airflow ウェブサーバー上のアウトバウンドトラフィックMWAAを制限し、プラグインや Python の依存関係をウェブサーバーに直接インストールすることはできません。Apache Airflow v2.2.2 以降、Amazon MWAAはプラグインと依存関係をウェブサーバーに直接インストールできます。

カスタムプラグイン数
次のセクションでは、Apache Airflow リファレンスガイドのサンプルコードが 使用して、ローカル
開発環境を構築する方法を示します。

plugins.zip でフラットなディレクトリ構造を使用する例
Apache Airflow v2
次の例は、Apache Airflow v2 向けのフラットなディレクトリ構造を持つ plugins.zip ファイルを示しています。
Example PythonVirtualenvOperator plugins.zip を使用したフラットディレクトリ
次の例は、 の PythonVirtualenvOperator カスタムプラグインの plugins.zip ファイルの最上位ツリーを示していますApache Airflow 用のカスタムプラグインの作成 PythonVirtualenvOperator。
### virtual_python_plugin.py

Example plugins/virtual_python_plugin.py
次の例は、 PythonVirtualenvOperator カスタムプラグインを示しています。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
カスタムプラグイン数183

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow.plugins_manager import AirflowPlugin
import airflow.utils.python_virtualenv
from typing import List
def _generate_virtualenv_cmd(tmp_dir: str, python_bin: str, system_site_packages:bool) -> List[str]:
cmd = ['python3','/usr/local/airflow/.local/lib/python3.7/site-packages/
virtualenv', tmp_dir]
if system_site_packages:
cmd.append('--system-site-packages')
if python_bin is not None:
cmd.append(f'--python={python_bin}')return cmd
airflow.utils.python_virtualenv._generate_virtualenv_cmd=_generate_virtualenv_cmd
class VirtualPythonPlugin(AirflowPlugin):name = 'virtual_python_plugin'Apache Airflow v1
次の例は、Apache Airflow v1 用のフラットなディレクトリ構造の plugins.zip ファイルを示しています。
Example PythonVirtualenvOperator plugins.zip を使用したフラットディレクトリ
次の例は、 の PythonVirtualenvOperator カスタムプラグインの plugins.zip ファイルの最上位ツリーを示していますApache Airflow 用のカスタムプラグインの作成 PythonVirtualenvOperator。
### virtual_python_plugin.py

Example plugins/virtual_python_plugin.py
次の例は、 PythonVirtualenvOperator カスタムプラグインを示しています。
カスタムプラグイン数184

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow.plugins_manager import AirflowPlugin
from airflow.operators.python_operator import PythonVirtualenvOperator
def _generate_virtualenv_cmd(self, tmp_dir):
cmd = ['python3','/usr/local/airflow/.local/lib/python3.7/site-packages/
virtualenv', tmp_dir]
if self.system_site_packages:
cmd.append('--system-site-packages')
if self.python_version is not None:
cmd.append('--python=python{}'.format(self.python_version))
return cmd
PythonVirtualenvOperator._generate_virtualenv_cmd=_generate_virtualenv_cmd
class EnvVarPlugin(AirflowPlugin):name = 'virtual_python_plugin'plugins.zip のネストされたディレクトリ構造を使用する例
Apache Airflow v2
次の例は、Apache Airflow v2 向けの hooks、operators、および sensors ディレクトリのためにそれぞれ異なるディレクトリを持つ plugins.zip ファイルを示しています。
Example plugins.zip__init__.py
my_airflow_plugin.py
hooks/|-- __init__.py|-- my_airflow_hook.py
operators/|-- __init__.py|-- my_airflow_operator.py|-- hello_operator.py
sensors/|-- __init__.py|-- my_airflow_sensor.py

次の例は、カスタムプラグインを使用する DAG ( DAGsフォルダ ) のインポートステートメント
を示しています。
カスタムプラグイン数

185

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Example dags/your_dag.py
from airflow import DAG
from datetime import datetime, timedeltafrom operators.my_airflow_operator import MyOperator
from sensors.my_airflow_sensor import MySensor
from operators.hello_operator import HelloOperator
default_args = {'owner': 'airflow','depends_on_past': False,'start_date': datetime(2018, 1, 1),'email_on_failure': False,'email_on_retry': False,'retries': 1,'retry_delay': timedelta(minutes=5),}

with DAG('customdag',
max_active_runs=3,
schedule_interval='@once',
default_args=default_args) as dag:sens = MySensor(
task_id='taskA')
op = MyOperator(
task_id='taskB',
my_field='some text')
hello_task = HelloOperator(task_id='sample-task', name='foo_bar')sens >> op >> hello_task

Example plugins/my_airflow_plugin.py
from airflow.plugins_manager import AirflowPlugin
from hooks.my_airflow_hook import *カスタムプラグイン数186

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom operators.my_airflow_operator import *class PluginName(AirflowPlugin):name = 'my_airflow_plugin'hooks = [MyHook]operators = [MyOperator]
sensors = [MySensor]

次の例は、カスタムプラグインファイルに必要な各インポートステートメントを示しています。
Example hooks/my_airflow_hook.py
from airflow.hooks.base import BaseHook

class MyHook(BaseHook):
def my_method(self):
print("Hello World")

Example sensors/my_airflow_sensor.py
from airflow.sensors.base import BaseSensorOperator
from airflow.utils.decorators import apply_defaults

class MySensor(BaseSensorOperator):@apply_defaults
def __init__(self,*args,**kwargs):
super(MySensor, self).__init__(*args, **kwargs)
def poke(self, context):
return True

Example operators/my_airflow_operator.py
from airflow.operators.bash import BaseOperator
カスタムプラグイン数187

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow.utils.decorators import apply_defaults
from hooks.my_airflow_hook import MyHook

class MyOperator(BaseOperator):@apply_defaults
def __init__(self,
my_field,*args,**kwargs):
super(MyOperator, self).__init__(*args, **kwargs)
self.my_field = my_fielddef execute(self, context):
hook = MyHook('my_conn')
hook.my_method()

Example operators/hello_operator.py
from airflow.models.baseoperator import BaseOperator
from airflow.utils.decorators import apply_defaults
class HelloOperator(BaseOperator):@apply_defaults
def __init__(self,
name: str,**kwargs) -> None:super().__init__(**kwargs)
self.name = namedef execute(self, context):
message = "Hello {}".format(self.name)print(message)
return message「Amazon MWAACLIユーティリティを使用してカスタムプラグインをテストする」のステップ
に従い、「plugins.zip ファイルを作成してpluginsディレクトリ内のコンテンツを圧縮します。
例えば、cd plugins と指定します。

カスタムプラグイン数

188

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow v1
次の例は、Apache Airflow v1.10.12 向けの hooks、operators、および sensors ディレクトリ
のためにそれぞれ異なるディレクトリを持つ plugins.zip ファイルを示しています。
Example plugins.zip__init__.py
my_airflow_plugin.py
hooks/|-- __init__.py|-- my_airflow_hook.py
operators/|-- __init__.py|-- my_airflow_operator.py|-- hello_operator.py
sensors/|-- __init__.py|-- my_airflow_sensor.py

次の例は、カスタムプラグインを使用する DAG ( DAGsフォルダ ) のインポートステートメント
を示しています。
Example dags/your_dag.py
from airflow import DAG
from datetime import datetime, timedeltafrom operators.my_operator import MyOperator
from sensors.my_sensor import MySensor
from operators.hello_operator import HelloOperator
default_args = {'owner': 'airflow','depends_on_past': False,'start_date': datetime(2018, 1, 1),'email_on_failure': False,'email_on_retry': False,'retries': 1,'retry_delay': timedelta(minutes=5),}

カスタムプラグイン数

189

Amazon Managed Workflows for Apache Airflow

ユーザーガイドwith DAG('customdag',
max_active_runs=3,
schedule_interval='@once',
default_args=default_args) as dag:sens = MySensor(
task_id='taskA')
op = MyOperator(
task_id='taskB',
my_field='some text')
hello_task = HelloOperator(task_id='sample-task', name='foo_bar')sens >> op >> hello_task

Example plugins/my_airflow_plugin.py
from airflow.plugins_manager import AirflowPlugin
from hooks.my_airflow_hook import *from operators.my_airflow_operator import *from utils.my_utils import *class PluginName(AirflowPlugin):name = 'my_airflow_plugin'hooks = [MyHook]operators = [MyOperator]
sensors = [MySensor]

次の例は、カスタムプラグインファイルに必要な各インポートステートメントを示しています。
Example hooks/my_airflow_hook.py
from airflow.hooks.base_hook import BaseHook

class MyHook(BaseHook):
カスタムプラグイン数

190

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

def my_method(self):
print("Hello World")

Example sensors/my_airflow_sensor.py
from airflow.sensors.base_sensor_operator import BaseSensorOperator
from airflow.utils.decorators import apply_defaults

class MySensor(BaseSensorOperator):@apply_defaults
def __init__(self,*args,**kwargs):
super(MySensor, self).__init__(*args, **kwargs)
def poke(self, context):
return True

Example operators/my_airflow_operator.py
from airflow.operators.bash_operator import BaseOperator
from airflow.utils.decorators import apply_defaults
from hooks.my_hook import MyHook

class MyOperator(BaseOperator):@apply_defaults
def __init__(self,
my_field,*args,**kwargs):
super(MyOperator, self).__init__(*args, **kwargs)
self.my_field = my_fielddef execute(self, context):
hook = MyHook('my_conn')
hook.my_method()

カスタムプラグイン数

191

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Example operators/hello_operator.py
from airflow.models.baseoperator import BaseOperator
from airflow.utils.decorators import apply_defaults
class HelloOperator(BaseOperator):@apply_defaults
def __init__(self,
name: str,**kwargs) -> None:super().__init__(**kwargs)
self.name = namedef execute(self, context):
message = "Hello {}".format(self.name)print(message)
return message「Amazon MWAACLIユーティリティを使用してカスタムプラグインをテストする」のステップ
に従い、「plugins.zip ファイルを作成してpluginsディレクトリ内のコンテンツを圧縮します。
例えば、cd plugins と指定します。

plugins.zip ファイルの作成
以下の手順では、plugins.zip ファイルをローカルで作成する場合に推奨される手順について説明します。

ステップ 1: Amazon MWAACLIユーティリティを使用してカスタムプラグインをテストする• コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for
Apache Airflow 環境をローカルにレプリケートします。
• は、Amazon MWAA本番稼働用イメージと同様の Docker コンテナイメージをローカルにCLI構築します。これにより、Amazon にデプロイする前に、ローカル Apache Airflow 環境を実行してDAGs、、カスタムプラグイン、依存関係を開発およびテストできますMWAA。
• を実行するにはCLI、「」のaws-mwaa-local-runner「」を参照してください GitHub。
plugins.zip ファイルの作成

192

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 2: plugins.zip ファイルを作成する
組み込みのZIPアーカイブユーティリティ、またはその他のZIPユーティリティ (7zip など) を使用して、.zip ファイルを作成できます。
Note
Windows OS 用のビルトイン ZIP ユーティリティは、.zip ファイルの作成時にサブフォルダを追加する場合があります。Amazon S3 バケットにアップロードする前に plugins.zip ファ
イルの内容を確認して、ディレクトリが追加されていないことを確認することをお勧めします。

1.

ディレクトリをローカルの Airflow プラグインディレクトリに変更します。例:
myproject$ cd plugins

2.

次のコマンドを実行して、コンテンツに実行権限があることを確認します (macOS と Linux のみ)。
plugins$ chmod -R 755 .

3.

plugins フォルダ内のコンテンツを圧縮します。
plugins$ zip -r plugins.zip .

plugins.zip を Amazon S3 にアップロードします。
Amazon S3 コンソールまたは AWS Command Line Interface （AWS CLI) を使用して、Amazon S3
バケットにplugins.zipファイルをアップロードできます。

の使用 AWS CLIAWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
plugins.zip を Amazon S3 にアップロードします。

193

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AWS CLI – を使用したクイック設定aws configure。
を使用してアップロードするには AWS CLI
1.

コマンドプロンプトで、plugins.zip ファイルが保存されているディレクトリに移動します。
例:
cd plugins

2.

以下のコマンドを使って、Amazon S3 バケットをすべてリストアップしますaws s3 ls

3.

以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一
覧表示します。
aws s3 ls s3://YOUR_S3_BUCKET_NAME

4.

環境の Amazon S3 バケットに plugins.zip ファイルをアップロードするには、次のコマンドを使用します。
aws s3 cp plugins.zip s3://YOUR_S3_BUCKET_NAME/plugins.zip

Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理できるウェブベース
のユーザーインターフェイスです。
Amazon S3 コンソールを使ってアップロードするには1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

S3 ペインのコードで S3 バケットリンクを選択して、Amazon S3 コンソールでストレージバ
ケットを開きます。 DAG S3

4.

[アップロード] を選択します。

5.

[ファイルの追加] を選択します。

6.

plugins.zip のローカルコピーを選択し、[アップロード] を選択します。

plugins.zip を Amazon S3 にアップロードします。

194

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

環境へのカスタムプラグインのインストール
このセクションでは、plugins.zip ファイルへのパスを指定し、zip ファイルが更新されるたびに
plugins.zip ファイルのバージョンを指定することで、Amazon S3 バケットにアップロードしたカス
タムプラグインをインストールする方法について説明します。

Amazon MWAAコンソールplugins.zipでの へのパスの指定 (初回）を Amazon S3 バケットplugins.zipに初めてアップロードする場合は、Amazon MWAAコンソー
ルで ファイルへのパスも指定する必要があります。 Amazon S3 1 回だけこのステップを行ってください。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

DAG Amazon S3 ペインのコードで、プラグインファイル - オプションフィールドの横にある
S3 を参照 を選択します。

5.

Amazon S3 バケットの plugins.zip ファイルを選択します。

6.

[選択] を選択します。

7.

[次へ] → [環境の更新 を選択します。

Amazon MWAAコンソールでplugins.zipバージョンを指定する
Amazon S3 バケットに の新しいバージョンをアップロードするたびに、Amazon MWAAコンソー
ルplugins.zipでplugins.zipファイルのバージョンを指定する必要があります。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

DAG Amazon S3 ペインのコードで、ドロップダウンリストでplugins.zipバージョンを選択
します。

5.

[Next (次へ)] を選択します。

環境へのカスタムプラグインのインストール

195

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

plugins.zip のユースケースの例• Apache Hive と Hadoop を使ったカスタムプラグイン でカスタムプラグインを作成する方法について学びます。
• パッチするカスタムプラグイン PythonVirtualenvOperator でカスタムプラグインを作成する方法について学びます。
• Oracle によるカスタムプラグイン でカスタムプラグインを作成する方法について学びます。
• the section called “DAGのタイムゾーンの変更” でカスタムプラグインを作成する方法について学びます。

次のステップ• の を使用してDAGs、、カスタムプラグイン、Python の依存関係をローカルaws-mwaa-localrunnerでテストします GitHub。

Python 依存関係のインストール
Python 依存関係とは、Amazon Managed Workflows for Apache Airflow 環境の Apache Airflow バー
ジョンの Apache Airflow ベースインストールに含まれていないパッケージまたはディストリビュー
ションです。このページでは、Amazon S3 バケット内の requirements.txt ファイルを使用してAmazon MWAA環境に Apache Airflow Python 依存関係をインストールする手順について説明します。 Amazon S3
目次• 前提条件• 仕組み• Python の依存関係の概要• Python 依存関係の場所とサイズ制限• requirements.txt ファイルの作成• ステップ 1: Amazon MWAACLIユーティリティを使用して Python の依存関係をテストする• ステップ 2: requirements.txt を作成する• requirements.txt を Amazon S3 にアップロードします。
• の使用 AWS CLI
plugins.zip のユースケースの例

196

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon S3 コンソールの使用• 環境への Python 依存関係のインストール• Amazon MWAAコンソールrequirements.txtでの へのパスの指定 (初回）
• Amazon MWAAコンソールでrequirements.txtバージョンを指定する• requirements.txt のログを表示する• 次のステップ

前提条件
このページのステップを完了するには、以下のものが必要です。
• アクセス許可 - AWS アカウントには、管理者から環境の AmazonMWAAFullConsoleAccess アク
セスコントロールポリシーへのアクセス権が付与されている必要があります。さらに、Amazon
MWAA環境が使用する AWS リソースにアクセスするには、実行ロールによって Amazon 環境が許可されている必要があります。
• アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「the section called “Apache Airflow のアクセスモード”」を参照してください。
• Amazon S3 設定 — 、 のカスタムプラグインDAGs、および Python の依存関係を保存するために使用される Amazon S3 バケットはplugins.zip、パブリックアクセスブロックおよびバージョ
ニングが有効な で設定requirements.txtする必要があります。

仕組み
Amazon ではMWAA、Amazon S3 バケットにrequirements.txtファイルをアップロードし、ファイルを更新するたびに Amazon MWAAコンソールでファイルのバージョンを指定することで、すべての Python 依存関係をインストールします。 Amazon S3 Amazon MWAAは pip3 install-r requirements.txt を実行して、Python の依存関係を Apache Airflow スケジューラと各ワー
カーにインストールします。
Python の依存関係をお使いの環境で実行するには、次の 3 つのことを行う必要があります。
1.

requirements.txt ファイルをローカルに作成します。

2.

ローカルの requirements.txt を Amazon S3 バケットにアップロードします。

前提条件

197

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

このファイルのバージョンを Amazon MWAAコンソールの「要件ファイル」フィールドに指定
します。

Note
を初めて作成して requirements.txt Amazon S3 バケットにアップロードする場合
は、Amazon MWAAコンソールで ファイルへのパスも指定する必要があります。1 回だけこのステップを行ってください。

Python の依存関係の概要
Apache Airflow の追加とその他の Python 依存関係は、Python パッケージインデックス(PyPi.org)、Python wheels (.whl）、またはプライベート PyPi/PEP-503 準拠リポジトリでホストされている Python 依存関係から環境にインストールできます。

Python 依存関係の場所とサイズ制限
Apache Airflow スケジューラとワーカーは requirements.txt ファイル内のパッケージを探し、パッケージは の環境にインストールされます/usr/local/airflow/.local/bin。
• サイズ制限。1 GB 未満の合計サイズを持つライブラリを参照する requirements.txt ファイルをお勧めします。Amazon がインストールMWAAする必要のあるライブラリが多いほど、環境での起動時間が長くなります。Amazon MWAAはインストール済みライブラリのサイズを明示的に制限しませんが、10 分以内に依存関係をインストールできない場合、Fargate サービスはタイムアウトし、環境を安定した状態にロールバックしようとします。

requirements.txt ファイルの作成
以下の手順では、requirements.txt ファイルをローカルで作成する場合に推奨される手順について説明します。

ステップ 1: Amazon MWAACLIユーティリティを使用して Python の依存関係をテストする• コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for
Apache Airflow 環境をローカルにレプリケートします。
Python の依存関係の概要

198

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• は、Amazon MWAA本番稼働用イメージと同様の Docker コンテナイメージをローカルにCLI構築します。これにより、Amazon にデプロイする前に、ローカル Apache Airflow 環境を実行してDAGs、、カスタムプラグイン、依存関係を開発およびテストできますMWAA。
• を実行するにはCLI、「」のaws-mwaa-local-runner「」を参照してください GitHub。

ステップ 2: requirements.txt を作成する
次のセクションでは、requirements.txt ファイルの Python Package インデックスから Python
依存関係を指定する方法について説明します。
Apache Airflow v2
1.

ローカルでテストします。requirements.txt ファイルを作成する前に、ライブラリを繰り返し追加してパッケージとバージョンの適切な組み合わせを見つけてください。Amazon
MWAACLIユーティリティを実行するには、「」のaws-mwaa-local-runner「」を参照してく
ださい GitHub。

2.

Apache Airflow パッケージのエクストラを確認してください。Amazon で Apache Airflow v2にインストールされているパッケージのリストを表示するにはMWAA、 GitHub ウェブサイ
トの「Amazon MWAA local runnerrequirements.txt」を参照してください。

3.

制約ステートメントを追加します。Apache Airflow v2 環境用の制約ファイルを
requirements.txt ファイルの先頭に追加します。Apache Airflow の制約ファイルには、Apache Airflow のリリース時点で利用可能なプロバイダーのバージョンが指定されています。
Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める必要があります。制約を指定しない場合、Amazon MWAAは要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するために制約を指定します。
次の例では、{environment-version} 環境のバージョン番号、および {Pythonversion} ご使用の環境と互換性のある Python のバージョン。
Apache Airflow 環境と互換性のある Python のバージョンについては、「Apache Airflow
バージョン」を参照してください。
--constraint "https://raw.githubusercontent.com/apache/airflow/
constraints-{Airflow-version}/constraints-{Python-version}.txt"

requirements.txt ファイルの作成

199

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

制約ファイルが xyz==1.0 パッケージが環境内の他のパッケージと互換性がないと判断した
場合、pip3 install は環境に互換性のないライブラリがインストールされるのを防ぐた
めに失敗しま す。パッケージのインストールに失敗した場合、各 Apache Airflow コンポー
ネント (スケジューラ、ワーカー、ウェブサーバー) のエラーログを、対応するログストリー
ムで CloudWatch Logs に表示できます。ログタイプの詳細については、「the section called“Airflow ログの表示”」を参照してください。
4.

Apache Airflow パッケージ。パッケージエクストラとバージョン (==) を追加します。これにより、同じ名前で異なるバージョンのパッケージが環境にインストールされるのを防ぐことができます。
apache-airflow[package-extra]==2.5.1

5.

Python ライブラリ パッケージ名とバージョン (==) を requirements.txt ファイルに追加します。これにより、PyPi.org からの将来の重大な更新が自動的に適用されないようにできます。
library == version

Example Boto3 と psycopg2-binary
この例は、デモンストレーションのみを目的としています。boto と psycopg2 のバイナリラ
イブラリは Apache Airflow v2 のベースインストールに含まれており、requirements.txt
ファイルで指定する必要はありません。
boto3==1.17.54
boto==2.49.0
botocore==1.20.54
psycopg2-binary==2.8.6

バージョンなしでパッケージが指定されている場合、Amazon は PyPi.org から最新バージョンのパッケージMWAAをインストールします。このバージョンは、お客様のrequirements.txt 内の他のパッケージと競合する可能性があります。
Apache Airflow v1
1.

ローカルでテストします。requirements.txt ファイルを作成する前に、ライブラリを繰り返し追加してパッケージとバージョンの適切な組み合わせを見つけてください。Amazon

requirements.txt ファイルの作成

200

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

MWAACLIユーティリティを実行するには、「」のaws-mwaa-local-runner「」を参照してく
ださい GitHub。
2.

Airflow パッケージのエクストラを確認してください。Apache Airflow v1.10.12 で利用可能なパッケージのリストは、https://raw.githubusercontent.com/apache/airflow/
constraints-1.10.12/constraints-3.7.txt で確認してください。

3.

制約ファイルを追加します。Apache Airflow v1.10.12 の制約ファイルを
requirements.txt ファイルの先頭に追加します。制約ファイルが xyz==1.0 パッケージが環境内の他のパッケージと互換性がないと判断した場合、pip3 install は環境に互換性のないライブラリがインストールされるのを防ぐために失敗しま す。
--constraint "https://raw.githubusercontent.com/apache/airflow/
constraints-1.10.12/constraints-3.7.txt"

4.

Apache Airflow v1.10.12 パッケージ。Airflow パッケージエクストラと Apache Airflow
v1.10.12 バージョン (==) を追加します。これにより、同じ名前で異なるバージョンのパッ
ケージが環境にインストールされるのを防ぐことができます。
apache-airflow[package]==1.10.12

Example セキュアシェル (SSH）
次のサンプルrequirements.txtファイルは、Apache Airflow v1.10.12 SSH用に をインス
トールします。
apache-airflow[ssh]==1.10.12

5.

Python ライブラリ パッケージ名とバージョン (==) を requirements.txt ファイルに追加します。これにより、PyPi.org からの将来の重大な更新が自動的に適用されないようにできます。
library == version

Example Boto3
次の例では、requirements.txt ファイルは、Apache Airflow v1.10.12 用の Boto3 ライブ
ラリをインストールします。
boto3 == 1.17.4

requirements.txt ファイルの作成

201

Amazon Managed Workflows for Apache Airflow

ユーザーガイドバージョンなしでパッケージが指定されている場合、Amazon は PyPi.org から最新バージョンのパッケージMWAAをインストールします。このバージョンは、お客様のrequirements.txt 内の他のパッケージと競合する可能性があります。

requirements.txt を Amazon S3 にアップロードします。
Amazon S3 コンソールまたは AWS Command Line Interface （AWS CLI) を使用して、Amazon S3
バケットにrequirements.txtファイルをアップロードできます。

の使用 AWS CLIAWS Command Line Interface （AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS
サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
• AWS CLI – バージョン 2 をインストールします。
• AWS CLI – を使用したクイック設定aws configure。
を使用してアップロードするには AWS CLI
1.

以下のコマンドを使って、Amazon S3 バケットをすべてリストアップしますaws s3 ls

2.

以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一
覧表示します。
aws s3 ls s3://YOUR_S3_BUCKET_NAME

3.

以下のコマンドにより、requirements.txt ファイルが Amazon S3 にアップロードされます。
aws s3 cp requirements.txt s3://YOUR_S3_BUCKET_NAME/requirements.txt

requirements.txt を Amazon S3 にアップロードします。

202

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理できるウェブベース
のユーザーインターフェイスです。
Amazon S3 コンソールを使ってアップロードするには1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

S3 ペインのコードで S3 バケットリンクを選択して、Amazon S3 コンソールでストレージバ
ケットを開きます。 DAG S3

4.

[アップロード] を選択します。

5.

[ファイルの追加] を選択します。

6.

requirements.txt のローカルコピーを選択し、[アップロード] を選択します。

環境への Python 依存関係のインストール
このセクションでは、requirements.txt ファイルへのパスを指定し、更新されるたびに
requirements.txt ファイルのバージョンを指定することで、Amazon S3 バケットにアップロードした
依存関係をインストールする方法について説明します。

Amazon MWAAコンソールrequirements.txtでの へのパスの指定 (初回）を初めて作成して requirements.txt Amazon S3 バケットにアップロードする場合は、Amazon
MWAAコンソールで ファイルへのパスも指定する必要があります。1 回だけこのステップを行って
ください。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

DAG Amazon S3 ペインのコードで、要件ファイル - オプションフィールドの横にある S3 を参照 を選択します。

5.

Amazon S3 バケットの requirements.txt ファイルを選択します。

6.

[選択] を選択します。

7.

[次へ] → [環境の更新 を選択します。

環境への Python 依存関係のインストール

203

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

環境の更新が完了した直後に、新しいパッケージの使用を開始できます。

Amazon MWAAコンソールでrequirements.txtバージョンを指定する
Amazon S3 バケットに の新しいバージョンをアップロードするたびに、Amazon MWAAコンソー
ルrequirements.txtでrequirements.txtファイルのバージョンを指定する必要があります。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

DAG Amazon S3 ペインのコードで、ドロップダウンリストからrequirements.txtバージョンを選択します。

5.

[次へ] → [環境の更新] を選択します。

環境の更新が完了した直後に、新しいパッケージの使用を開始できます。

requirements.txt のログを表示する
ワークフローのスケジュール設定と dags フォルダーの解析を行うスケジューラーの Apache Airflow
ログを表示できます。次の手順では、Amazon MWAAコンソールでスケジューラのロググループを開き、Logs コンソールで Apache Airflow CloudWatch ログを表示する方法について説明します。
requirements.txt のログを表示するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[モニタリング] ペインで [Airflow スケジューラーロググループ] を選択します。

4.

[ログストリーム] の requirements_install_ip ログを選択します。

5.

/usr/local/airflow/.local/bin で環境にインストールされたパッケージのリストが表示されるはずです。例:
Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1))
Downloading https://files.pythonhosted.org/
packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/
appdirs-1.4.4-py2.py3-none-any.whl
Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))

requirements.txt のログを表示する

204

Amazon Managed Workflows for Apache Airflow

6.

ユーザーガイド

パッケージのリストを確認し、インストール中にエラーが発生したパッケージがないか確認してください。何か問題が発生した場合、以下のようなエラーが表示されることがあります。
2021-03-05T14:34:42.731-07:00
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))

次のステップ• の を使用してDAGs、、カスタムプラグイン、Python の依存関係をローカルaws-mwaa-localrunnerでテストします GitHub。

Amazon S3 でファイルの削除
このページでは、Amazon Managed Workflows for Apache Airflow 環境の Amazon S3 バケットでのバージョニングの仕組みと、DAG、plugins.zip または requirements.txt ファイルを削除す
る手順について説明します。
目次• 前提条件• バージョン管理の概要• 使用方法• Amazon S3 で DAG を削除する• 「現在の」requirements.txt または plugins.zip を環境から削除する• 「最新でない」(以前の) requirements.txt または plugins.zip バージョンを削除する• ライフサイクルを使用して「最新ではない」(以前の) バージョンを削除し、マーカーを自動的に削除する• requirements.txt の「最新でない」バージョンを削除してマーカーを自動的に削除するライフサイ
クルポリシーの例• 次のステップ

次のステップ205

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

前提条件
このページのステップを完了するには、以下のものが必要です。
• 権限 — AWS アカウントには、管理者から、ご使用の環境の「AmazonMWAAFullConsoleAccess」 アクセスコントロールポリシーへのアクセス権限が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリ
ソースへのアクセスを「実行ロール」で許可されている必要があります。
• アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「the section called “Apache Airflow のアクセスモード”」を参照してください。
• Amazon S3 設定 — plugins.zip で DAG、カスタムプラグイン、および requirements.txt
で Python の依存関係を保存するために使用される「Amazon S3 バケット」は、Public Access
Blocked と Versioning Enabledで構成する必要があります。

バージョン管理の概要
Amazon S3 バケット内の requirements.txt および plugins.zip はバージョニングされています。オブジェクトの Amazon S3 バケットバージョニングが有効になっていて、アーティファクト (plugins.zip など) が Amazon S3 バケットから削除されても、ファイルは完全には削除されません。Amazon S3 でアーティファクトが削除されるたびに、「I'm not here (ここにはいません)」という404 (オブジェクトが見つかりません) エラー/0k ファイルのファイルの新しいコピーが作成されます。Amazon S3 ではこれを「削除マーカー」と呼んでいます。削除マーカーは、他のオブジェクトと同じように、キー名 (またはキー) とバージョンIDを持つファイルの「ヌル」バージョンです。
Amazon S3 バケットのストレージコストを削減するために、ファイルバージョンと削除マーカーを定期的に削除することをお勧めします。「最新でない」(以前の) ファイルバージョンを完全に削除す
るには、ファイルのバージョンを削除し、そのバージョンの削除マーカーを削除する必要があります。

使用方法
Amazon MWAA は 30 秒ごとにお客様の Amazon S3 バケットに対して同期オペレーションを実行します。これにより、Amazon S3 バケット内のすべての DAG 削除が Fargate コンテナの Airflow イ
メージと同期されます。
前提条件

206

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

plugins.zip および requirements.txt ファイルについては、Amazon MWAA がカスタムプ
ラグインと Python 依存関係を使用して Fargate コンテナの新しい Airflow イメージをビルドするときに、環境の更新後にのみ変更が行われます。もし requirements.txt または plugins.zip のファイルの現在のバージョンを削除し、削除されたファイルに新しいバージョンを提供せずに環境を更新した場合、更新は「Unable to read version {version} of file {file}」などのエラーメッセー
ジと共に失敗します。

Amazon S3 で DAG を削除する
DAG ファイル (.py) はバージョン管理されていないため、Amazon S3 コンソールで直接削除できます。次のステップでは、Amazon S3 バケット内の DAG を削除する方法について説明します。
DAG を削除するには
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

Amazon S3コンソールの「DAG コード in S3」ペインでDAG コード内のS3バケット リンクを選択して、ストレージバケットを開きます。

4.

dags フォルダを選択します。

5.

DAG を選択し、[削除] します。

6.

[オブジェクトを削除] する場合、delete を入力してください。

7.

[Delete objects] (オブジェクトの削除) を選択します。

Note
Apache Airflow は DAG の実行履歴を保存します。Apache Airflow で DAG を実行した後は、Apache Airflow で削除するまで、ファイルのステータスに関係なく、Airflow DAG リス
トに残ります。Apache Airflow 内の DAG を削除するには、リンク列の下にある赤い「削除」ボタンを選択します。

「現在の」requirements.txt または plugins.zip を環境から削除する
現在、plugins.zip や requirements.txt を追加した後に環境から削除する方法はありませんが、現在対応中です。当面の回避策は、それぞれ空のテキストまたは zip ファイルを指すことです。
Amazon S3 で DAG を削除する

207

Amazon Managed Workflows for Apache Airflow

ユーザーガイド「最新でない」(以前の) requirements.txt または plugins.zip バージョンを削除する
Amazon S3 バケット内の requirements.txt および plugins.zip ファイルは、Amazon MWAA
でバージョニングされています。Amazon S3 バケット上のこれらのファイルを完全に削除する場合
は、オブジェクトの現在のバージョン (121212) (plugins.zip など) を取得し、バージョンを削除してから、ファイルバージョンの削除マーカーを削除する必要があります。
Amazon S3 コンソールで「最新でない」(以前の) ファイルバージョンを削除することもできます
が、それでも以下のオプションのいずれかを使用して削除マーカーを削除する必要があります。
• オブジェクトバージョンを取得するには、Amazon S3 ガイドの「バージョニングが有効なバケッ
トからのオブジェクトバージョンの取得」を参照してください。
• オブジェクトバージョンを削除するには、Amazon S3 ガイドの「バージョニングが有効なバケッ
トからのオブジェクトバージョンの削除」を参照してください。
• 削除マーカーを削除するには、Amazon S3 ガイドの「削除マーカーの管理」を参照してください。

ライフサイクルを使用して「最新ではない」(以前の) バージョンを削除
し、マーカーを自動的に削除する
Amazon S3 バケットのライフサイクルポリシーを設定して、Amazon S3 バケット内の「最新でない」(以前の) バージョンの plugins.zip ファイルと requirements.txt ファイルを特定の日数が経過した後に削除するか、期限切れのオブジェクトの削除マーカーを削除できます。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[Amazon S3 内の DAG コード] で、Amazon S3 バケットを選択します。

4.

[ライフサイクルルールを作成] を選択します。

requirements.txt の「最新でない」バージョンを削除してマーカーを自動的に削除するライフサイクルポリシーの例
次の例は、「最新ではない」バージョンの requirements.txt ファイルとその削除マーカーを 30 日後に完全に削除するライフサイクルルールを作成する方法を示しています。
「最新でない」plugins.zip または requirements.txt を削除する

208

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[Amazon S3 内の DAG コード] で、Amazon S3 バケットを選択します。

4.

[ライフサイクルルールを作成] を選択します。

5.

[ライフサイクルルール] の名前に Delete previous requirements.txt versions anddelete markers after thirty days を入力してください。

6.

[プレフィックス] では、[要件]。

7.

[ライフサイクルルールアクション] で、[以前のバージョンのオブジェクトを完全に削除する] と[期限切れの削除マーカーまたは不完全なマルチパートアップロードを削除] を選択します。

8.

[オブジェクトが前のバージョンになるまでの日数] に、「30」を入力してください。

9.

[期限切れオブジェクト削除マーカー] で [期限切れオブジェクト削除マーカーを削除] を選択します。オブジェクトは 30 日後に完全に削除されます。

次のステップ• Amazon S3 削除マーカーの詳細については、「削除マーカーの管理」を参照してください。
• Amazon S3 ライフサイクルの詳細については、「期限切れオブジェクト」を参照してください。

次のステップ209

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ネットワーク
このガイドでは、Amazon MWAA 環境に必要な Amazon VPC ネットワーク設定について説明します。
セクション• Amazon でのネットワークについて MWAA
• Amazon MWAA の VPC のセキュリティ• Amazon MWAA のサービス固有の Amazon VPC エンドポイントへのアクセスの管理• プライベートルーティングVPCを使用して Amazon で必要なVPCサービスエンドポイントを作成する• Amazon MWAA での独自の Amazon VPC エンドポイントの管理

Amazon でのネットワークについて MWAA
Amazon VPCは、 AWS アカウントにリンクされた仮想ネットワークです。仮想インフラストラク
チャとネットワークトラフィックのセグメンテーションをきめ細かく制御できるため、クラウドセ
キュリティと動的なスケーリングが可能になります。このページでは、Amazon Managed Workflows
for Apache Airflow 環境をサポートするために必要なパブリックルーティングまたはプライベート
ルーティングを備えた Amazon VPCインフラストラクチャについて説明します。
目次• 用語• サポート対象• VPC インフラストラクチャの概要• インターネット経由のパブリックルーティング• インターネットにアクセスできないプライベートルーティング• Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例• インターネットアクセスが許可されている - 新しい Amazon VPCネットワーク• インターネットアクセスは許可されていません - 新しい Amazon VPCネットワーク• インターネットアクセスは許可されていません - 既存の Amazon VPCネットワーク
ネットワークについて

210

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

用語
パブリックルーティング
インターネットにアクセスできる Amazon VPCネットワーク。
プライベート・ルーティング
インターネットにアクセスできない Amazon VPCネットワーク。

サポート対象次の表に、VPCsAmazon がMWAAサポートする Amazon のタイプを示します。
Amazon VPC タイプ

サポート

環境を作成しようとしているアカウントVPCが所有する
Amazon。

あり

複数の AWS アカウントVPCが AWS リソースを作成する
共有 Amazon。

あり

VPC インフラストラクチャの概要
Amazon MWAA環境を作成すると、Amazon MWAAは、環境用に選択した Apache Airflow アクセ
スモードに基づいて、環境のVPCエンドポイントを 1～2 つ作成します。これらのエンドポイント
は、Amazon IPsにプライベート を持つ Elastic Network Interface (ENIs) として表示されますVPC。
これらのエンドポイントが作成されると、これらのエンドポイント宛てのトラフィックIPsは、環境で使用される対応する AWS サービスにプライベートまたはパブリックにルーティングされます。
次のセクションでは、インターネット経由でパブリックに、または Amazon 内でプライベートにトラフィックをルーティングするために必要な Amazon VPCインフラストラクチャについて説明しま
す。 VPC

用語211

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

インターネット経由のパブリックルーティング
このセクションでは、パブリックルーティングを使用する環境の Amazon VPCインフラストラク
チャについて説明します。次のVPCインフラストラクチャが必要です。
• 1 つのVPCセキュリティグループ 。VPC セキュリティグループは、インスタンスのイングレス(インバウンド) およびエグレス (アウトバウンド) ネットワークトラフィックを制御する仮想ファ
イアウォールとして機能します。
• 最大 5 つのセキュリティグループを指定できます。
• セキュリティグループは、自己参照型のインバウンドルールをセキュリティグループ自身に指定する必要があります。
• セキュリティグループはすべてのトラフィックのアウトバウンドルール (0.0.0.0/0) を指定する必要があります。
• セキュリティグループは、自己参照ルールに含まれるすべてのトラフィックを許可する必要があります。例えば、(推奨) 全アクセス自己参照型セキュリティグループの例 と指定します。
• セキュリティグループは、オプションで、ポート範囲 443とポート範囲 TCP のHTTPSポート範囲を指定することで、トラフィックをさらに制限できます5432。例えば、(オプション)ポート5432 へのインバウンド・アクセスを制限するセキュリティグループの例 と (オプション)ポート
443へのインバウンド・アクセスを制限するセキュリティ・グループの例 です。
• 2 つのパブリックサブネット。パブリックサブネットは、インターネットゲートウェイへのルートが含まれているルートテーブルに関連付けられているサブネットです。
• 2 つのパブリックサブネットが必要です。これにより、1 つのコンテナに障害が発生した場合
MWAA、Amazon は他のアベイラビリティーゾーンの環境用の新しいコンテナイメージを構築できます。
• サブネットは異なるアベイラビリティゾーンになければなりません。例えば、us-east-1a や
us-east-1b などです。
• サブネットは、Elastic IP アドレス () を使用してNATゲートウェイ (またはNATインスタンス) に
ルーティングする必要がありますEIP。
• サブネットは、インターネット行きのトラフィックをインターネットゲートウェイに誘導する
ルートテーブルを持つ必要があります。
• 2 つのプライベートサブネット。プライベート・サブネットとは、インターネットゲートウェイへのルートを持つルート・テーブルと関連付けられていないサブネットのことです。
• 2 つのプライベートサブネットが必要です。これにより、1 つのコンテナに障害が発生した場合
MWAA、Amazon は他のアベイラビリティーゾーンの環境用の新しいコンテナイメージを構築できます。
VPC インフラストラクチャの概要

212

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• サブネットは異なるアベイラビリティゾーンになければなりません。例えば、us-east-1a や
us-east-1b などです。
• サブネットには、NATデバイス (ゲートウェイまたはインスタンス) へのルートテーブルが必要です。
• サブネットは、インターネットゲートウェイにルーティングしてはならないです。
• ネットワークアクセスコントロールリスト (ACL）。は (許可または拒否ルールによって) サブネッ
トレベルでインバウンドトラフィックとアウトバウンドトラフィックNACLを管理します。
• には、すべてのトラフィック () を許可するインバウンドルールNACLが必要です0.0.0.0/0。
• には、すべてのトラフィック () を許可するアウトバウンドルールNACLが必要です0.0.0.0/0。
• 例えば、(推奨) ACL の例 と指定します。
• 2 つのNATゲートウェイ (またはNATインスタンス）。NAT デバイスは、プライベートサブネット
内のインスタンスからインターネットまたは他の AWS サービスにトラフィックを転送し、レスポ
ンスをインスタンスにルーティングします。
• NAT デバイスはパブリックサブネットにアタッチする必要があります。（パブリックサブネッ
トごとに 1 つのNATデバイス）。
• NAT デバイスには、各パブリックサブネットに Elastic IPv4 Address (EIP) がアタッチされている必要があります。
• 一つのインターネットゲートウェイ。インターネットゲートウェイは、Amazon VPCをインター
ネットやその他の AWS サービスに接続します。
• インターネットゲートウェイを Amazon にアタッチする必要がありますVPC。

インターネットにアクセスできないプライベートルーティング
このセクションでは、プライベートルーティング を使用する環境の Amazon VPCインフラストラク
チャについて説明します。次のVPCインフラストラクチャが必要です。
• 1 つのVPCセキュリティグループ 。VPC セキュリティグループは、インスタンスのイングレス(インバウンド) およびエグレス (アウトバウンド) ネットワークトラフィックを制御する仮想ファ
イアウォールとして機能します。
• 最大 5 つのセキュリティグループを指定できます。
• セキュリティグループは、自己参照型のインバウンドルールをセキュリティグループ自身に指定する必要があります。
VPC インフラストラクチャの概要

213

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• セキュリティグループはすべてのトラフィックのアウトバウンドルール (0.0.0.0/0) を指定する必要があります。
• セキュリティグループは、自己参照ルールに含まれるすべてのトラフィックを許可する必要があります。例えば、(推奨) 全アクセス自己参照型セキュリティグループの例 と指定します。
• セキュリティグループは、オプションで、ポート範囲 443とポート範囲 TCP のHTTPSポート範囲を指定することで、トラフィックをさらに制限できます5432。例えば、(オプション)ポート5432 へのインバウンド・アクセスを制限するセキュリティグループの例 と (オプション)ポート
443へのインバウンド・アクセスを制限するセキュリティ・グループの例 です。
• 2 つのプライベートサブネット。プライベート・サブネットとは、インターネットゲートウェイへのルートを持つルート・テーブルと関連付けられていないサブネットのことです。
• 2 つのプライベートサブネットが必要です。これにより、1 つのコンテナに障害が発生した場合
MWAA、Amazon は他のアベイラビリティーゾーンの環境用の新しいコンテナイメージを構築できます。
• サブネットは異なるアベイラビリティゾーンになければなりません。例えば、us-east-1a や
us-east-1b などです。
• サブネットには、VPCエンドポイントへのルートテーブルが必要です。
• サブネットには、NATデバイス (ゲートウェイまたはインスタンス) へのルートテーブルやインターネットゲートウェイがあってはなりません。
• ネットワークアクセスコントロールリスト (ACL）。は (許可または拒否ルールによって) サブネッ
トレベルでインバウンドトラフィックとアウトバウンドトラフィックNACLを管理します。
• には、すべてのトラフィック () を許可するインバウンドルールNACLが必要です0.0.0.0/0。
• には、すべてのトラフィックを拒否するアウトバウンドルール () NACLが必要です0.0.0.0/0。
• 例えば、(推奨) ACL の例 と指定します。
• ローカルルートテーブル。ローカルルートテーブルは、 内での通信のデフォルトルートです
VPC。
• ローカルルートテーブルはプライベートサブネットに関連付けられている必要があります。
• ローカルルートテーブルでは、 内のインスタンスVPCが独自のネットワークと通信できるようにする必要があります。例えば、 を使用して Apache Airflow ウェブサーバー のVPCインター
フェイスエンドポイント AWS Client VPN にアクセスする場合、ルートテーブルはVPCエンド
ポイントにルーティングする必要があります。
• 環境で使用される各 AWS サービスの VPCエンドポイント、および VPC Amazon MWAA環境と同
じ AWS リージョンと Amazon の Apache Airflow VPCエンドポイント。
VPC インフラストラクチャの概要

214

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Apache Airflow の環境とVPCエンドポイントで使用される各 AWS サービスのVPCエンドポイン
ト。例えば、（必須) VPCエンドポイント と指定します。
• VPC エンドポイントでは、プライベートDNSが有効になっている必要があります。
• VPC エンドポイントは、環境の 2 つのプライベートサブネットに関連付ける必要があります。
• VPC エンドポイントは、環境のセキュリティグループに関連付ける必要があります。
• 各VPCエンドポイントのエンドポイントポリシーは、環境で使用される AWS サービスへのアクセスを許可するように設定する必要があります。例えば、(推奨) すべてのアクセスを許可する
VPC エンドポイントポリシーの例 と指定します。
• Amazon S3 のVPCエンドポイントポリシーは、バケットアクセスを許可するように設定する必要があります。例えば、(推奨) バケットアクセスを許可する Amazon S3 ゲートウェイエンドポ
イントポリシーの例 と指定します。

Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例
このセクションでは、Amazon でのネットワークアクセスのさまざまなユースケースVPCと、Amazon MWAAコンソールで選択する必要がある Apache Airflow ウェブサーバーアクセスモー
ドについて説明します。

インターネットアクセスが許可されている - 新しい Amazon VPCネットワークのインターネットアクセスVPCが組織で許可されており、ユーザーがインターネット経由で Apache
Airflow ウェブサーバーにアクセスできるようにする場合：
1.

インターネットアクセスを使用して Amazon VPCネットワークを作成します。

2.

Apache Airflow ウェブサーバー用のパブリックネットワークアクセスモードの環境を作成します。

3.

推奨されるもの: Amazon VPCインフラストラクチャ、Amazon S3 バケット、Amazon MWAA
環境を同時に作成する AWS CloudFormation クイックスタートテンプレートを使用することをお勧めします。詳細については、「Amazon Managed Workflows for Apache Airflow のクイック
スタートチュートリアル」を参照してください。

のインターネットアクセスVPCが組織で許可されており、Apache Airflow ウェブサーバーへのアクセ
スを 内のユーザーに制限する場合VPC：
1.

インターネットアクセスを使用して Amazon VPCネットワークを作成します。

Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例

215

Amazon Managed Workflows for Apache Airflow

2.

ユーザーガイドコンピュータから Apache Airflow ウェブサーバーのVPCインターフェイスエンドポイントにアクセスするメカニズムを作成します。

3.

Apache Airflow ウェブサーバー用のプライベートネットワークアクセスモードの環境を作成しま
す。

4.

推奨事項:
a.

で Amazon MWAAコンソールを使用するかオプション 1: Amazon MWAAコンソールでVPC
ネットワークを作成する、 で AWS CloudFormation テンプレートを使用することをお勧めしますオプション 2: インターネットにアクセスできる Amazon VPCネットワークの作成。

b.

で Apache Airflow ウェブサーバー AWS Client VPN へのアクセスを を使用して設定することをお勧めしますチュートリアル: AWS Client VPN を使用したプライベートネットワーク
アクセスの設定。

インターネットアクセスは許可されていません - 新しい Amazon VPCネットワーク
組織で のインターネットアクセスVPCが許可されていない場合：
1.

インターネットにアクセスせずに Amazon VPCネットワークを作成します。

2.

コンピュータから Apache Airflow ウェブサーバーのVPCインターフェイスエンドポイントにアクセスするメカニズムを作成します。

3.

環境で使用される AWS サービスごとにVPCエンドポイントを作成します。

4.

Apache Airflow ウェブサーバー用のプライベートネットワークアクセスモードの環境を作成しま
す。

5.

推奨事項:
a.

AWS CloudFormation テンプレートを使用して、インターネットアクセスVPCのない
Amazon と、 MWAAで Amazon が使用する各 AWS サービスのVPCエンドポイントを作成することをお勧めしますオプション 3: インターネットにアクセスせずに Amazon VPCネッ
トワークを作成する。

b.

で Apache Airflow ウェブサーバー AWS Client VPN へのアクセスを を使用して設定することをお勧めしますチュートリアル: AWS Client VPN を使用したプライベートネットワーク
アクセスの設定。

Amazon VPCおよび Apache Airflow アクセスモードのユースケースの例

216

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

インターネットアクセスは許可されていません - 既存の Amazon VPCネットワークのインターネットアクセスVPCが組織で許可されておらず、インターネットアクセスのない必要な
Amazon VPCネットワークが既にある場合：
1.

環境で使用される AWS サービスごとにVPCエンドポイントを作成します。

2.

Apache Airflow のVPCエンドポイントを作成します。

3.

コンピュータから Apache Airflow ウェブサーバーのVPCインターフェイスエンドポイントにアクセスするメカニズムを作成します。

4.

Apache Airflow ウェブサーバー用のプライベートネットワークアクセスモードの環境を作成しま
す。

5.

推奨事項:
a.

Amazon で使用される各 AWS サービスに必要なVPCエンドポイントとMWAA、 の Apache
Airflow に必要なVPCエンドポイントを作成してアタッチすることをお勧めしますプライ
ベートルーティングVPCを使用して Amazon で必要なVPCサービスエンドポイントを作成する。

b.

で Apache Airflow ウェブサーバー AWS Client VPN へのアクセスを を使用して設定することをお勧めしますチュートリアル: AWS Client VPN を使用したプライベートネットワーク
アクセスの設定。

Amazon MWAA の VPC のセキュリティ
このページでは、Apache Airflow 用 Amazon マネージドワークフロー環境の保護に使用される
Amazon VPC コンポーネントと、これらのコンポーネントに必要な設定について説明します。
目次• 用語• セキュリティの概要• ネットワークアクセスコントロールリスト (ACL)• (推奨) ACL の例• VPC セキュリティグループ
• (推奨) 全アクセス自己参照型セキュリティグループの例• (オプション)ポート5432 へのインバウンド・アクセスを制限するセキュリティグループの例
VPC におけるセキュリティ

217

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• (オプション)ポート443へのインバウンド・アクセスを制限するセキュリティ・グループの例• VPC エンドポイントポリシー (プライベートルーティングのみ)• (推奨) すべてのアクセスを許可する VPC エンドポイントポリシーの例• (推奨) バケットアクセスを許可する Amazon S3 ゲートウェイエンドポイントポリシーの例

用語
パブリックルーティング
インターネットにアクセスできる Amazon VPC ネットワーク。
プライベート・ルーティング
インターネットにアクセスできない Amazon VPC ネットワーク。

セキュリティの概要
セキュリティグループとアクセスコントロールリスト (ACL) は、指定されたルールを使用してAmazon VPC のサブネットとインスタンス全体のネットワークトラフィックを制御する方法を提供します。
• サブネットとの間のネットワークトラフィックは、アクセス制御リスト(ACL)によって制御することができます。必要な ACL は 1 つだけで、同じ ACL を複数の環境で使用できます。
• インスタンスに出入りするネットワークトラフィックは、Amazon VPC セキュリティグループによって制御できます。 1 つの環境につき 1 ～ 5 つのセキュリティグループを使用できます。
• インスタンスとの間で送受信されるネットワークトラフィックは、VPC エンドポイントポリシー
でも制御できます。組織がAmazon VPC 内のインターネットアクセスを許可しておらず、プライ
ベートルーティングで Amazon VPC ネットワークを使用している場合は、「AWS VPC エンドポ
イントと Apache Airflow VPC エンドポイント」 には VPC エンドポイントポリシーが必要です。

ネットワークアクセスコントロールリスト (ACL)「ネットワークアクセスコントロールリスト (ACL)」 は、サブネットレベルでインバウンドまたは
アウトバウンドのトラフィックを許可または拒否ルールで管理できます。ACL はステートレスです。つまり、インバウンドルールとアウトバウンドルールは、別々に明示的に指定する必要があります。VPC ネットワーク内のインスタンスに出入りできるネットワークトラフィックの種類を指定するために使用されます。
用語

218

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

すべての Amazon VPC には、インバウンドトラフィックとアウトバウンドトラフィックを許可する
デフォルト ACL があります。デフォルト ACL ルールを編集することも、カスタム ACL を作成してサブネットにアタッチすることもできます。サブネットには常に 1 つの ACL しかアタッチできませんが、1 つの ACL を複数のサブネットにアタッチできます。

(推奨) ACL の例
次の例は、パブリックルーティングまたはプライベートルーティングを使用する Amazon VPC のAmazon VPC で使用できるインバウンドおよびアウトバウンド ACL ルールを示しています。
ルール番号

タイプ

プロトコル

ポート範囲

送信元

許可/拒否

100

すべての
IPv4 トラ
フィック

すべて

すべて

0.0.0.0/0

許可

*

すべての
IPv4 トラ
フィック

すべて

すべて

0.0.0.0/0

拒否

VPC セキュリティグループ
「VPC セキュリティ・グループ」は、インスタンスレベルでネットワーク・トラフィックを制御する仮想ファイアウォールの役割を果たします。セキュリティグループはステートフルです。つまり、
インバウンド接続が許可されると、リプレイが許可されます。VPC ネットワーク内のインスタンス
から許可されるネットワークトラフィックのタイプを指定するために使用されます。
すべての Amazon VPC にはデフォルトのセキュリティグループがあります。デフォルトでは、インバウンドルールはありません。すべてのアウトバウンドトラフィックを許可するアウトバウンドルー
ルがあります。デフォルトのセキュリティグループルールを編集するか、カスタムセキュリティグ
ループを作成して Amazon VPC にアタッチできます。Amazon MWAA では、NAT ゲートウェイにトラフィックを誘導するインバウンドルールとアウトバウンドルールを設定する必要があります。

(推奨) 全アクセス自己参照型セキュリティグループの例
以下は、パブリックルーティングまたはプライベートルーティングを持つAmazon VPCのすべてのトラフィックを許可するインバウンドセキュリティグループルールを示しています。この例のセキュリ
ティグループは、自己参照規則です。
VPC セキュリティグループ

219

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

タイプ

プロトコル

ソースタイプソース

すべてのトラ
フィック

すべて

すべて

sg-0909e8
e81919 /my-mwaa-v
pc-securitygroup

次の例は、アウトバウンドセキュリティグループのルールを示しています。
タイプ

プロトコル

ソースタイプソース

すべてのトラ
フィック

すべて

すべて

0.0.0.0/0(オプション)ポート5432 へのインバウンド・アクセスを制限するセキュリティグルー
プの例
次の例は、お客様の環境の Amazon Aurora PostgreSQL メタデータデータベース (Amazon MWAAが所有) のポート 5432 でのすべての HTTPS トラフィックを許可するインバウンドセキュリティグ
ループのルールを示しています。
Note
このルールを使用してトラフィックを制限する場合は、ポート 443 で TCP トラフィックを許可するルールをもう 1 つ追加する必要があります。

タイプ

プロトコル

ポート範囲

ソースタイプ

ソース

カスタム
TCP

TCP

5432

カスタム

sg-0909e8
e81919 /my-mwaa-v
pc-securitygroup

VPC セキュリティグループ

220

Amazon Managed Workflows for Apache Airflow

ユーザーガイド(オプション)ポート443へのインバウンド・アクセスを制限するセキュリティ・グルー
プの例
次の例は、Apache Airflow Web サーバーのポート 443 上のすべての TCP トラフィックを許可する
インバウンドセキュリティグループのルールを示しています。
タイプ

プロトコル

ポート範囲

ソースタイプ

ソース

HTTPS

TCP

443

カスタム

sg-0909e8
e81919 /my-mwaa-v
pc-securitygroup

VPC エンドポイントポリシー (プライベートルーティングのみ)
VPC エンドポイント (AWS PrivateLink） ポリシーは、プライベートサブネットからの AWS サー
ビスへのアクセスを制御します。VPC エンドポイントポリシーは、VPC ゲートウェイまたはインターフェイスのエンドポイントにアタッチする IAM リソースポリシーです。このセクションでは、各 VPC エンドポイントの VPC エンドポイントポリシーに必要な権限について説明します。
すべての AWS サービスへのフルアクセスを許可する VPC エンドポイントごとに VPC インターフェイスエンドポイントポリシーを使用し、アクセス AWS 許可のためにのみ実行ロールを使用することをお勧めします。

(推奨) すべてのアクセスを許可する VPC エンドポイントポリシーの例
次の例は、プライベートルーティングを使用する Amazon VPC の VPC インターフェイスエンドポ
イントポリシーを示しています。
{"Statement": [{"Action": "*",
"Effect": "Allow","Resource": "*",
"Principal": "*"}]VPC エンドポイントポリシー (プライベートルーティングのみ)

221

Amazon Managed Workflows for Apache Airflow

ユーザーガイド}(推奨) バケットアクセスを許可する Amazon S3 ゲートウェイエンドポイントポリ
シーの例
以下の例は、プライベートルーティングを使用する Amazon VPC の Amazon ECR オペレーションに必要な Amazon S3 バケットへのアクセスを提供する VPC ゲートウェイエンドポイントポリシー
を示しています。DAG とサポートファイルが保存されているバケットに加えて、Amazon ECR イ
メージを取得にも必要です。
{"Statement": [{"Sid": "Access-to-specific-bucket-only","Principal": "*",
"Action": ["s3:GetObject"],"Effect": "Allow","Resource": ["arn:aws:s3:::prod-region-starport-layer-bucket/*"]}]}Amazon MWAA のサービス固有の Amazon VPC エンドポイントへのアクセスの管理
VPC エンドポイント (AWS PrivateLink) を使用すると、インターネットゲートウェイ、NAT デバイ
ス、VPN、またはファイアウォールプロキシを必要と AWS せずに、VPC を でホストされているサービスにプライベートに接続できます。これらのエンドポイントは、VPC 内のインスタンスとAWS サービス間の通信を可能にする、水平方向にスケーラブルで可用性の高い仮想デバイスです。
このページでは、Amazon MWAA によって作成された VPC エンドポイントと、Apache Airflow 用の Amazon マネージドワークフローでプライベートネットワークアクセスモードを選択した場合にApache Airflow ウェブサーバーの VPC エンドポイントにアクセスする方法について説明します。
目次• 料金• VPC エンドポイントの概要
VPC エンドポイントへのアクセスの管理

222

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• パブリックネットワークアクセスモード• プライベートネットワークアクセスモード• 他の AWS サービスを使用するためのアクセス許可• VPC エンドポイントの表示• Amazon VPC コンソールで VPC エンドポイントを表示する• Apache Airflow ウェブサーバーとその VPC エンドポイントのプライベート IP アドレスの識別• Apache Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネットワーク
アクセス)• の使用 AWS Client VPN• Linux 拠点ホストを使用する• Load Balancer の使用 (上級)料金
• AWS PrivateLink 料金表

VPC エンドポイントの概要
Amazon MWAA 環境を作成すると、Amazon MWAA はお客様の環境用に 1 つから 2 つの VPC
エンドポイントを作成します。これらのエンドポイントは、Amazon VPC 内の Elastic Network
Interfaces (ENI) とプライベート IP アドレスで表されます。これらのエンドポイントが作成されると、これらの IPs 宛てのトラフィックは、環境で使用される対応する AWS サービスにプライベート
またはパブリックにルーティングされます。

パブリックネットワークアクセスモード
Apache Airflow ウェブサーバーでパブリックネットワークアクセスモードを選択した場合、ネット
ワークトラフィックはインターネット経由でパブリックにルーティングされます。
• Amazon MWAA は Amazon Aurora PostgreSQL メタデータデータベース用の VPC インターフェ
イスエンドポイントを作成します。エンドポイントは、プライベートサブネットにマッピングされたアベイラビリティーゾーンに作成され、他の AWS アカウントから独立しています。
• その後、Amazon MWAA はプライベートサブネットの IP アドレスをインターフェイスエンドポイ
ントにバインドします。これは、Amazon VPC の各アベイラビリティーゾーンから単一の IP をバ
インドするというベストプラクティスをサポートするように設計されています。
料金223

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プライベートネットワークアクセスモード
Apache Airflow ウェブサーバーでプライベートネットワークアクセスモードを選択した場合、ネット
ワークトラフィックは Amazon VPC 内でプライベートにルーティングされます。
• Amazon MWAA は、Apache Airflow ウェブサーバー用の VPC インターフェイスエンドポイントと、Amazon Aurora PostgreSQL メタデータデータベース用のインターフェイスエンドポイントを作成します。エンドポイントは、プライベートサブネットにマッピングされたアベイラビリティー
ゾーンに作成され、他の AWS アカウントから独立しています。
• その後、Amazon MWAA はプライベートサブネットの IP アドレスをインターフェイスエンドポイ
ントにバインドします。これは、Amazon VPC の各アベイラビリティーゾーンから単一の IP をバ
インドするというベストプラクティスをサポートするように設計されています。

他の AWS サービスを使用するためのアクセス許可
インターフェイスエンドポイントは、 AWS Identity and Access Management (IAM) の環境の実行ロールを使用して、環境で使用される AWS リソースに対するアクセス許可を管理します。環境に対してより多くの AWS サービスが有効になっているため、各サービスでは、環境の実行ロールを使用
してアクセス許可を設定する必要があります。権限を追加するには、Amazon MWAA 実行ロールを参照してください。
Apache Airflow ウェブサーバーのプライベートネットワークアクセスモードを選択した場合は、VPC
エンドポイントポリシーで各エンドポイントのアクセス権限も許可する必要があります。詳細については、「the section called “VPC エンドポイントポリシー (プライベートルーティングのみ)”」を参照
してください。

VPC エンドポイントの表示
このセクションでは、Amazon MWAA によって作成された VPC エンドポイントを表示する方法と、Apache Airflow VPC エンドポイントのプライベート IP アドレスを識別する方法について説明します。

Amazon VPC コンソールで VPC エンドポイントを表示する
以下のセクションでは、Amazon MWAA によって作成された VPC エンドポイント、および Amazon
VPC にプライベートルーティングを使用している場合に作成した VPC エンドポイントを表示する手順を示します。
他の AWS サービスを使用するためのアクセス許可

224

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

VPC エンドポイントを表示するには
1.

Amazon VPC コンソールで「Endpoints ページ」 を開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

Amazon MWAA によって作成された VPC インターフェイスエンドポイントと、Amazon VPC
でプライベートルーティングを使用している場合は作成した VPC エンドポイントが表示されます。

プライベートルーティングを使用する Amazon VPC に必要な VPC サービスエンドポイントの詳細については、「プライベートルーティングVPCを使用して Amazon で必要なVPCサービスエンドポ
イントを作成する」を参照してください。

Apache Airflow ウェブサーバーとその VPC エンドポイントのプライベート IP アドレスの識別
次の手順では、Apache Airflow ウェブサーバーのホスト名と VPC インターフェースエンドポイントのホスト名、およびそれらのプライベート IP アドレスを取得する方法について説明します。
1.

次の AWS Command Line Interface （AWS CLI) コマンドを使用して、Apache Airflow ウェブ
サーバー のホスト名を取得します。
aws mwaa get-environment --name YOUR_ENVIRONMENT_NAME --query'Environment.WebserverUrl'

次のような反応が表示されるはずだ："99aa99aa-55aa-44a1-a91f-f4552cf4e2f5-vpce.c10.us-west-2.airflow.amazonaws.com"

2.

前のコマンドの応答で返されたホスト名で dig コマンドを実行します。例:
dig CNAME +short 99aa99aa-55aa-44a1-a91f-f4552cf4e2f5-vpce.c10.uswest-2.airflow.amazonaws.com

次のような反応が表示されるはずだ：
vpce-0699aa333a0a0a0-bf90xjtr.vpce-svc-00bb7c2ca2213bc37.uswest-2.vpce.amazonaws.com.
VPC エンドポイントの表示

225

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

次の AWS Command Line Interface （AWS CLI) コマンドを使用して、前のコマンドのレスポン
スで返された VPC エンドポイント DNS 名を取得します。例:
aws ec2 describe-vpc-endpoints | grep vpce-0699aa333a0a0a0-bf90xjtr.vpcesvc-00bb7c2ca2213bc37.us-west-2.vpce.amazonaws.com.

次のような反応が表示されるはずだ："DnsName": "vpce-066777a0a0a0-bf90xjtr.vpce-svc-00bb7c2ca2213bc37.uswest-2.vpce.amazonaws.com",

4.

Apache Airflow ホスト名とその VPC エンドポイントの DNS 名に対して nslookup または dig コ
マンドを実行して IP アドレスを取得します。例:
dig +short YOUR_AIRFLOW_HOST_NAME YOUR_AIRFLOW_VPC_ENDPOINT_DNS

次のような反応が表示されるはずだ：
192.0.5.1
192.0.6.1

Apache Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネットワークアクセス)
Apache Airflow ウェブサーバーでプライベートネットワークアクセスモードを選択した場合
は、Apache Airflow ウェブサーバーの VPC インターフェースエンドポイントにアクセスするメカ
ニズムを作成する必要があります。これらのリソースには、Amazon MWAA 環境と同じ Amazon
VPC、VPC セキュリティグループ、プライベートサブネットを使用する必要があります。

の使用 AWS Client VPN
AWS Client VPN は、オンプレミスネットワーク内の AWS リソースとリソースに安全にアクセスできるマネージドクライアントベースの VPN サービスです。OpenVPN クライアントを使用して、どこからでも安全なTLS接続を提供しまsy。
Amazon MWAAチュートリアルに従って、Client VPNを構成することをお勧めします：チュートリア
ル: AWS Client VPN を使用したプライベートネットワークアクセスの設定。
Apache Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネットワークアクセス)

226

Amazon Managed Workflows for Apache Airflow

ユーザーガイドLinux 拠点ホストを使用する
要塞ホストは、外部ネットワーク (インターネット経由など) からプライベートネットワークにアクセスできるようにすることを目的としたサーバーです。Linux インスタンスはパブリックサブネットにあり、拠点ホストを実行している基盤となる Amazon EC2 インスタンスにアタッチされたセキュ
リティグループからの SSH アクセスを許可するセキュリティグループを使用してセットアップされます。
Amazon MWAAのチュートリアルに従って、Linux Bastion Hostを構成することをお勧めしま
す：チュートリアル: Linux 踏み台ホストを使用したプライベートネットワークアクセスの設定。

Load Balancer の使用 (上級)
次のセクションでは、Application Load Balancer に適用する必要がある設定を示しています。
1.

「ターゲットグループ」。Apache Airflow ウェブサーバーのプライベート IP アドレスとそのVPC インターフェイスエンドポイントを指すターゲットグループを使用する必要があります。1
つのプライベート IP アドレスだけを使用すると可用性が低下する可能性があるため、両方のプ
ライベート IP アドレスを登録ターゲットとして指定することをお勧めします。プライベート IP
アドレスを識別する方法の詳細については、the section called “Apache Airflow ウェブサーバーとその VPC エンドポイントのプライベート IP アドレスの識別”を参照してください。

2.

「ステータスコード」。ターゲットグループ設定では200と302ステータスコードを使用することをお勧めします。そうしないと、Apache Airflow ウェブサーバーの VPC エンドポイント
が302 Redirectエラーで応答した場合に、ターゲットに異常があるとフラグが立てられる可能性があります。

3.

「HTTPS リスナー」。Apache Airflow ウェブサーバーのターゲットポートを指定する必要があります。例:[プロトコル]

[ポート]

HTTPS

443

4.

ACM 新しいドメイン。で SSL/TLS 証明書を関連付ける場合は AWS Certificate Manager、ロードバランサーの HTTPS リスナー用の新しいドメインを作成する必要があります。

5.

ACM証明書リージョン。で SSL/TLS 証明書を関連付ける場合は AWS Certificate Manager、環境と同じ AWS リージョンにアップロードする必要があります。例:

Apache Airflow ウェブサーバーの VPC エンドポイントへのアクセス (プライベートネットワークアクセス)

227

Amazon Managed Workflows for Apache Airflow•

ユーザーガイド

Example 証明書をアップロードするリージョン
aws acm import-certificate --certificate fileb://Certificate.pem --certificatechain fileb://CertificateChain.pem --private-key fileb://PrivateKey.pem -region us-west-2

プライベートルーティングVPCを使用して Amazon で必要なVPC
サービスエンドポイントを作成する
インターネットにアクセスできない既存の Amazon VPCネットワークでは、Amazon Managed
Workflows for Apache Airflow で Apache Airflow を使用するには、追加のVPCサービスエンドポイン
ト (AWS PrivateLink) が必要です。このページでは、Amazon で使用される AWS サービスに必要なVPCエンドポイントMWAA、Apache Airflow に必要なVPCエンドポイント、プライベートルーティ
ングVPCを使用してVPCエンドポイントを作成して既存の Amazon にアタッチする方法について説
明します。
目次
• 料金
• プライベートネットワークとプライベートルーティング• （必須) VPCエンドポイント• 必要なVPCエンドポイントのアタッチ• VPC AWS サービスに必要な エンドポイント• VPC Apache Airflow に必要な エンドポイント• （オプション) Amazon S3 VPCインターフェイスエンドポイントのプライベート IP アドレスを有効にする• Route 53 の使用• VPCs カスタム DNS

料金• AWS PrivateLink 料金表

VPC プライベート Amazon のサービスエンドポイント VPCs

228

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プライベートネットワークとプライベートルーティング

プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、環境 のポリシー
へのアクセスが許可されている Amazon 内のVPCユーザーに制限します。 IAM
プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python
Wheel アーカイブ (.whl) にパッケージ化し、その後、requirements.txt で .whl を参照する必要があります。wheel を使用して依存関係をパッケージ化およびインストールする手順については、「Python wheel を使用した依存関係の管理」を参照してください。
次の図は、Amazon MWAAコンソールでプライベートネットワークオプションを見つける場所を示しています。

• プライベートルーティング。インターネットにアクセスVPCできない Amazon は、 内のネット
ワークトラフィックを制限しますVPC。このページでは、Amazon にインターネットアクセス
VPCがなく、環境で使用される各 AWS サービスのVPCエンドポイントと、Amazon MWAA環境とプライベートネットワークとプライベートルーティング

229

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

同じ AWS リージョンおよび Amazon の Apache Airflow のVPCエンドポイントが必要であること
を前提VPCとしています。

（必須) VPCエンドポイント
次のセクションでは、インターネットにアクセスVPCできない Amazon に必要なVPCエンドポイン
トを示します。 Apache Airflow に必要なVPCエンドポイントを含めMWAA、Amazon が使用する各AWS サービスのVPCエンドポイントを一覧表示します。
com.amazonaws.YOUR_REGION.s3
com.amazonaws.YOUR_REGION.monitoringcom.amazonaws.YOUR_REGION.logs
com.amazonaws.YOUR_REGION.sqs
com.amazonaws.YOUR_REGION.kms

Note
Transit Gateway または AWS APIエンドポイントに直接送信されないその他のルーティングを使用する場合は、以下のサービスの Amazon MWAAプライベートサブネット AWS
PrivateLink に を追加することをお勧めします。
• Amazon S3• Amazon SQS• CloudWatch ログ• CloudWatch メトリクス• AWS KMS （該当する場合）
これにより、Amazon MWAA環境はパブリックインターネット経由でトラフィックをルー
ティングすることなく、これらのサービスと安全かつ効率的に通信できるため、セキュリ
ティとパフォーマンスが向上します。

必要なVPCエンドポイントのアタッチ
このセクションでは、プライベートルーティングVPCを使用する Amazon に必要なVPCエンドポイ
ントをアタッチする手順について説明します。
（必須) VPCエンドポイント

230

Amazon Managed Workflows for Apache Airflow

ユーザーガイドVPC AWS サービスに必要な エンドポイント
次のセクションでは、環境で使用される AWS サービスのVPCエンドポイントを既存の Amazon にアタッチする手順を示しますVPC。
プライベートサブネットにVPCエンドポイントをアタッチするには1.

Amazon VPCコンソールでエンドポイントページを開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

Amazon S3 のエンドポイントを作成する：a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .s3 と入力し、キーボードの [Enter] を押します。

c.

[ゲートウェイ] タイプのリストにあるサービスエンドポイントを選択することをお勧めします。
例えば、com.amazonaws.us-west-2.s3 amazon Gateway

4.

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択されていること、およびDNS名前 を有効にする を選択してそのプライベートDNSが有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

CloudWatch ログのエンドポイントを作成します。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .logs と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、有効化
DNS名が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

必要なVPCエンドポイントのアタッチ

231

Amazon Managed Workflows for Apache Airflow

5.

6.

7.

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

ユーザーガイド

CloudWatch モニタリング用のエンドポイントを作成します。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .monitoring と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、Enable
DNS name が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

Amazon のエンドポイントを作成しますSQS。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .sqs と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、Enable
DNS name が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

のエンドポイントを作成します AWS KMS。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .kms と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

必要なVPCエンドポイントのアタッチ

232

Amazon Managed Workflows for Apache Airflowe.

ユーザーガイド

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、有効化
DNS名が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

VPC Apache Airflow に必要な エンドポイント
次のセクションでは、Apache Airflow のVPCエンドポイントを既存の Amazon にアタッチする手順を示しますVPC。
プライベートサブネットにVPCエンドポイントをアタッチするには1.

Amazon VPCコンソールでエンドポイントページを開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

Apache Airflow のエンドポイントを作成しますAPI。

4.

a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .airflow.api と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、有効化
DNS名が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

Apache Airflow 環境の 1 つ目のエンドポイントを作成します。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .airflow.env と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

必要なVPCエンドポイントのアタッチ

233

Amazon Managed Workflows for Apache Airflowe.

ユーザーガイド

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、有効化
DNS名が有効になっていることを確認します。

5.

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

Apache Airflow オペレーション用の 2 つ目のエンドポイントを作成します。
a.

[エンドポイントの作成] を選択します。

b.

[属性でフィルタリングまたはキーワードで検索] テキストフィールドに .airflow.ops と入力し、キーボードの [Enter] を押します。

c.

サービスのエンドポイントを選択します。

d.

VPC で環境の Amazon を選択しますVPC。

e.

異なるアベイラビリティーゾーンの 2 つのプライベートサブネットが選択され、有効化
DNS名が有効になっていることを確認します。

f.

環境の Amazon VPC セキュリティグループ (複数可) を選択します。

g.

[ポリシー] で [フルアクセス] を選択します。

h.

[エンドポイントの作成] を選択します。

（オプション) Amazon S3 VPCインターフェイスエンドポイントのプライ
ベート IP アドレスを有効にする
Amazon S3 インターフェイスエンドポイントはプライベート をサポートしていませんDNS。S3 エンドポイントのリクエストは引き続きパブリック IP アドレスに解決されます。S3 アドレスをプライ
ベート IP アドレスに解決するには、S3 リージョンエンドポイントの Route 53 にプライベートホス
トゾーンを追加する必要があります。

Route 53 の使用
このセクションでは、Route 53 を使用して S3 インターフェイスエンドポイントのプライベート IP
アドレスを有効にする手順について説明します。
1.

Amazon S3 VPCインターフェイスエンドポイント (s3.eu-west-1.amazonaws.com など) のプラ
イベートホストゾーンを作成し、Amazon に関連付けますVPC。

2.

VPC インターフェイスエンドポイントDNS名に解決される Amazon S3 VPCインターフェイス
エンドポイント (s3.eu-west-1.amazonaws.com など) の ALIAS A レコードを作成します。

（オプション) Amazon S3 VPCインターフェイスエンドポイントのプライベート IP アドレスを有効にする234

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

インターフェイスエンドポイントDNS名に解決される Amazon ALIAS S3 インターフェイスエン
ドポイント (*.s3.eu-west-1.amazonaws.com VPC など) の A ワイルドカードレコードを作成します。 Amazon S3

VPCs カスタム DNS
Amazon がカスタムDNSルーティングVPCを使用している場合は、CNAMEレコードを作成してリ
DNSゾルバー (Route 53 ではなく、通常はDNSサーバーを実行しているEC2インスタンス) を変更する必要があります。例:
Name: s3.us-west-2.amazonaws.com
Type: CNAME
Value: *.vpce-0f67d23e37648915c-e2q2e2j3.s3.us-west-2.vpce.amazonaws.com

Amazon MWAA での独自の Amazon VPC エンドポイントの管理
Amazon MWAA は Amazon VPC エンドポイントを使用して、Apache Airflow 環境の設定に必要な
さまざまなAWSサービスと統合します。独自のエンドポイントの管理には、主に次の 2 つのユース
ケースがあります。
1. これは、 を使用して複数のAWSアカウントを管理し、リソースを共有するときにAWS
Organizations、共有 Amazon VPC に Apache Airflow 環境を作成できることを意味します。
2. エンドポイントを使用する特定のリソースにアクセス許可を絞り込むことで、より制限の厳しい
アクセスポリシーを使用しましょう。
独自の VPC エンドポイントを管理する場合は、環境 RDS for PostgreSQL データベースと環境ウェブサーバー用に独自のエンドポイントを作成する責任があります。
Amazon MWAA が Apache Airflow をクラウドにデプロイする方法の詳細については、「Amazon
MWAA アーキテクチャ図」を参照してください。

共有 Amazon VPC での環境の作成
AWS Organizations を使用してリソースを共有する複数のAWSアカウントを管理する場合
は、Amazon MWAA でカスタマーマネージド VPC エンドポイントを使用して、組織内の別のアカウ
ントと環境リソースを共有できます。
独自の Amazon VPC エンドポイントの管理

235

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

共有 VPC アクセスを設定すると、メインの Amazon VPC を所有するアカウント (所有者)は、Amazon MWAA に必要な 2 つのプライベートサブネットを、同じ組織に属する他のアカウント(参加者 ) と共有します。これらのサブネットを共有する参加者アカウントは、共有 Amazon VPC 内の環境を表示、作成、変更、削除できます。
組織内のアカウントとして機能し、Amazon VPC リソースを所有OwnerするRootアカウント と、同じ組織のメンバーParticipantである参加者アカウント があるとします。が と共有している
Amazon VPC に新しい Amazon MWAA Participantを作成するとOwner、Amazon MWAA はまずサービス VPC リソースを作成し、次に最大 72 時間 PENDING状態になります。
環境ステータスが から CREATINGに変わるとPENDING、 に代わって動作するプリンシパルによって必要なエンドポイントOwnerが作成されます。これを行うために、Amazon MWAA は
Amazon MWAA コンソールにデータベースとウェブサーバーのエンドポイントを一覧表示します。GetEnvironment API アクションを呼び出してサービスエンドポイントを取得することもできます。
Note
リソースの共有に使用する Amazon VPC がプライベート Amazon VPC である場合は、「」で説明されている手順を完了する必要がありますthe section called “VPC エンドポイントへのアクセスの管理”。このトピックでは、Amazon ECR、Amazon ECS、Amazon SQS な
ど、 がAWS統合する他のAWSサービスに関連するさまざまな Amazon VPC エンドポイントの設定について説明します。これらのサービスは、クラウドで Apache Airflow 環境を運用および管理するために不可欠です。

前提条件
共有 VPC に Amazon MWAA 環境を作成する前に、次のリソースが必要です。
• Amazon VPC を所有するAWSアカウントとしてOwner使用されるアカウント。
• ルート としてMyOrganization作成されたAWS Organizations組織単位。
• 下の 2 番目のAWSアカウント MyOrganizationでParticipant、新しい環境を作成する参加者
アカウントを提供します。
さらに、Amazon VPC でリソースを共有するときは、所有者と参加者の責任とアクセス許可を理解しておくことをお勧めします。
共有 Amazon VPC での環境の作成

236

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon VPC を作成する
まず、所有者アカウントと参加者アカウントが共有する新しい Amazon VPC を作成します。
1.

を使用してコンソールにサインインOwnerし、AWS CloudFormationコンソールを開きます。次のテンプレートを使用してスタックを作成します。このスタックは、Amazon VPC を含む多数のネットワークリソースと、このシナリオで 2 つのアカウントが共有するサブネットをプロビ
ジョニングします。
AWSTemplateFormatVersion: "2010-09-09"
Description: >This template deploys a VPC, with a pair of public and private subnets spread
across two Availability Zones. It deploys an internet gateway, with a default
route on the public subnets. It deploys a pair of NAT gateways (one in each
AZ), and default routes for them in the private subnets.
Parameters:
EnvironmentName:
Description: An environment name that is prefixed to resource names
Type: String
Default: mwaaVpcCIDR:
Description: Please enter the IP range (CIDR notation) for this VPC
Type: String
Default: 10.192.0.0/16
PublicSubnet1CIDR:
Description: >Please enter the IP range (CIDR notation) for the public subnet in thefirst Availability Zone
Type: String
Default: 10.192.10.0/24
PublicSubnet2CIDR:
Description: >Please enter the IP range (CIDR notation) for the public subnet in thesecond Availability Zone
Type: String
Default: 10.192.11.0/24
PrivateSubnet1CIDR:
Description: >Please enter the IP range (CIDR notation) for the private subnet in thefirst Availability Zone
Type: String
Default: 10.192.20.0/24
PrivateSubnet2CIDR:

共有 Amazon VPC での環境の作成

237

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Description: >Please enter the IP range (CIDR notation) for the private subnet in thesecond Availability Zone
Type: String
Default: 10.192.21.0/24
Resources:
VPC:
Type: 'AWS::EC2::VPC'
Properties:
CidrBlock: !Ref VpcCIDR
EnableDnsSupport: true
EnableDnsHostnames: true
Tags:
- Key: Name
Value: !Ref EnvironmentName
InternetGateway:
Type: 'AWS::EC2::InternetGateway'
Properties:
Tags:- Key: Name
Value: !Ref EnvironmentName
InternetGatewayAttachment:
Type: 'AWS::EC2::VPCGatewayAttachment'
Properties:
InternetGatewayId: !Ref InternetGateway
VpcId: !Ref VPC
PublicSubnet1:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select- 0- !GetAZs ''CidrBlock: !Ref PublicSubnet1CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub '${EnvironmentName} Public Subnet (AZ1)'
PublicSubnet2:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select- 1

共有 Amazon VPC での環境の作成

238

Amazon Managed Workflows for Apache Airflow

ユーザーガイド- !GetAZs ''CidrBlock: !Ref PublicSubnet2CIDR
MapPublicIpOnLaunch: true
Tags:
- Key: Name
Value: !Sub '${EnvironmentName} Public Subnet (AZ2)'
PrivateSubnet1:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select- 0- !GetAZs ''CidrBlock: !Ref PrivateSubnet1CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub '${EnvironmentName} Private Subnet (AZ1)'
PrivateSubnet2:
Type: 'AWS::EC2::Subnet'
Properties:
VpcId: !Ref VPC
AvailabilityZone: !Select- 1- !GetAZs ''CidrBlock: !Ref PrivateSubnet2CIDR
MapPublicIpOnLaunch: false
Tags:- Key: Name
Value: !Sub '${EnvironmentName} Private Subnet (AZ2)'
NatGateway1EIP:
Type: 'AWS::EC2::EIP'
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway2EIP:
Type: 'AWS::EC2::EIP'
DependsOn: InternetGatewayAttachment
Properties:
Domain: vpc
NatGateway1:
Type: 'AWS::EC2::NatGateway'
Properties:
AllocationId: !GetAtt NatGateway1EIP.AllocationId

共有 Amazon VPC での環境の作成

239

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

SubnetId: !Ref PublicSubnet1
NatGateway2:
Type: 'AWS::EC2::NatGateway'
Properties:
AllocationId: !GetAtt NatGateway2EIP.AllocationId
SubnetId: !Ref PublicSubnet2
PublicRouteTable:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub '${EnvironmentName} Public Routes'
DefaultPublicRoute:
Type: 'AWS::EC2::Route'DependsOn: InternetGatewayAttachment
Properties:
RouteTableId: !Ref PublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref InternetGateway
PublicSubnet1RouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet1
PublicSubnet2RouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref PublicRouteTable
SubnetId: !Ref PublicSubnet2
PrivateRouteTable1:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub '${EnvironmentName} Private Routes (AZ1)'
DefaultPrivateRoute1:
Type: 'AWS::EC2::Route'
Properties:
RouteTableId: !Ref PrivateRouteTable1
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway1
PrivateSubnet1RouteTableAssociation:

共有 Amazon VPC での環境の作成

240

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref PrivateRouteTable1
SubnetId: !Ref PrivateSubnet1
PrivateRouteTable2:
Type: 'AWS::EC2::RouteTable'
Properties:
VpcId: !Ref VPC
Tags:- Key: Name
Value: !Sub '${EnvironmentName} Private Routes (AZ2)'
DefaultPrivateRoute2:
Type: 'AWS::EC2::Route'
Properties:
RouteTableId: !Ref PrivateRouteTable2
DestinationCidrBlock: 0.0.0.0/0
NatGatewayId: !Ref NatGateway2
PrivateSubnet2RouteTableAssociation:
Type: 'AWS::EC2::SubnetRouteTableAssociation'
Properties:
RouteTableId: !Ref PrivateRouteTable2
SubnetId: !Ref PrivateSubnet2
SecurityGroup:
Type: 'AWS::EC2::SecurityGroup'
Properties:
GroupName: mwaa-security-group
GroupDescription: Security group with a self-referencing inbound rule.
VpcId: !Ref VPC
SecurityGroupIngress:
Type: 'AWS::EC2::SecurityGroupIngress'
Properties:
GroupId: !Ref SecurityGroup
IpProtocol: '-1'
SourceSecurityGroupId: !Ref SecurityGroupOutputs:
VPC:
Description: A reference to the created VPC
Value: !Ref VPC
PublicSubnets:
Description: A list of the public subnets
Value: !Join- ','- - !Ref PublicSubnet1- !Ref PublicSubnet2

共有 Amazon VPC での環境の作成

241

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

PrivateSubnets:
Description: A list of the private subnets
Value: !Join- ','- - !Ref PrivateSubnet1- !Ref PrivateSubnet2
PublicSubnet1:
Description: A reference to the public subnet in the 1st Availability Zone
Value: !Ref PublicSubnet1
PublicSubnet2:
Description: A reference to the public subnet in the 2nd Availability Zone
Value: !Ref PublicSubnet2
PrivateSubnet1:
Description: A reference to the private subnet in the 1st Availability Zone
Value: !Ref PrivateSubnet1
PrivateSubnet2:
Description: A reference to the private subnet in the 2nd Availability Zone
Value: !Ref PrivateSubnet2
SecurityGroupIngress:
Description: Security group with self-referencing inbound rule
Value: !Ref SecurityGroupIngress

2.

新しい Amazon VPC リソースがプロビジョニングされたら、AWS Resource Access Manager
コンソールに移動し、リソース共有の作成を選択します。

3.

と共有できる利用可能なサブネットのリストから、最初のステップで作成したサブネットを選択しますParticipant。

環境を作成します。
カスタマー管理の Amazon VPC エンドポイントを使用して Amazon MWAA 環境を作成するには、
次のステップを実行します。
1.

を使用してサインインしParticipant、Amazon MWAA コンソールを開きます。ステップ 1:
詳細を指定して、新しい環境の Amazon S3 バケット、DAG フォルダ、依存関係を指定します。詳細については、「 の開始方法」を参照してください。

2.

詳細設定の構成ページのネットワーク で、共有 Amazon VPC からサブネットを選択します。

3.

「エンドポイント管理」で、ドロップダウンリストから「CUSTOMER」を選択します。

4.

ページの残りのオプションのデフォルトのままにして、確認と作成 ページの環境の作成 を選択します。

共有 Amazon VPC での環境の作成

242

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

環境は CREATING状態から始まり、 に変わりますPENDING。環境が の場合PENDING、コンソールを使用してデータベースエンドポイントサービス名とウェブサーバーエンドポイントサービス名 (プライベートウェブサーバーをセットアップした場合) を書き留めます。
Amazon MWAA コンソールを使用して新しい環境を作成する場合。Amazon MWAA は、必要なインバウンドルールとアウトバウンドルールを使用して新しいセキュリティグループを作成します。セキュリティグループ ID を書き留めます。
次のセクションOwnerでは、 はサービスエンドポイントとセキュリティグループ ID を使用して、共有 Amazon VPC に新しい Amazon VPC エンドポイントを作成します。

Amazon VPC エンドポイントを作成する
次のステップを実行して、環境に必要な Amazon VPC エンドポイントを作成します。
1.

Owner、 AWS Management Consoleを開いて にサインインしますhttps://
console.aws.amazon.com/vpc/。

2.

左側のナビゲーションパネルからセキュリティグループを選択し、次のインバウンドルールとア
ウトバウンドルールを使用して、共有 Amazon VPC に新しいセキュリティグループを作成しま
す。
タイプ

プロトコル

ソースタイプソース

インバウンドすべてのトラ
フィック

すべて

すべて

環境セキュリ
ティグループアウトバウンド

すべてのトラ
フィック

すべて

すべて

0.0.0.0/0

Warning
Owner アカウントは、新しい環境から共有 Amazon VPC へのトラフィックを許可する
セキュリティグループをOwnerアカウントに設定する必要があります。これを行うには、 で新しいセキュリティグループを作成するかOwner、既存のセキュリティグループ
を編集します。

共有 Amazon VPC での環境の作成

243

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

エンドポイント を選択し、前の手順のエンドポイントサービス名を使用して、環境データベー
スとウェブサーバー (プライベートモードの場合) の新しいエンドポイントを作成します。共有
Amazon VPC、環境に使用したサブネット、環境のセキュリティグループを選択します。

成功すると、環境は PENDING から にCREATING、最後に に変わりますAVAILABLE。の場
合AVAILABLE、Apache Airflow コンソールにサインインできます。

共有 Amazon VPC のトラブルシューティング
共有 Amazon VPC で環境を作成するときに発生する問題を解決するには、次のリファレンスを使用します。
PENDING ステータスCREATE_FAILEDが 以降の環境• Participant を使用して、 Ownerがサブネットを と共有していることを確認しますAWS
Resource Access Manager。
• データベースとウェブサーバーの Amazon VPC エンドポイントが、環境に関連付けられた同
じサブネットに作成されていることを確認します。
• エンドポイントで使用されるセキュリティグループが、環境に使用されるセキュリティ
グループからのトラフィックを許可していることを確認します。Owner アカウントは、のセキュリティグループを Participantとして参照するルールを作成しますaccountnumber/security-group-id。
タイプ

プロトコル

ソースタイプソース

すべてのトラフィッ
ク

すべて

すべて

123456789
012 /sg-0909e8
e81919

詳細については、「所有者と参加者の責任とアクセス許可」を参照してください。
環境が PENDINGステータスのままになる
各 VPC エンドポイントのステータスを検証して、 であることを確認しますAvailable。プライ
ベートウェブサーバーで環境を設定する場合は、ウェブサーバーのエンドポイントも作成する必要があります。環境が にスタックしている場合はPENDING、プライベートウェブサーバーのエンドポイントが欠落している可能性があります。
共有 Amazon VPC での環境の作成

244

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

受信The Vpc Endpoint Service 'vpce-service-name' does not existエラー
次のエラーが表示された場合は、共有 VPC を所有するアカウントにエンドポイントを作成す
るOwnerアカウントを確認します。
ClientError: An error occurred (InvalidServiceName) when calling theCreateVpcEndpoint operation:
The Vpc Endpoint Service 'vpce-service-name' does not exist

共有 Amazon VPC での環境の作成

245

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow のための Amazon Managed Workflows のチュートリアルこのガイドには、Amazon Managed Workflows for Apache Airflow 環境の使用と設定に関する stepby-step チュートリアルが含まれています。
トピック• チュートリアル: AWS Client VPN を使用したプライベートネットワークアクセスの設定• チュートリアル: Linux 踏み台ホストを使用したプライベートネットワークアクセスの設定• チュートリアル: Amazon MWAA ユーザーのアクセスを DAG のサブセットに制限する• チュートリアル: Amazon MWAA での独自の環境エンドポイントの管理を自動化する

チュートリアル: AWS Client VPN を使用したプライベートネット
ワークアクセスの設定
このチュートリアルでは、Amazon Managed Workflows for Apache Airflow 環境用に、コンピュータ
から Apache Airflow ウェブサーバーへの VPN トンネルを作成する手順を説明します。VPN トンネ
ルを介してインターネットに接続するには、まず AWS Client VPN エンドポイントを作成する必要があります。設定が完了すると、クライアント VPN エンドポイントは VPN サーバーとして機能し、コンピューターから VPC 内のリソースへの安全な接続を可能にします。次に、「AWS Client VPN
デスクトップ用」を使用してコンピューターから Client VPN に接続します。
セクション• プライベートネットワーク• ユースケース• 開始する前に• 目的• (オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する• ステップ 2: サーバーとクライアントの証明書を作成する• ステップ 3: AWS CloudFormation テンプレートをローカルに保存する• ステップ 4: クライアント VPN AWS CloudFormation スタックを作成する• ステップ 5: サブネットをクライアント VPN に関連付ける
チュートリアル: AWS Client VPN

246

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• ステップ 6: クライアント VPN に認証進入ルールを追加する• ステップ 7：クライアント VPN のエンドポイント設定ファイルをダウンロードします• ステップ 8: AWS Client VPN に接続する• 次のステップ

プライベートネットワーク
このチュートリアルでは、Apache Airflow ウェブサーバーの [プライベートネットワーク] アクセス
モードを選択していることを前提としています。

プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、「お使いの環境のIAM ポリシー」へのアクセスが許可されている Amazon VPC 内のユーザーに制限します。
プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python
Wheel アーカイブ (.whl) にパッケージ化し、その後、requirements.txt で .whl を参照する必要があります。wheel を使用して依存関係をパッケージ化およびインストールする手順については、「Python wheel を使用した依存関係の管理」を参照してください。。
以下の画像は、Amazon MWAA コンソールの [プライベートネットワーク] オプションの場所を示しています。
プライベートネットワーク

247

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ユースケース
このチュートリアルは、Amazon MWAA 環境を作成する前でも後でも使用できます。環境と同
じ Amazon VPC、VPC セキュリティグループ、プライベートサブネットを使用する必要があります。Amazon MWAA 環境を作成した後にこのチュートリアルを使用する場合、手順を完了したら
Amazon MWAA コンソールに戻り、Apache Airflow ウェブサーバーのアクセスモードを [プライベー
トネットワーク] に変更できます。

開始する前に
1.

ユーザー許可を確認してください。AWS Identity and Access Management (IAM) のアカウントに VPC リソースを作成および管理するための十分な権限があることを確認してください。

2.

Amazon MWAA VPC を使用してください。このチュートリアルでは、クライアント VPN を既
存の VPC に関連付けることを前提としています。Amazon VPC は、Amazon MWAA 環境と同
じ AWS のリージョンにある必要があり、かつ 2 つのプライベートサブネットを持っている必要があります。Amazon VPC を作成していない場合、オプション 3: インターネットにアクセスせずに Amazon VPCネットワークを作成する で AWS CloudFormation テンプレートを使用してください。

目的
このチュートリアルでは、以下の作業を行います。
1.

既存の Amazon VPC に対して、AWS CloudFormation テンプレートを使用して AWS Client
VPN エンドポイントを作成します。

2.

サーバーおよびクライアントの証明書とキーを生成し、その後、Amazon MWAA 環境と同じ
AWS のリージョンにある AWS Certificate Manager にサーバー証明書とキーをアップロードします。

ユースケース248

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

クライアント VPN のクライアント VPN エンドポイント設定ファイルをダウンロードして変更し、このファイルを使用して、デスクトップ用クライアント VPN を使用して接続するためのVPN プロファイルを作成します。

(オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する
次のセクションでは、Amazon VPC、VPC セキュリティグループの ID を検索する方法と、以降のステップでクライアント VPN を作成するために必要な CIDR ルールを特定する方法について説明します。

CIDR ルールを特定してください。
次のセクションでは、クライアント VPN を作成するために必要な CIDR ルールを特定する方法を示します。
クライアント VPN の CIDR を識別するには
1.

Amazon VPC コンソールの「Amazon VPC ページ」を開きます。

2.

ナビゲーションバーのリージョンセレクターを使用して、Amazon MWAA 環境と同じ AWS
リージョンを選択します。

3.

Amazon VPC を選択してください。

4.

プライベートサブネットの CIDR が以下のようになっていると仮定します。
• プライベートサブネット 1: 10.192.10.0 /24• プライベートサブネット 2: 10.192.11.0 /24
Amazon VPC の CIDR が 10.192.0.0 /16 の場合、クライアント VPN に指定するクライアント
IPv4 CIDR は 10.192.0.0 /22 になります。

5.

この CIDR 値と VPC ID の値を後続のステップのために保存してください。

VPC とセキュリティグループを特定する
次のセクションでは、クライアント VPN を作成するために必要な Amazon VPC とセキュリティグ
ループの ID を確認する方法を示します。
(オプション) ステップ 1: VPC、CIDR ルール、VPC セキュリティを特定する

249

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
複数のセキュリティグループを使用している可能性があります。後続のステップでは、VPCのセキュリティグループをすべて指定する必要があります。

セキュリティグループを特定するには
1.

Amazon VPC コンソールの「セキュリティグループページ」を開きます。

2.

ナビゲーションバーのリージョンセレクターを使って、AWS リージョンを選択します。

3.

VPC ID で Amazon VPC を探し、その VPC に関連付けられているセキュリティグループを特定
します。

4.

セキュリティグループと VPC の ID を後続のステップのために保存します。

ステップ 2: サーバーとクライアントの証明書を作成する
クライアント VPN エンドポイントは、1024 ビットおよび 2048 ビットの RSA キーサイズのみサポートしています。以下のセクションでは、OpenVPN easy-rsa を使ってサーバーとクライアントの証明書と鍵を生成し、AWS Command Line Interface (AWS CLI) を使って証明書を ACM にアップロードする方法を示します。
クライアント証明書を作成するには
1.

以下の簡単な手順に従って、「クライアントの認証と承認:相互認証」から証明書を作成
し、ACM にアップロードするための AWS CLI を使用してください。

2.

これらの手順では、サーバーおよびクライアント証明書をアップロードする際に、AWS CLI コ
マンドで Amazon MWAA 環境と同じ AWS リージョンを指定する必要があります。ここでは、これらのコマンドでリージョンを指定する方法を例で示します。
a.

Example サーバー証明書のリージョン
aws acm import-certificate --certificate fileb://server.crt --private-key
fileb://server.key --certificate-chain fileb://ca.crt --region us-west-2

ステップ 2: サーバーとクライアントの証明書を作成する

250

Amazon Managed Workflows for Apache Airflowb.

ユーザーガイド

Example クライアント証明書のリージョン
aws acm import-certificate --certificate fileb://client1.domain.tld.crt--private-key fileb://client1.domain.tld.key --certificate-chain fileb://ca.crt --region us-west-2

c.

3.

これらの手順の後、サーバー証明書およびクライアント証明書の ARN に関する AWS CLIのレスポンスで返された値を保存してください。これらの ARN を使用して、クライアント
VPN を作成するための AWS CloudFormation テンプレートに ARN を指定します。

この手順では、クライアント証明書とプライベートキーがコンピューターに保存されます。ここでは、これらの認証情報の確認場所の例。
a.

Example macOS 上macOS では、内容は /Users/youruser/custom_folder に保存されます。このディレクトリのすべての (ls -a) 内容を一覧表示すると、次のような内容が表示されるはずです。
.
..
ca.crtclient1.domain.tld.crt
client1.domain.tld.key
server.crt
server.keyb.

これらの手順の後、クライアント証明書の内容または場所を client1.domain.tld.crtに保存し、プライベートキーの場所を client1.domain.tld.key にメモしてください。
これらの値をクライアント VPN の設定ファイルに追加します。

ステップ 3: AWS CloudFormation テンプレートをローカルに保存する
次のセクションには、クライアント VPN を作成するための AWS CloudFormation テンプレートが含まれています。Amazon MWAA 環境と同じ Amazon VPC、VPC セキュリティグループ、およびプラ
イベートサブネットを指定する必要があります。
•

次のテンプレートの内容をコピーし、mwaa_vpn_client.yaml としてローカルに保存します。「テンプレートをダウンロードする」 こともできます。

ステップ 3: AWS CloudFormation テンプレートをローカルに保存する

251

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

以下の値を置き換えます。
• YOUR_CLIENT_ROOT_CERTIFICATE_ARN — ClientRootCertificateChainArn の「client1.domain.tld」証明書のARN。
• YOUR_SERVER_CERTIFICATE_ARN — ServerCertificateArn 内のサーバー証明書のARN。
• ClientCidrBlock のクライアント IPv4 CIDR ルール。10.192.0.0/22 の CIDR ルールが提供されています。
• VpcId の Amazon VPC ID 。vpc-010101010101 の VPC が提供されています。
• SecurityGroupIds 内の VPC セキュリティグループ ID。sg-0101010101 のセキュリティ
グループが提供されています。

AWSTemplateFormatVersion: 2010-09-09
Description: This template deploys a VPN Client Endpoint.
Resources:
ClientVpnEndpoint:
Type: 'AWS::EC2::ClientVpnEndpoint'
Properties:
AuthenticationOptions:- Type: "certificate-authentication"
MutualAuthentication:
ClientRootCertificateChainArn: "YOUR_CLIENT_ROOT_CERTIFICATE_ARN"
ClientCidrBlock: 10.192.0.0/22
ClientConnectOptions:
Enabled: false
ConnectionLogOptions:
Enabled: false
Description: "MWAA Client VPN"
DnsServers: []SecurityGroupIds:- sg-0101010101
SelfServicePortal: ''ServerCertificateArn: "YOUR_SERVER_CERTIFICATE_ARN"
SplitTunnel: true
TagSpecifications:- ResourceType: "client-vpn-endpoint"
Tags:- Key: Name
Value: MWAA-Client-VPN

ステップ 3: AWS CloudFormation テンプレートをローカルに保存する

252

Amazon Managed Workflows for Apache Airflow

ユーザーガイドTransportProtocol: udp
VpcId: vpc-010101010101
VpnPort: 443

Note
ご使用の環境で複数のセキュリティグループを使用している場合は、次の形式で複数のセキュリティグループを指定できます。
SecurityGroupIds:- sg-0112233445566778b- sg-0223344556677889f

ステップ 4: クライアント VPN AWS CloudFormation スタックを作成する
AWS Client VPN を作成するには
1.

AWS CloudFormation コンソールを開きます。

2.

[テンプレートは準備できている]、[テンプレートファイルをアップロードする] を選択します。

3.

[ファイルのを選択] を選択し、mwaa_vpn_client.yaml ファイルを選択します。

4.
5.

[次へ]、[次へ] を選択します。

6.

アクノレッジメントを選択し、[スタックを作成] を選択します。

ステップ 5: サブネットをクライアント VPN に関連付ける
プライベートサブネットを AWS Client VPN に関連付けるには
1.

Amazon VPC コンソールを開きます。

2.

[クライアント VPN エンドポイント] ページを選択します。

3.

クライアント VPN を選択し、次に [アソシエーション] タブの [アソシエイト] を選択します。

4.

ドロップダウンリストから次の項目を選択します。
• [VPC] 内の Amazon VPC。

ステップ 4: クライアント VPN AWS CloudFormation スタックを作成する

253

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• [関連付けるサブネットを選択] にあるプライベートサブネットの 1 つ。
5.

[関連付ける] を選択します。

Note
VPC とサブネットがクライアント VPN に関連付けられるまでに数分かかります。

ステップ 6: クライアント VPN に認証進入ルールを追加する
VPC の CIDR ルールを使用する認証進入ルールをクライアント VPN に追加する必要があります。Active Directory グループまたは SAML ベースのアイデンティティプロバイダー (IdP) から特定のユーザーまたはグループを承認する場合は、Client VPN ガイドの「承認ルール」を参照してくだ
さい。
CIDR を AWS Client VPN に追加するには
1.

Amazon VPC コンソールを開きます。

2.

[クライアント VPN エンドポイント] ページを選択します。

3.

クライアント VPN を選択し、[承認] タブの [進入を許可] を選択します。

4.

次を指定します:• [有効化する送信先ネットワーク] にある Amazon VPC の CIDR ルール。例:
10.192.0.0/16• [アクセスを付与する対象] で、[すべてのユーザーにアクセスを許可する] を選択します。
• [説明] で、分かりやすい名前を入力します。
5.

[認可ルールを追加する] を選択します。

Note
Amazon VPC のネットワークコンポーネントによっては、ネットワークアクセスコントロー
ルリスト (NACL) へのこの承認進入ルールが必要な場合もあります。

ステップ 6: クライアント VPN に認証進入ルールを追加する

254

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 7：クライアント VPN のエンドポイント設定ファイルをダウンロードします設定ファイルをダウンロードするには
1.

「Client VPN エンドポイント設定ファイルのダウンロード」にある Client VPN 設定ファイルを
ダウンロードするには、以下の簡単な手順に従ってください。

2.

このステップでは、クライアント VPN エンドポイントの DNS 名の前に文字列を追加するように求められます。例を示します。
•

Example エンドポイント DNS 名
クライアント VPN エンドポイントの DNS 名が次のようになっている場合
remote cvpn-endpoint-0909091212aaee1.prod.clientvpn.us-west-1.amazonaws.com 443

クライアント VPN エンドポイントを識別する文字列を次のように追加できます。
remote mwaavpn.cvpn-endpoint-0909091212aaee1.prod.clientvpn.uswest-1.amazonaws.com 443

3.

これらの手順では、クライアント証明書の内容を新しい <cert></cert> のタグの間に追加し、プライベートキーの内容を新しい <key></key> のタグの間に追加するように求められます。例を示します。
a.

コマンドプロンプトを開き、ディレクトリをクライアント証明書とプライベートキーの場所に変更します。

b.

Example macOS client1.domain.tld.crt
macOS で client1.domain.tld.crt ファイルの内容を表示するには、catclient1.domain.tld.crt を使用できます。
ターミナルから値をコピーし、downloaded-client-config.ovpn に貼り付けます。以下のようになります。
ZZZ1111dddaBBB-----END CERTIFICATE----</ca><cert>

ステップ 7：クライアント VPN のエンドポイント設定ファイルをダウンロードします255

Amazon Managed Workflows for Apache Airflow

ユーザーガイド-----BEGIN CERTIFICATE----YOUR client1.domain.tld.crt-----END CERTIFICATE----</cert>c.

Example macOS client1.domain.tld.key
client1.domain.tld.key の内容を表示するには、cat client1.domain.tld.keyを使用できます。
ターミナルから値をコピーし、downloaded-client-config.ovpn に貼り付けます。以下のようになります。
ZZZ1111dddaBBB-----END CERTIFICATE----</ca><cert>-----BEGIN CERTIFICATE----YOUR client1.domain.tld.crt-----END CERTIFICATE----</cert><key>-----BEGIN CERTIFICATE----YOUR client1.domain.tld.key-----END CERTIFICATE----</key>

ステップ 8: AWS Client VPN に接続する
AWS Client VPN のクライアントは無料で提供されています。コンピュータを AWS Client VPN に直接接続して、エンドツーエンドの VPN 体験をすることができます。
クライアント VPN に接続するには
1.

「AWS Client VPN for Desktop」をダウンロードしてインストールします。

2.

AWS Client VPN を開きます。

3.

VPN クライアントメニューで [ファイル]、[管理対象プロファイル] を選択します。

4.

[プロファイルを追加] を選択し、downloaded-client-config.ovpn を選択します。

5.

[表示名] にわかりやすい名前を入力します。

ステップ 8: AWS Client VPN に接続する

256

Amazon Managed Workflows for Apache Airflow

6.

[プロフィールを追加] を選択し、[完了] を選択します。

7.

[Connect] (接続) を選択します。

ユーザーガイド

クライアント VPN に接続したら、Amazon VPC 内のすべてのリソースを表示するには、他の VPNとの接続を切断する必要があります。
Note
接続する前に、クライアントを終了して再起動する必要がある場合があります。

次のステップ• Amazon Managed Workflows for Apache Airflowを使い始める で Amazon MWAA 環境を作成す
る方法を学びます。クライアント VPN と同じ AWS のリージョンに、クライアント VPN と同じ
VPC、プライベートサブネット、セキュリティグループを使用して環境を作成する必要があります。

チュートリアル: Linux 踏み台ホストを使用したプライベートネッ
トワークアクセスの設定
このチュートリアルでは、Amazon Managed Workflows for Apache Airflow 環境用に、コンピュー
タから Apache Airflow ウェブサーバーへの SSH トンネルを作成する手順を説明します。Amazon
MWAA 環境が既に作成されていることを前提としています。セットアップが完了すると、Linux 踏
み台ホストはジャンプサーバーとして機能し、コンピュータから VPC 内のリソースに安全に接続できるようになります。次に、SOCKS プロキシ管理アドオンを使用してブラウザのプロキシ設定を制御し、Apache Airflow UI にアクセスします。
セクション• プライベートネットワーク• ユースケース• 開始する前に• 目的• ステップ 1:踏み台インスタンスを作成する
次のステップ257

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• ステップ 2: ssh トンネルを作成する• ステップ 3:踏み台セキュリティグループをインバウンドルールとして設定する• ステップ 4: Apache Airflow URL をコピーします。
• ステップ 5: プロキシ設定を行う• ステップ 6: Apache Airflow UI を開きます。
• 次のステップ

プライベートネットワーク
このチュートリアルでは、Apache Airflow ウェブサーバーの [プライベートネットワーク] アクセス
モードを選択していることを前提としています。

プライベートネットワークアクセスモードは、Apache Airflow UI へのアクセスを、「お使いの環境のIAM ポリシー」へのアクセスが許可されている Amazon VPC 内のユーザーに制限します。
プライベートなウェブサーバーアクセスを持つ環境を作成する場合、すべての依存関係を Python
Wheel アーカイブ (.whl) にパッケージ化し、その後、requirements.txt で .whl を参照する必要があります。wheel を使用して依存関係をパッケージ化およびインストールする手順については、「Python wheel を使用した依存関係の管理」を参照してください。。
プライベートネットワーク

258

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

以下の画像は、Amazon MWAA コンソールの [プライベートネットワーク] オプションの場所を示しています。

ユースケース
このチュートリアルは、Amazon MWAA 環境を作成した後でも使用できます。環境と同じ Amazon
VPC、VPC セキュリティグループ、パブリックサブネットを使用する必要があります。

開始する前に
1.

ユーザー許可を確認してください。 AWS Identity and Access Management (IAM) のアカウントには、VPC リソースを作成および管理するための十分なアクセス許可があることを確認してく
ださい。

2.

Amazon MWAA VPC を使用してください。このチュートリアルでは、踏み台ホストを既存のVPC に関連付けることを想定としています。Amazon VPC は Amazon MWAA 環境と同じリージョンにあり、「VPC ネットワークを作成する」で定義されているように 2 つのプライベート
サブネットを備えている必要があります。

3.

SSH キーを作成します。仮想サーバーに接続するには、Amazon MWAA 環境と同じリージョンに Amazon EC2 SSH キー ([.pem]) を作成する必要があります。SSH キーがない場合
は、Amazon EC2 ユーザーガイド」の「キーペアの作成またはインポート」を参照してください。

目的
このチュートリアルでは、以下の作業を行います。
1.

「既存の VPC AWS CloudFormation のテンプレート」を使用して Linux 踏み台ホストインスタ
ンスを作成します。

2.

ポート 22 の進入ルールを使用して、踏み台インスタンスのセキュリティグループへのインバウ
ンドトラフィックを承認します。

ユースケース259

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

Amazon MWAA 環境のセキュリティグループから踏み台インスタンスのセキュリティグループ
へのインバウンドトラフィックを承認します。

4.

踏み台インスタンスへの SSH トンネルを作成します。

5.

Firefox ブラウザの FoxyProxy アドオンをインストールして設定し、Apache Airflow UI を表示します。

ステップ 1:踏み台インスタンスを作成する
次のセクションでは、 AWS CloudFormation コンソールでAWS CloudFormation 既存の VPC のテン
プレートを使用して linux 踏み台インスタンスを作成する手順について説明します。
Linux 踏み台ホストを作成するには
1.

AWS CloudFormation コンソールでデプロイクイックスタートページを開きます。

2.

ナビゲーションバーのリージョンセレクターを使用して、Amazon MWAA 環境と同じ AWS
リージョンを選択します。

3.

[次へ] をクリックします。

4.

[スタック名] テキストフィールドに、mwaa-linux-bastion などの名前を入力します。

5.

[パラメーター]、[ネットワーク設定] ペインで、以下のオプションを選択します。
a.

Amazon MWAA 環境の [VPC ID]を選択してください。

b.

Amazon MWAA 環境の [パブリックサブネット 1 ID] を選択します。

c.

Amazon MWAA 環境の [パブリックサブネット 2 ID] を選択します。

d.

[許可された踏み台外部アクセス CIDR] に、可能な限り狭いアドレス範囲 (内部 CIDR 範囲など) を入力します。
Note
範囲を特定する最も簡単な方法は、パブリックサブネットと同じ CIDR 範囲を使用することです。例えば、VPC ネットワークを作成するページの AWS
CloudFormation テンプレート内のパブリックサブネットは 10.192.10.0/24と です10.192.11.0/24。

6.

[Amazon EC2 設定] ペインで、以下を選択します。
a.

[キーペア名] のドロップダウンリストで SSH キーを選択します。

ステップ 1:踏み台インスタンスを作成する

260

Amazon Managed Workflows for Apache Airflowb.

[踏み台ホスト名] に名前を入力します。

c.

[TCPフォワーディング] には [true] を選択します。

ユーザーガイド

Warning
このステップでは TCP 転送を [true] に設定する必要があります。そうしないと、次のステップで SSH トンネルを作成できません。
7.

[次へ]、[次へ] を選択します。

8.

アクノレッジメントを選択し、[スタックを作成] を選択します。

Linux 踏み台ホストのアーキテクチャの詳細については、AWS 「 クラウド上の Linux 踏み台ホスト:
アーキテクチャ」を参照してください。

ステップ 2: ssh トンネルを作成する
Linux の踏み台への ssh トンネルを作成する方法については、以下のステップで示します。SSH ト
ンネルは、ローカル IP アドレスから Linux 踏み台へのリクエストを受信するため、Linux 踏み台のTCP フォワーディングは前のステップで true に設定されました。
macOS/Linux
コマンドラインでトンネルを作成するには
1.

Amazon EC2 のコンソールで「インスタンス」ページを開きます。

2.

インスタンスを選択します。

3.

[Public IPv4 DNS] のアドレスをコピーします。例えば
ec2-4-82-142-1.compute-1.amazonaws.com です。

4.

コマンドプロンプトで、SSH キーが保存されているディレクトリに移動します。

5.

次のコマンドを実行して、踏み台インスタンスに ssh を使用して接続します。サンプル値をmykeypair.pem の SSH キー名に置き換えてください。
ssh -i mykeypair.pem -N -D 8157 ec2-user@YOUR_PUBLIC_IPV4_DNS

ステップ 2: ssh トンネルを作成する

261

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Windows (PuTTY)
PuTTY を使用してトンネルを作成するには
1.

Amazon EC2 のコンソールで「インスタンス」ページを開きます。

2.

インスタンスを選択します。

3.

[Public IPv4 DNS] のアドレスをコピーします。例えば
ec2-4-82-142-1.compute-1.amazonaws.com です。

4.

「PuTTY」を開き、[セッション] を選択します。

5.

[ホスト名] にホスト名を ec2-user@ YOUR_PUBLIC_IPV4_DNS と入力し、[ポート] を 22 と入力します。

6.

[SSH] タブを展開し、[認証] を選択します。[認証用のプライベートキーファイル] で、ローカルの「ppk」ファイルを選択します。

7.

SSH で [トンネル] タブを選択し、[動的] オプションと [自動] オプションを選択します。

8.

[送信元ポート] に 8157 ポート (またはその他の未使用のポート) を追加し、[送信先] ポート
は空白のままにします。[追加] を選択します。

9.

[セッション] タブを選択し、セッション名を入力します。例えば「SSH Tunnel」のようにです。

10. [保存]、[開く] を選択します。
Note
パブリックキーのパスフレーズの入力が必要な場合があります。

Note
Permission denied (publickey) エラーが表示された場合は、AWSSupportTroubleshootSSH ツールを使用し、このオートメーションを実行する (コンソール) を選択して SSH セットアップのトラブルシューティングを行うことをお勧めします。

ステップ 2: ssh トンネルを作成する

262

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 3:踏み台セキュリティグループをインバウンドルールとして設定
するサーバーへのアクセスとサーバーからの通常のインターネットアクセスは、それらのサーバーにア
タッチされた特別なメンテナンスセキュリティグループで許可されています。以下の手順では、踏み台セキュリティグループを環境の VPC セキュリティグループへのインバウンドトラフィックソースとして設定する方法について説明します。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[ネットワーク] ペインで [VPC セキュリティグループ] を選択します。

4.

[Edit inbound rules] (インバウンドルールの編集) を選択します。

5.

[ルールを追加] を選択します。

6.

[ソース] ドロップダウンリストから VPC セキュリティグループ ID を選択します。

7.

残りのオプションは空白のままにするか、デフォルト値に設定します。

8.

[Save Rules] (ルールの保存) を選択します。

ステップ 4: Apache Airflow URL をコピーします。
次のステップでは、Amazon MWAA コンソールを開いて URL を Apache Airflow UI にコピーする方法について説明します。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

環境を選択します。

3.

[Airflow UI] の URL をコピーして、以降のステップで使用できるようにします。

ステップ 5: プロキシ設定を行う
ダイナミックポートフォワーディングによる SSH トンネルを使用する場合、SOCKS プロキシ管理アドオンを使用して、ブラウザでプロキシ設定を管理する必要があります。例えば、Chromium--proxy-serverの機能を使用してブラウザセッションを開始したり、Mozilla FireFox ブラウザで
FoxyProxy 拡張機能を使用したりできます。

ステップ 3:踏み台セキュリティグループをインバウンドルールとして設定する

263

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

オプション 1： ローカルポート転送を使用して SSH トンネルをセットアップします。
SOCKS プロキシを使いたくない場合は、ローカルポート転送を使って SSH トンネルをセットアッ
プすることができます。次のコマンド例では、ローカルポート 8157 でトラフィックを転送してAmazon EC2 ResourceManagerウェブインターフェイスにアクセスします。
1.

新しいコマンドプロンプトウィンドウを開きます。

2.

以下のコマンドを入力し、SSH トンネルを開きます。
ssh -i mykeypair.pem -N -L 8157:YOUR_VPC_ENDPOINT_IDvpce.YOUR_REGION.airflow.amazonaws.com:443
ubuntu@YOUR_PUBLIC_IPV4_DNS.YOUR_REGION.compute.amazonaws.com-L はローカルポート転送の使用を意味し、ノードのローカルウェブサーバーの特定リモートポートへのデータ転送に使用するローカルポートを指定できます。
3.

ブラウザに http://localhost:8157/ を入力してください。
Note
https://localhost:8157/ を使用する必要がある場合があります。

オプション 2: コマンドラインによるプロキシ
ほとんどのウェブブラウザでは、コマンドラインまたは設定パラメータを使用してプロキシを設定できます。たとえば、Chromium では、次のコマンドを使用してブラウザを起動できます。
chromium --proxy-server="socks5://localhost:8157"

これにより、前のステップで作成した SSH トンネルを使用してリクエストをプロキシするブラウザ
セッションが開始されます。プライベート Amazon MWAA 環境 URL (https:// を使用) は、次のように開くことができます。
https://YOUR_VPC_ENDPOINT_ID-vpce.YOUR_REGION.airflow.amazonaws.com/home.

ステップ 5: プロキシ設定を行う

264

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

オプション 3: for FoxyProxy Mozilla Firefox を使用するプロキシ
次の例は、Mozilla Firefox. FoxyProxy provides の FoxyProxy 標準 (バージョン 7.5.1) 設定を示しています。これにより、Apache Airflow UI で使用されるドメインに対応するパターンと一致する URLについてプロキシサーバーを使用できます。
1.

Firefox で、FoxyProxy 標準拡張ページを開きます。

2.

[Firefox に追加] を選択します。

3.

[追加] を選択します。

4.

ブラウザのツールバー FoxyProxy のアイコンを選択し、オプション を選択します。

5.

次のコードをコピーし、mwaa-proxy.json という名前でローカルに保存します。YOUR_HOST_NAME のサンプル値を [Apache Airflow URL] に置き換えてください。
{"e0b7kh1606694837384": {"type": 3,"color": "#66cc66","title": "airflow","active": true,"address": "localhost","port": 8157,"proxyDNS": false,"username": "","password": "","whitePatterns": [{"title": "airflow-ui","pattern": "YOUR_HOST_NAME","type": 1,"protocols": 1,"active": true}],
"blackPatterns": [],"pacURL": "","index": -1},"k20d21508277536715": {"active": true,"title": "Default","notes": "These are the settings that are used when no patterns match a URL.",

ステップ 5: プロキシ設定を行う

265

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"color": "#0055E5","type": 5,"whitePatterns": [{"title": "all URLs","active": true,"pattern": "*",
"type": 1,"protocols": 1}],"blackPatterns": [],"index": 9007199254740991},"logging": {"active": true,"maxSize": 500},"mode": "patterns","browserVersion": "82.0.3","foxyProxyVersion": "7.5.1","foxyProxyEdition": "standard"}

6.

FoxyProxy 6.0 以降の設定のインポートペインで、設定のインポートを選択し、mwaaproxy.jsonファイルを選択します。

7.

[OK] をクリックします。

ステップ 6: Apache Airflow UI を開きます。
Apache Airflow UI を開く方法については、以下のステップで示します。
1.

Amazon MWAA コンソールで「環境ページ」を開きます。

2.

[Airflow UI を開く] を選択します。

次のステップ• Apache Airflow CLI コマンドリファレンス の踏み台ホストへの SSH トンネルで Airflow CLI コマ
ンドを実行する方法について説明します。

ステップ 6: Apache Airflow UI を開きます。

266

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• DAG コードを Amazon S3 バケットにアップロードする方法については、DAG の追加と更新 で示します。

チュートリアル: Amazon MWAA ユーザーのアクセスを DAG のサ
ブセットに制限する
Amazon MWAA は IAM プリンシパルを 1 つ以上の Apache Airflow の「デフォルトロール」にマッピングすることで、環境へのアクセスを管理します。次のチュートリアルでは、個々の Amazon
MWAA ユーザーが特定の DAG または一連の DAG の表示と操作のみに制限する方法を示しています。
Note
このチュートリアルのステップは、IAM ロールを想定できる限り、フェデレーションアクセ
スを使用して完了できます。

トピック• 前提条件• ステップ 1:デフォルトの Public Apache Airflow ロールを使用して、IAM プリンシパルに Amazon
MWAA ウェブサーバーへのアクセス権を付与します。
• ステップ 2:新しい Apache Airflow カスタムロールを作成する• ステップ 3:作成したロールを Amazon MWAA ユーザーに割り当てます。
• 次のステップ• 関連リソース

前提条件
このチュートリアルのステップを完了するには、以下が必要です。
• 「複数の DAG を使用する Amazon MWAA 環境」• アクセスAdministratorAccess許可Adminを持つ IAM プリンシパル、および DAG アクセスを制限できるプリンシパルMWAAUserとしての IAM ユーザー 。管理者ロールの詳細については、「IAM
ユーザーガイド」の「管理者ジョブ機能」を参照してください。
チュートリアル:ユーザーを DAG のサブセットに制限する

267

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
アクセス許可ポリシーを IAM ユーザーに直接アタッチしないでください。Amazon MWAA
リソースに一時的にアクセスするために引き受けることができる IAM ロールの設定をお勧めします。
• AWS Command Line Interface バージョン 2 がインストールされました。

ステップ 1:デフォルトの Public Apache Airflow ロールを使用して、IAM
プリンシパルに Amazon MWAA ウェブサーバーへのアクセス権を付与します。
を使用してアクセス許可を付与するには AWS Management Console1.

Admin ロールを使用して AWS アカウントにサインインし、IAM コンソール を開きます。

2.

左側のナビゲーションペインで [ユーザー] を選択し、ユーザーテーブルから Amazon MWAA
IAM ユーザーを選択します。

3.

ユーザー詳細ページの [概要] で [アクセス許可] タブを選択し、[アクセス許可ポリシー] を選択
してカードを展開し、[アクセス許可の追加] を選択します。

4.

[権限の付与] セクションで、[既存のポリシーの直接添付] を選択し、[ポリシーの作成] を選択して、独自のカスタム権限ポリシーを作成して添付します。

5.

[ポリシーの作成] ページで [JSON] を選択し、次の JSON アクセス権限ポリシーをコピーしてポリシーエディターに貼り付けます。このポリシーは、デフォルトの Public Apache Airflow
ロールを持つユーザーにウェブサーバーアクセスを許可します。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "airflow:CreateWebLoginToken","Resource": ["arn:aws:airflow:YOUR_REGION:YOUR_ACCOUNT_ID:role/YOUR_ENVIRONMENT_NAME/Public"]}ステップ 1:デフォルトの Public Apache Airflow ロールを使用して、IAM プリンシパルに Amazon
MWAA ウェブサーバーへのアクセス権を付与します。

268

Amazon Managed Workflows for Apache Airflow

ユーザーガイド]}ステップ 2:新しい Apache Airflow カスタムロールを作成する
Apache Airflow UI を使用して新しいロールを作成するには
1.

管理者の IAM ロールを使用して、「Amazon MWAA コンソール」を開き、環境の Apache
Airflow UI を起動します。

2.

上部のナビゲーションペインで [セキュリティ] にカーソルを合わせてドロップダウンリストを開き、[ロールを一覧表示] を選択してデフォルトの Apache Airflow ロールを表示します。

3.

ロールリストから [ユーザー] を選択し、ページ上部の [アクション] を選択してドロップダウンを開きます。[ロールをコピー] を選択し、[OK] を確認します。
Note[Ops] ロールまたは [ビューワー] ロールをコピーして、それぞれ許可するアクセス権を増やしたり減らしたりします。

4.

テーブルで作成した新しいロールを探し、[レコードを編集] を選択します。

5.

[ロールを編集] ページで以下を実行します。
• [名前] には、テキストフィールドにロールの新しい名前を入力します。例えば Restrictedです。
• アクセス許可 のリストで、 can read on DAGsと を削除しcan edit on DAGs、アクセス許可を付与する DAGs のセットの読み取りおよび書き込みアクセス許可を追加します。たとえば、DAG である example_dag.py の場合、can read on DAG:example_dag と canedit on DAG:example_dag を追加してください。
[保存] を選択します。これで、Amazon MWAA 環境で使用可能な DAG のサブセットへのアクセスを制限する新しいロールができたはずです。これで、既存の Apache Airflow ユーザーにこのロールを割り当てることができるようになりました。

ステップ 2:新しい Apache Airflow カスタムロールを作成する

269

Amazon Managed Workflows for Apache Airflow

ユーザーガイドステップ 3:作成したロールを Amazon MWAA ユーザーに割り当てます。
新しいロールを割り当てるには
1.

MWAAUser の アクセス資格情報を使用して、以下の CLI コマンドを実行して環境のウェブサー
バー URL を取得してください。
$ aws mwaa get-environment --name YOUR_ENVIRONMENT_NAME | jq'.Environment.WebserverUrl'

成功すれば、次のような出力が表示されます。
"ab1b2345-678a-90a1-a2aa-34a567a8a901.c13.us-west-2.airflow.amazonaws.com"

2.

にMWAAUserサインインしたら AWS Management Console、新しいブラウザウィンドウを開き、次の URl にアクセスします。Webserver-URL を自分の情報に置き換えます。
https://<Webserver-URL>/home

成功した場合、まだ MWAAUser が Apache Airflow UI へのアクセス許可を得ていないた
め、Forbidden のエラーページが表示されます。
3.

にAdminサインインしたら AWS Management Console、Amazon MWAA コンソールを再度開き、環境の Apache Airflow UI を起動します。

4.

UI ダッシュボードから [セキュリティ] ドロップダウンを展開し、今度は [ユーザーを一覧表示]
を選択します。

5.

ユーザーテーブルで新しい Apache Airflow ユーザーを探し、[レコードを編集] を選択します。
ユーザーの名前は、次のパターンで IAM ユーザーの名前と一致します：user/mwaa-user。

6.

[ユーザーの編集] ページの [ロール] セクションで、作成した新しいカスタムロールを追加
し、[保存] を選択します。
Note[姓] フィールドは必須ですが、スペースがあれば十分です。

IAM Public プリンシパルは Apache Airflow UI MWAAUser にアクセスする権限を付与し、新し
いロールは DAG を確認するために必要な追加の権限を付与します。
ステップ 3:作成したロールを Amazon MWAA ユーザーに割り当てます。

270

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Important
Apache Airflow UI を使用して追加された IAM によって承認されていない 5 つのデフォルト
ロール (Admin など) は、次回のユーザーログイン時に削除されます。

次のステップ• Amazon MWAA 環境へのアクセス管理の詳細と、環境ユーザーに使用できる JSON IAM ポリシーのサンプルを確認するには、「the section called “Amazon MWAA環境へのアクセス”」を参照してください。

関連リソース• 「アクセスコントロール」(Apache Airflow ドキュメント) — デフォルトの Apache Airflow ロールの詳細については、Apache Airflow ドキュメンテーションウェブサイトをご覧ください。

チュートリアル: Amazon MWAA での独自の環境エンドポイントの管理を自動化する
AWS Organizations を使用してリソースを共有する複数のAWSアカウントを管理する場合、Amazon
MWAA では独自の Amazon VPC エンドポイントを作成および管理できます。つまり、環境に必要なリソースにのみアクセスできるようにする、より厳格なセキュリティポリシーを使用できます。
共有 Amazon VPC で環境を作成すると、メインの Amazon VPC を所有するアカウント (所有者)は、Amazon MWAA に必要な 2 つのプライベートサブネットを、同じ組織に属する他のアカウント(参加者) と共有します。これらのサブネットを共有する参加者アカウントは、共有 VPC 内の環境を表示、作成、変更、削除できます。
共有 VPC またはポリシー制限のある Amazon VPC で環境を作成すると、Amazon MWAA はまずサービス VPC リソースを作成し、次に最大 72 時間 PENDING状態に入ります。
環境ステータスが から CREATINGに変わるとPENDING、Amazon MWAA は 状態の変更に関する
Amazon EventBridge 通知を送信します。これにより、所有者アカウントは、Amazon MWAA コン
ソールまたは API からのエンドポイントサービス情報に基づいて、またはプログラムによって、参加者に代わって必要なエンドポイントを作成できます。以下では、Lambda 関数と Amazon MWAA
次のステップ271

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

状態変更通知をリッスンする EventBridge ルールを使用して、新しい Amazon VPC エンドポイントを作成します。
ここでは、環境と同じ Amazon VPC に新しいエンドポイントを作成します。共有 Amazon VPCをセットアップするには、所有者アカウントと参加者アカウントの Amazon MWAA 環境に
EventBridge ルールと Lambda 関数を作成します。
トピック• 前提条件• Amazon VPC を作成する• Lambda 関数を作成する• EventBridge ルールを作成する• 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 関数を作成します。
前提条件

272

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

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 を書き留めます。次のステップでは、ARN を指定して、関数を新しい EventBridge ルールのターゲットとして設定します。
次のセクションでは、環境が PENDING状態になったときにこの関数を呼び出す EventBridge ルール
を作成します。

EventBridge ルールを作成する
以下を実行して、Amazon MWAA 通知をリッスンし、新しい Lambda 関数をターゲットとする新しいルールを作成します。
1.

コマンドを使用して EventBridge put-rule新しい EventBridge ルールを作成します。
$ aws events put-rule --name "mwaa-lambda-rule" \Lambda 関数を作成する

273

Amazon Managed Workflows for Apache Airflow

ユーザーガイド--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-vpcelambda"

カスタマー管理の Amazon VPC エンドポイントを使用して、新しい Amazon MWAA 環境を作成す
る準備が整いました。

Amazon MWAA 環境を作成する
Amazon MWAA コンソールを使用して、カスタマー管理の Amazon VPC エンドポイントで新しい環境を作成します。
1.

Amazon MWAA コンソールを開き、環境の作成を選択します。

2.

名前には一意の名前を入力します。

3.

Airflow バージョン では、最新バージョンを選択します。

4.

環境dags/で使用する などの Amazon S3 バケットと DAGsフォルダ を選択し、次へ を選択します。

5.

詳細設定の構成ページで、次の操作を行います。
a.

Virtual Private Cloud で、前のステップ で作成した Amazon VPC を選択します。

b.

ウェブサーバーアクセス で、パブリックネットワーク (インターネットアクセス） を選択します。

環境を作成します。

274

Amazon Managed Workflows for Apache Airflowc.

ユーザーガイド

セキュリティグループ で、 で作成したセキュリティグループを選択しますAWS
CloudFormation。前のステップのAWS PrivateLinkエンドポイントのセキュリティグループ
は自己参照であるため、環境に対して同じセキュリティグループを選択する必要があります。

d.

エンドポイント管理 で、カスタマーマネージドエンドポイント を選択します。

6.

残りのデフォルト設定のままにして、次へを選択します。

7.

選択内容を確認し、環境の作成を選択します。

Tip
新しい環境の設定の詳細については、「Amazon MWAA の開始方法」を参照してください。

環境が の場合PENDING、Amazon MWAA はルールに設定したイベントパターンに一致する通知を送信します。このルールは Lambda 関数を呼び出します。関数は通知イベントを解析し、ウェブサー
バーと Amazon SQS キューに必要なエンドポイント情報を取得します。次に、Amazon VPC にエンドポイントを作成します。
エンドポイントが使用可能になると、Amazon MWAA は環境の作成を再開します。準備ができたら、環境ステータスが に変わりAVAILABLE、Amazon MWAA コンソールを使用して Apache Airflow
ウェブサーバーにアクセスできます。

環境を作成します。

275

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow
このガイドには、Amazon Managed Workflows for Apache Airflow 環境で使用できる DAGsやカスタ
ムプラグインなどのコードサンプルが含まれています。 AWS サービスで Apache Airflow を使用するその他の例については、Apache Airflow GitHub リポジトリの dags ディレクトリを参照してくだ
さい。
サンプル• DAG を使用して に変数をインポートする CLI• を使用したSSH接続の作成 SSHOperator• Apache Airflow Snowflake 接続 AWS Secrets Manager に でシークレットキーを使用する• DAG を使用した でのカスタムメトリクスの書き込み CloudWatch• Amazon MWAA環境での Aurora PostgreSQL データベースのクリーンアップ• Amazon S3 上のCSVファイルに環境メタデータをエクスポートする• Apache Airflow 変数 AWS Secrets Manager の でのシークレットキーの使用• Apache Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する• Oracle でのカスタムプラグインの作成• ランタイム環境変数を生成するカスタムプラグインを作成します• Amazon での DAGのタイムゾーンの変更 MWAA
• CodeArtifact トークンの更新• Apache Hive と Hadoop を使ったカスタムプラグインの作成• Apache Airflow 用のカスタムプラグインの作成 PythonVirtualenvOperator• Lambda 関数DAGsを使用した呼び出し• 異なる Amazon MWAA環境でDAGsの呼び出し• Amazon RDS for Microsoft SQL Server MWAAでの Amazon の使用• Amazon MWAA と Amazon EMR を併用する• Amazon MWAAでの Amazon の使用 EKS• ECS を使用した Amazon への接続 ECSOperator• Amazon での dbt の使用 MWAA
• AWS ブログとチュートリアル
276

Amazon Managed Workflows for Apache Airflow

ユーザーガイドDAG を使用して に変数をインポートする CLI
次のサンプルコードは、Amazon Managed Workflows for Apache Airflow CLIの を使用して変数をインポートします。
トピック• Version• 前提条件• アクセス許可• 依存関係• コードサンプル• 次のステップ

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

アクセス許可AWS アカウントはAmazonMWAAAirflowCliAccessポリシーにアクセスする必要があります。詳
細については、「Apache Airflow CLIポリシー: AmazonMWAAAirflowCliAccess」を参照してください。

依存関係• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

変数のインポート DAG

277

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプル
次のサンプルコードは、Amazon MWAA環境名 ( 内mwaa_env）、環境の AWS リージョン( 内aws_region）、インポートする変数を含むローカルファイル ( 内) の 3 つの入力を受け取りますvar_file。
import boto3
import json
import requests
import base64
import getopt
import sys
argv = sys.argv[1:]mwaa_env=''
aws_region=''var_file=''try:
opts, args = getopt.getopt(argv, 'e:v:r:', ['environment', 'variablefile','region'])#if len(opts) == 0 and len(opts) > 3:
if len(opts) != 3:
print ('Usage: -e MWAA environment -v variable file location and filename -r
aws region')else:
for opt, arg in opts:
if opt in ("-e"):mwaa_env=arg
elif opt in ("-r"):
aws_region=arg
elif opt in ("-v"):
var_file=arg
boto3.setup_default_session(region_name="{}".format(aws_region))mwaa_env_name = "{}".format(mwaa_env)
client = boto3.client('mwaa')
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name)with open ("{}".format(var_file), "r") as myfile:
コードサンプル278

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

fileconf = myfile.read().replace('\n', '')json_dictionary = json.loads(fileconf)
for key in json_dictionary:
print(key, " ", json_dictionary[key])val = (key + " " + json_dictionary[key])mwaa_auth_token = 'Bearer ' + mwaa_cli_token['CliToken']mwaa_webserver_hostname = 'https://{0}/aws_mwaa/
cli'.format(mwaa_cli_token['WebServerHostname'])raw_data = "variables set {0}".format(val)mwaa_response = requests.post(
mwaa_webserver_hostname,headers={'Authorization': mwaa_auth_token,'Content-Type': 'text/plain'},
data=raw_data)
mwaa_std_err_message = base64.b64decode(mwaa_response.json()['stderr']).decode('utf8')mwaa_std_out_message = base64.b64decode(mwaa_response.json()['stdout']).decode('utf8')
print(mwaa_response.status_code)
print(mwaa_std_err_message)
print(mwaa_std_out_message)
except:print('Use this script with the following options: -e MWAA environment -v variable
file location and filename -r aws region')
print("Unexpected error:", sys.exc_info()[0])sys.exit(2)次のステップ• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。

次のステップ279

Amazon Managed Workflows for Apache Airflow

ユーザーガイドを使用したSSH接続の作成 SSHOperator
次の例では、有向非巡回グラフ (DAG) SSHOperatorで を使用して、Amazon Managed Workflows
for Apache Airflow 環境からリモート Amazon EC2インスタンスに接続する方法について説明します。同様の方法を使用して、SSHアクセス可能なリモートインスタンスに接続できます。
次の例では、シーSSHクレットキー (.pem) を Amazon S3 の環境の dags ディレクトリにアップロードします。次に、requirements.txt を使用して必要な依存関係をインストールし、UI で新しい Apache Airflow 接続を作成します。最後に、リモートインスタンスSSHへの接続DAGを作成す
る を記述します。
トピック• Version• 前提条件• アクセス許可• 要件• シークレットキーを Amazon S3 にコピーする• 新しい Apache Airflow 接続の作成• コードサンプル

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。
• SSH シークレットキー。このコードサンプルでは、Amazon MWAA環境と同じ リージョ
ン.pemに Amazon EC2インスタンスと があることを前提としています。キーがない場合は、「Amazon EC2 ユーザーガイド」の「キーペアの作成またはインポート」を参照してください。

SSHOperator の使用

280

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

要件
次のパラメータを requirements.txt に追加して、ウェブサーバーに apache-airflowproviders-ssh パッケージをインストールしてください。環境が更新され、Amazon が依存関係
をMWAA正常にインストールすると、UI に新しいSSH接続タイプが表示されます。
-c https://raw.githubusercontent.com/apache/airflow/constraints-Airflow-version/
constraints-Python-version.txt
apache-airflow-providers-ssh

Note-c は、 URLの制約を定義しますrequirements.txt。これにより、Amazon はお客様の環境に適したパッケージバージョンMWAAをインストールします。

シークレットキーを Amazon S3 にコピーする
次の AWS Command Line Interface コマンドを使用して、.pemキーを Amazon S3 の環境のdagsディレクトリにコピーします。
$ aws s3 cp your-secret-key.pem s3://your-bucket/dags/

Amazon はdags、 .pemキーを含む のコンテンツをローカル/usr/local/airflow/dags/ディレ
クトリMWAAにコピーします。これにより、Apache Airflow はキーにアクセスできます。

新しい Apache Airflow 接続の作成
Apache Airflow UI を使用して新しいSSH接続を作成するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境のリストで、ご使用の環境に合った [Open Airflow UI] を選択します。

3.

Apache Airflow UI ページで、上部のナビゲーションバーから [管理] を選択してドロップダウン
リストを展開し、[接続] を選択します。

アクセス許可281

Amazon Managed Workflows for Apache Airflow

4.

ユーザーガイド[接続リスト] ページで [+] を選択するか、[新規レコードを追加] ボタンをクリックして新しい接続を追加します。

5.

[接続の追加] ページで、以下の情報を追加します。
a.

[接続 ID] には ssh_new と入力します。

b.

接続タイプ で、SSHドロップダウンリストから を選択します。
Note
SSH 接続タイプがリストにない場合、Amazon MWAAは必要なapache-airflowproviders-sshパッケージをインストールしていません。このパッケージを含む
ように requirements.txt ファイルを更新してから、もう一度試してください。

c.

ホスト には、接続先の Amazon EC2インスタンスの IP アドレスを入力します。例えば、12.345.67.89 と指定します。

d.

ユーザー名 に、Amazon EC2インスタンスに接続するec2-user場合は を入力します。Apache Airflow に接続させたいリモートインスタンスのタイプによって、ユーザー名は異なる場合があります。

e.

追加の には、次のキーと値のペアを JSON 形式で入力します。
{ "key_file": "/usr/local/airflow/dags/your-secret-key.pem" }このキーと値のペアは、Apache Airflow に対してシークレットキーをローカルの /dags
ディレクトリから探すように指示します。

コードサンプル
以下DAGでは、 SSHOperatorを使用してターゲット Amazon EC2インスタンスに接続し、hostnameLinux コマンドを実行してインスタンスの名前を出力します。を変更DAGして、リ
モートインスタンスで任意のコマンドまたはスクリプトを実行できます。
1.

ターミナルを開き、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに ssh.py として保存します。

コードサンプル282

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow.decorators import dag
from datetime import datetime
from airflow.providers.ssh.operators.ssh import SSHOperator@dag(
dag_id="ssh_operator_example",schedule_interval=None,start_date=datetime(2022, 1, 1),catchup=False,)
def ssh_dag():
task_1=SSHOperator(
task_id="ssh_task",
ssh_conn_id='ssh_new',command='hostname',)
my_ssh_dag = ssh_dag()

3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。
$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

成功すると、 のタスクログに次のような出力が表示されますssh_taskssh_operator_exampleDAG。
[2022-01-01, 12:00:00 UTC] {{base.py:79}} INFO - Using connection to: id: ssh_new.
Host: 12.345.67.89, Port: None,
Schema: , Login: ec2-user, Password: None, extra: {'key_file': '/usr/local/airflow/
dags/your-secret-key.pem'}[2022-01-01, 12:00:00 UTC] {{ssh.py:264}} WARNING - Remote Identification Change is
not verified. This won't protect against Man-In-The-Middle attacks[2022-01-01, 12:00:00 UTC] {{ssh.py:270}} WARNING - No Host Key Verification. This
won't protect against Man-In-The-Middle attacks[2022-01-01, 12:00:00 UTC] {{transport.py:1819}} INFO - Connected (version 2.0,
client OpenSSH_7.4)[2022-01-01, 12:00:00 UTC] {{transport.py:1819}} INFO - Authentication (publickey)
successful!
[2022-01-01, 12:00:00 UTC] {{ssh.py:139}} INFO - Running command: hostname[2022-01-01, 12:00:00 UTC]{{ssh.py:171}} INFO - ip-123-45-67-89.uswest-2.compute.internal

コードサンプル283

Amazon Managed Workflows for Apache Airflow

ユーザーガイド[2022-01-01, 12:00:00 UTC] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS.
dag_id=ssh_operator_example, task_id=ssh_task, execution_date=20220712T200914,
start_date=20220712T200915, end_date=20220712T200916

Apache Airflow Snowflake 接続 AWS Secrets Manager に でシークレットキーを使用する
次の例では、 AWS Secrets Manager を呼び出して、Amazon Managed Workflows for Apache
Airflow で Apache Airflow Snowflake 接続のシークレットキーを取得します。AWS Secrets Manager
シークレットを使用した Apache Airflow 接続の設定 でのステップを完了していることが前提となります。
トピック• Version• 前提条件• アクセス許可• 要件• コードサンプル• 次のステップ

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Secrets Manager バックエンドを Apache Airflow 構成オプションとして使用する方法は、AWS
Secrets Manager シークレットを使用した Apache Airflow 接続の設定 で示されています。
• AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 に示すように、Secrets Manager のApache Airflow 接続文字列。

Secrets Manager の Apache Airflow スノーフレーク接続

284

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アクセス許可• Secrets Manager の権限 (AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 を参照)。

要件
このページのサンプルコードを使用するには、次の依存関係を requirements.txt に追加してください。詳細については、Python 依存関係のインストール を参照してください。
apache-airflow-providers-snowflake==1.3.0

コードサンプル
次の手順では、Secrets Manager を呼び出してシークレットを取得するDAGコードを作成する方法について説明します。
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに snowflake_connection.py として保
存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""

アクセス許可285

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow import DAG
from airflow.providers.snowflake.operators.snowflake import SnowflakeOperator
from airflow.utils.dates import days_ago
snowflake_query = ["""use warehouse "MY_WAREHOUSE";""","""select * from "SNOWFLAKE_SAMPLE_DATA"."WEATHER"."WEATHER_14_TOTAL" limit
100;""",]
with DAG(dag_id='snowflake_test', schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:snowflake_select = SnowflakeOperator(
task_id="snowflake_select",sql=snowflake_query,snowflake_conn_id="snowflake_conn",)

次のステップ• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。

DAG を使用した でのカスタムメトリクスの書き込み CloudWatch
次のコード例を使用して、 を実行して Amazon MWAA環境の OS レベルのメトリク
スPythonOperatorを取得する有向非巡回グラフ (DAG) を記述できます。DAG 次に、 はデータをカスタムメトリクスとして Amazon に発行します CloudWatch。
カスタム OS レベルのメトリクスを使用すると、環境ワーカーが仮想メモリや などのリソースをどのように活用しているかをさらに可視化できますCPU。この情報を使用して、ワークロードに最適な環境クラスを選択できます。
トピック• Version• 前提条件• アクセス許可• 依存関係
次のステップ286

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• コード例

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのコード例を使用するには、以下のものが必要である：• Amazon MWAA環境 。

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

依存関係• このページのコード例を使用するのに、追加の依存関係は必要ありません。

コード例
1.

コマンドプロンプトで、DAGコードが保存されているフォルダに移動します。例:
cd dags2.

次のコード例の内容をコピーし、dag-custom-metrics.py としてローカルに保存しま
す。MWAA-ENV-NAME をご使用の環境名に置き換えてください。
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
from datetime import datetime
import os,json,boto3,psutil,socket
def publish_metric(client,name,value,cat,unit='None'):environment_name = os.getenv("MWAA_ENV_NAME")

Version287

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

value_number=float(value)
hostname = socket.gethostname()
ip_address = socket.gethostbyname(hostname)print('writing value',value_number,'to metric',name)response = client.put_metric_data(
Namespace='MWAA-Custom',
MetricData=[{'MetricName': name,'Dimensions': [{'Name': 'Environment','Value': environment_name},{'Name': 'Category','Value': cat},{'Name': 'Host','Value': ip_address},],'Timestamp': datetime.now(),'Value': value_number,'Unit': unit},])
print(response)
return response
def python_fn(**kwargs):
client = boto3.client('cloudwatch')
cpu_stats = psutil.cpu_stats()
print('cpu_stats', cpu_stats)virtual = psutil.virtual_memory()
cpu_times_percent = psutil.cpu_times_percent(interval=0)
publish_metric(client=client, name='virtual_memory_total',
cat='virtual_memory', value=virtual.total, unit='Bytes')

コード例

288

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

publish_metric(client=client, name='virtual_memory_available',cat='virtual_memory', value=virtual.available, unit='Bytes')
publish_metric(client=client, name='virtual_memory_used', cat='virtual_memory',
value=virtual.used, unit='Bytes')
publish_metric(client=client, name='virtual_memory_free', cat='virtual_memory',
value=virtual.free, unit='Bytes')
publish_metric(client=client, name='virtual_memory_active',
cat='virtual_memory', value=virtual.active, unit='Bytes')
publish_metric(client=client, name='virtual_memory_inactive',
cat='virtual_memory', value=virtual.inactive, unit='Bytes')
publish_metric(client=client, name='virtual_memory_percent',
cat='virtual_memory', value=virtual.percent, unit='Percent')
publish_metric(client=client, name='cpu_times_percent_user',cat='cpu_times_percent', value=cpu_times_percent.user, unit='Percent')
publish_metric(client=client, name='cpu_times_percent_system',
cat='cpu_times_percent', value=cpu_times_percent.system, unit='Percent')
publish_metric(client=client, name='cpu_times_percent_idle',
cat='cpu_times_percent', value=cpu_times_percent.idle, unit='Percent')
return "OK"with DAG(dag_id=os.path.basename(__file__).replace(".py", ""),
schedule_interval='*/5 * * * *', catchup=False, start_date=days_ago(1)) as dag:t = PythonOperator(task_id="memory_test", python_callable=python_fn,
provide_context=True)

3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。
$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

が正常にDAG実行されると、Apache Airflow ログに次のような内容が表示されます。
[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO cpu_stats scpustats(ctx_switches=3253992384, interrupts=1964237163,
soft_interrupts=492328209, syscalls=0)[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - writing value
16024199168.0 to metric virtual_memory_total[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - {'ResponseMetadata':{'RequestId': 'fad289ac-aa51-46a9-8b18-24e4e4063f4d', 'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': 'fad289ac-aa51-46a9-8b18-24e4e4063f4d',

コード例

289

Amazon Managed Workflows for Apache Airflow

ユーザーガイド'content-type': 'text/xml', 'content-length': '212', 'date': 'Tue, 16 Aug 2022
17:54:45 GMT'}, 'RetryAttempts': 0}}[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - writing value
14356287488.0 to metric virtual_memory_available[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - {'ResponseMetadata':{'RequestId': '6ef60085-07ab-4865-8abf-dc94f90cab46', 'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': '6ef60085-07ab-4865-8abf-dc94f90cab46','content-type': 'text/xml', 'content-length': '212', 'date': 'Tue, 16 Aug 2022
17:54:45 GMT'}, 'RetryAttempts': 0}}[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - writing value
1342296064.0 to metric virtual_memory_used[2022-08-16, 10:54:46 UTC] {{logging_mixin.py:109}} INFO - {'ResponseMetadata':{'RequestId': 'd5331438-5d3c-4df2-bc42-52dcf8d60a00', 'HTTPStatusCode': 200,
'HTTPHeaders': {'x-amzn-requestid': 'd5331438-5d3c-4df2-bc42-52dcf8d60a00','content-type': 'text/xml', 'content-length': '212', 'date': 'Tue, 16 Aug 2022
17:54:45 GMT'}, 'RetryAttempts': 0}}...
[2022-08-16, 10:54:46 UTC] {{python.py:152}} INFO - Done. Returned value was: OK[2022-08-16, 10:54:46 UTC] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS.
dag_id=dag-custom-metrics, task_id=memory_test, execution_date=20220816T175444,
start_date=20220816T175445, end_date=20220816T175446[2022-08-16, 10:54:46 UTC] {{local_task_job.py:154}} INFO - Task exited with returncode 0

Amazon MWAA環境での Aurora PostgreSQL データベースのク
リーンアップAmazon Managed Workflows for Apache Airflow は、Aurora PostgreSQL データベースを Apache
Airflow メタデータデータベースとして使用し、そこでDAG実行インスタンスとタスクインスタンスが保存されます。次のサンプルコードでは、Amazon MWAA環境専用の Aurora PostgreSQL データ
ベースからエントリを定期的にクリアします。
トピック• Version• 前提条件• 依存関係• コードサンプル

Aurora PostgreSQL データベースのクリーンアップ

290

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。

依存関係• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

コードサンプル
以下は、 で指定されたテーブルのメタデータデータベースをDAGクリーンアップしま
すTABLES_TO_CLEAN。この例では、30 日以上経過した指定されたテーブルからデータを削除します。エントリの削除距離を調整するには、 MAX_AGE_IN_DAYSを別の値に設定します。
Apache Airflow v2.4 and laterfrom airflow import DAG
from airflow.models.param import Paramfrom airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
from datetime import datetime, timedelta# Note: Database commands may time out if running longer than 5 minutes. If thisoccurs, please increase the MAX_AGE_IN_DAYS (or change# timestamp parameter to an earlier date) for initial runs, then reduce on
subsequent runs until the desired retention is met.
MAX_AGE_IN_DAYS = 30
# To clean specific tables, please provide a comma-separated list per

Version291

Amazon Managed Workflows for Apache Airflow

ユーザーガイド# https://airflow.apache.org/docs/apache-airflow/stable/cli-and-env-variablesref.html#clean# A value of None will clean all tables
TABLES_TO_CLEAN = Nonewith DAG(
dag_id="clean_db_dag",schedule_interval=None,
catchup=False,start_date=days_ago(1),params={"timestamp": Param(
default=(datetime.now()-timedelta(days=MAX_AGE_IN_DAYS)).strftime("%Y%m-%d %H:%M:%S"),
type="string",
minLength=1,
maxLength=255,),}) as dag:
if TABLES_TO_CLEAN:
bash_command="airflow db clean --clean-before-timestamp'{{ params.timestamp }}' --tables '"+TABLES_TO_CLEAN+"' --skip-archive --yes"else:
bash_command="airflow db clean --clean-before-timestamp'{{ params.timestamp }}' --skip-archive --yes"
cli_command = BashOperator(
task_id="bash_command",bash_command=bash_command)

Apache Airflow v2.2 and earlier
from airflow import settingsfrom airflow.utils.dates import days_ago
from airflow.models import DagTag, DagModel, DagRun, ImportError, Log, SlaMiss,
RenderedTaskInstanceFields, TaskInstance, TaskReschedule, XComfrom airflow.decorators import dag, task
from airflow.utils.dates import days_ago
from time import sleep

コードサンプル292

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow.version import version
major_version, minor_version = int(version.split('.')[0]), int(version.split('.')[1])
if major_version >= 2 and minor_version >= 6:from airflow.jobs.job import Job
else:# The BaseJob class was renamed as of Apache Airflow v2.6
from airflow.jobs.base_job import BaseJob as Job# Delete entries for the past 30 days. Adjust MAX_AGE_IN_DAYS to set how far backthis DAG cleans the database.
MAX_AGE_IN_DAYS = 30
MIN_AGE_IN_DAYS = 0
DECREMENT = -7
# This is a list of (table, time) tuples.
# table = the table to clean in the metadata database# time = the column in the table associated to the timestamp of an entry#
or None if not applicable.
TABLES_TO_CLEAN = [[Job, Job.latest_heartbeat],[TaskInstance, TaskInstance.execution_date],[TaskReschedule, TaskReschedule.execution_date],[DagTag, None],[DagModel, DagModel.last_parsed_time],[DagRun, DagRun.execution_date],[ImportError, ImportError.timestamp],[Log, Log.dttm],[SlaMiss, SlaMiss.execution_date],[RenderedTaskInstanceFields, RenderedTaskInstanceFields.execution_date],[XCom, XCom.execution_date],]@task()
def cleanup_db_fn(x):session = settings.Session()
if x[1]:for oldest_days_ago in range(MAX_AGE_IN_DAYS, MIN_AGE_IN_DAYS, DECREMENT):
earliest_days_ago = max(oldest_days_ago + DECREMENT, MIN_AGE_IN_DAYS)
print(f"deleting {str(x[0])} entries between {earliest_days_ago} and{oldest_days_ago} days old...")
earliest_date = days_ago(earliest_days_ago)oldest_date = days_ago(oldest_days_ago)

コードサンプル293

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

query = session.query(x[0]).filter(x[1] >= earliest_date).filter(x[1] <=oldest_date)query.delete(synchronize_session= False)session.commit()
sleep(5)else:# No time column specified for the table. Delete all entries
print("deleting", str(x[0]), "...")
query = session.query(x[0])query.delete(synchronize_session= False)session.commit()
session.close()@dag(
dag_id="cleanup_db",
schedule_interval="@weekly",
start_date=days_ago(7),catchup=False,
is_paused_upon_creation=False)
def clean_db_dag_fn():t_last=None
for x in TABLES_TO_CLEAN:
t=cleanup_db_fn(x)if t_last:t_last >> tt_last = tclean_db_dag = clean_db_dag_fn()

Amazon S3 上のCSVファイルに環境メタデータをエクスポートする
次のコード例は、データベースにDAG実行情報の範囲をクエリし、Amazon S3 に保存されている.csvファイルにデータを書き込む有向非巡回グラフ (DAG) を作成する方法を示しています。
Amazon S3

Amazon S3 への環境のメタデータのエクスポート

294

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

データをローカルで検査したり、オブジェクトストレージにアーカイブしたり、Amazon Amazon
S3 Redshift オペレータやデータベースクリーンアップなどのツールと組み合わせて、Amazon
MWAAメタデータを環境外に移動し、将来の分析のために保存したりするために、環境の Aurora
PostgreSQL データベースから情報をエクスポートできます。
Apache Airflow のモデルにリストされているオブジェクトのいずれかに対してデータベースをク
エリできます。このコードサンプルでは、、DagRun、TaskFailおよび の 3 つのモデルを使用してTaskInstance、DAG実行に関連する情報を提供します。
トピック• Version• 前提条件• アクセス許可• 要件• コードサンプル

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。
• メタデータ情報をエクスポートする新しい Amazon S3 バケット。

アクセス許可Amazon には、クエリされたメタデータ情報を Amazon S3 に書き込むs3:PutObjectためのAmazon S3 アクションのアクセス許可MWAAが必要です。次のポリシーステートメントを、環境の実行ロールに追加します。
{"Effect": "Allow",
Version295

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Action": "s3:PutObject*","Resource": "arn:aws:s3:::your-new-export-bucket"}

このポリシーは、書き込みアクセスを のみに制限します。your-new-export-bucket.

要件• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

コードサンプル
次の手順では、Aurora PostgreSQL にDAGクエリを実行し、その結果を新しい Amazon S3 バケットに書き込む を作成する方法について説明します。
1.

ターミナルで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

次のコード例の内容をコピーし、metadata_to_csv.py としてローカルに保存します。に割り当てられた値を変更MAX_AGE_IN_DAYSして、メタデータデータベースからのDAGクエリの最も古いレコードの経過時間を制御できます。
from airflow.decorators import dag, task
from airflow import settings
import os
import boto3
from airflow.utils.dates import days_ago
from airflow.models import DagRun, TaskFail, TaskInstanceimport csv, refrom io import StringIO
DAG_ID = os.path.basename(__file__).replace(".py", "")MAX_AGE_IN_DAYS = 30
S3_BUCKET = '<your-export-bucket>'
S3_KEY = 'files/export/{0}.csv'# You can add other objects to export from the metadatabase,
OBJECTS_TO_EXPORT = [

要件

296

Amazon Managed Workflows for Apache Airflow

ユーザーガイド[DagRun,DagRun.execution_date],[TaskFail,TaskFail.execution_date],[TaskInstance, TaskInstance.execution_date],]@task()
def export_db_task(**kwargs):
session = settings.Session()
print("session: ",str(session))
oldest_date = days_ago(MAX_AGE_IN_DAYS)
print("oldest_date: ",oldest_date)s3 = boto3.client('s3')
for x in OBJECTS_TO_EXPORT:
query = session.query(x[0]).filter(x[1] >= days_ago(MAX_AGE_IN_DAYS))
print("type",type(query))allrows=query.all()name=re.sub("[<>']", "", str(x[0]))print(name,": ",str(allrows))
if len(allrows) > 0:
outfileStr=""f = StringIO(outfileStr)
w = csv.DictWriter(f, vars(allrows[0]).keys())
w.writeheader()for y in allrows:
w.writerow(vars(y))
outkey = S3_KEY.format(name[6:])s3.put_object(Bucket=S3_BUCKET, Key=outkey, Body=f.getvalue())@dag(
dag_id=DAG_ID,
schedule_interval=None,start_date=days_ago(1),)
def export_db():t = export_db_task()
metadb_to_s3_test = export_db()

3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。

コードサンプル297

Amazon Managed Workflows for Apache Airflow

ユーザーガイド$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

成功した場合は、export_dbタスクのタスクログに以下のような出力が表示されます。
[2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - type <class'sqlalchemy.orm.query.Query'>[2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - classairflow.models.dagrun.DagRun : [your-tasks][2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - type <class'sqlalchemy.orm.query.Query'>[2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - classairflow.models.taskfail.TaskFail : [your-tasks][2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - type <class'sqlalchemy.orm.query.Query'>[2022-01-01, 12:00:00 PDT] {{logging_mixin.py:109}} INFO - classairflow.models.taskinstance.TaskInstance : [your-tasks][2022-01-01, 12:00:00 PDT] {{python.py:152}} INFO - Done. Returned value was: OK[2022-01-01, 12:00:00 PDT] {{taskinstance.py:1280}} INFO - Marking task as
SUCCESS. dag_id=metadb_to_s3, task_id=export_db, execution_date=20220101T000000,
start_date=20220101T000000, end_date=20220101T000000[2022-01-01, 12:00:00 PDT] {{local_task_job.py:154}} INFO - Task exited with returncode 0[2022-01-01, 12:00:00 PDT] {{local_task_job.py:264}} INFO - 0 downstream tasks
scheduled from follow-on schedule check

今、/files/export/ の新しい Amazon S3 バケット内の.csv ファイルにアクセスしてダウンロードできます。

Apache Airflow 変数 AWS Secrets Manager の でのシークレット
キーの使用
次の例では、 AWS Secrets Manager を呼び出して、Amazon Managed Workflows for Apache
Airflow の Apache Airflow 変数のシークレットキーを取得します。AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 でのステップを完了していることが前提となります。
トピック• Version• 前提条件
Secrets Manager での Apache Airflow 変数の使用

298

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• アクセス許可• 要件• コードサンプル• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Secrets Manager バックエンドを Apache Airflow 構成オプションとして使用する方法は、AWS
Secrets Manager シークレットを使用した Apache Airflow 接続の設定 で示されています。
• AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 に示すように、Secrets Manager の Apache Airflow 変数文字列。

アクセス許可• Secrets Manager の権限 (AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 を参照)。

要件• このコード例を Apache Airflow v1 で使用する場合、追加の依存関係は必要ありません。このコードでは、ご使用の環境にある Apache Airflow v1 のベースインストールを使用します。
• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

Version299

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプル
次の手順では、Secrets Manager を呼び出してシークレットを取得するDAGコードを作成する方法について説明します。
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに secrets-manager-var.py として保存します。
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.models import Variablefrom airflow.utils.dates import days_ago
from datetime import timedelta
import os
DAG_ID = os.path.basename(__file__).replace(".py", "")DEFAULT_ARGS = {'owner': 'airflow','depends_on_past': False,'email': ['airflow@example.com'],'email_on_failure': False,'email_on_retry': False,}
def get_variable_fn(**kwargs):
my_variable_name = Variable.get("test-variable", default_var="undefined")
print("my_variable_name: ", my_variable_name)return my_variable_namewith DAG(
dag_id=DAG_ID,
default_args=DEFAULT_ARGS,
dagrun_timeout=timedelta(hours=2),
start_date=days_ago(1),schedule_interval='@once',tags=['variable']) as dag:
get_variable = PythonOperator(
task_id="get_variable",
python_callable=get_variable_fn,
provide_context=True

コードサンプル300

Amazon Managed Workflows for Apache Airflow

ユーザーガイド)

次のステップ• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。

Apache Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する
次の例では、 AWS Secrets Manager を呼び出して、Amazon Managed Workflows for Apache
Airflow で Apache Airflow 接続のシークレットキーを取得します。AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 でのステップを完了していることが前提となります。
トピック• Version• 前提条件• アクセス許可• 要件• コードサンプル• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Secrets Manager バックエンドを Apache Airflow 構成オプションとして使用する方法は、AWS
Secrets Manager シークレットを使用した Apache Airflow 接続の設定 で示されています。
次のステップ301

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 に示すように、Secrets Manager のApache Airflow 接続文字列。

アクセス許可• Secrets Manager の権限 (AWS Secrets Manager シークレットを使用した Apache Airflow 接続の設定 を参照)。

要件• このコード例を Apache Airflow v1 で使用する場合、追加の依存関係は必要ありません。このコードでは、ご使用の環境にある Apache Airflow v1 のベースインストールを使用します。
• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

コードサンプル
次の手順では、Secrets Manager を呼び出してシークレットを取得するDAGコードを作成する方法について説明します。
Apache Airflow v2
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに secrets-manager.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.

アクセス許可302

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow import DAG, settings, secrets
from airflow.operators.python import PythonOperator
from airflow.utils.dates import days_ago
from airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHookfrom datetime import timedelta
import os### The steps to create this secret key can be found at: https://
docs.aws.amazon.com/mwaa/latest/userguide/connections-secrets-manager.html
sm_secretId_name = 'airflow/connections/myconn'
default_args = {'owner': 'airflow','start_date': days_ago(1),'depends_on_past': False}### Gets the secret myconn from Secrets Manager
def read_from_aws_sm_fn(**kwargs):### set up Secrets Manager
hook = AwsBaseHook(client_type='secretsmanager')client = hook.get_client_type('secretsmanager')
response = client.get_secret_value(SecretId=sm_secretId_name)myConnSecretString = response["SecretString"]
return myConnSecretString### 'os.path.basename(__file__).replace(".py", "")' uses the file name secretsmanager.py for a DAG ID of secrets-manager
with DAG(
dag_id=os.path.basename(__file__).replace(".py", ""),
default_args=default_args,
dagrun_timeout=timedelta(hours=2),
start_date=days_ago(1),コードサンプル303

Amazon Managed Workflows for Apache Airflow

ユーザーガイドschedule_interval=None) as dag:
write_all_to_aws_sm = PythonOperator(
task_id="read_from_aws_sm",
python_callable=read_from_aws_sm_fn,
provide_context=True)

Apache Airflow v1
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに secrets-manager.py として保存します。
from airflow import DAG, settings, secrets
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
from airflow.contrib.hooks.aws_hook import AwsHookfrom datetime import timedelta
import os### The steps to create this secret key can be found at: https://
docs.aws.amazon.com/mwaa/latest/userguide/connections-secrets-manager.html
sm_secretId_name = 'airflow/connections/myconn'
default_args = {'owner': 'airflow','start_date': days_ago(1),'depends_on_past': False}### Gets the secret myconn from Secrets Manager
def read_from_aws_sm_fn(**kwargs):### set up Secrets Manager
hook = AwsHook()client = hook.get_client_type('secretsmanager')
response = client.get_secret_value(SecretId=sm_secretId_name)
コードサンプル304

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

myConnSecretString = response["SecretString"]
return myConnSecretString### 'os.path.basename(__file__).replace(".py", "")' uses the file name secretsmanager.py for a DAG ID of secrets-manager
with DAG(
dag_id=os.path.basename(__file__).replace(".py", ""),
default_args=default_args,
dagrun_timeout=timedelta(hours=2),
start_date=days_ago(1),schedule_interval=None) as dag:
write_all_to_aws_sm = PythonOperator(
task_id="read_from_aws_sm",
python_callable=read_from_aws_sm_fn,
provide_context=True)

次のステップ• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。

Oracle でのカスタムプラグインの作成
次のサンプルでは、Oracle for Amazon を使用してカスタムプラグインを作成する手順について説明
MWAAし、plugins.zip ファイル内の他のカスタムプラグインやバイナリと組み合わせることができます。
目次• Version• 前提条件• アクセス許可• 要件• コードサンプル• カスタムプラグインを作成する
次のステップ305

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 依存関係のダウンロード• カスタムプラグイン• Plugins.zip• Airflow 設定オプション• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。
• ワーカーのログ記録が、環境のログレベルが CRITICAL 以上で有効になっています。Amazon
MWAAログタイプとロググループの管理方法の詳細については、「」を参照してください。 thesection called “Airflow ログの表示”

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

要件
このページのサンプルコードを使用するには、次の依存関係を requirements.txt に追加してください。詳細については、Python 依存関係のインストール を参照してください。
Apache Airflow v2-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/
constraints-3.7.txt
cx_Oracle
Version306

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

apache-airflow-providers-oracle

Apache Airflow v1
cx_Oracle==8.1.0
apache-airflow[oracle]==1.10.12

コードサンプル
次の手順では、カスタムプラグインをテストするDAGコードを作成する方法について説明します。
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに oracle.py として保存します。
from airflow import DAG
from airflow.operators.python_operator import PythonOperator
from airflow.utils.dates import days_ago
import os
import cx_Oracle
DAG_ID = os.path.basename(__file__).replace(".py", "")def testHook(**kwargs):
cx_Oracle.init_oracle_client()
version = cx_Oracle.clientversion()
print("cx_Oracle.clientversion",version)
return version
with DAG(dag_id=DAG_ID, schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
hook_test = PythonOperator(
task_id="hook_test",
python_callable=testHook,provide_context=True)

コードサンプル

307

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

カスタムプラグインを作成する
このセクションでは、依存関係のダウンロード、カスタムプラグインと plugins.zip の作成方法について説明します。

依存関係のダウンロード
Amazon MWAA は、各 Amazon スMWAAケジューラとワーカーコンテナ/usr/local/airflow/
pluginsの plugins.zip の内容を に抽出します。これはバイナリを環境に追加するために使用されます。次のステップでは、カスタムプラグインに必要なファイルを組み立てる方法について説明します。
Amazon Linux コンテナイメージをプルする
1.

コマンドプロンプトで Amazon Linux コンテナイメージを取得し、コンテナをローカルで実行します。例:
docker pull amazonlinux
docker run -it amazonlinux:latest /bin/bash

コマンドプロンプトで bash コマンドラインを呼び出す必要があります。例:
bash-4.2#

2.

Linux ネイティブの非同期 I/O 機能 (libaio) をインストールします。
yum -y install libaio

3.

以降の手順では、このウィンドウを開いたままにしておいてください。次のファイルをローカルにコピーします: lib64/libaio.so.1、lib64/libaio.so.1.0.0、lib64/
libaio.so.1.0.1。

クライアントフォルダをダウンロード
1.

unzip パッケージをローカルにインストールします。例:
sudo yum install unzip

2.

oracle_plugin ディレクトリの作成 例:

カスタムプラグインを作成する

308

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

mkdir oracle_plugin
cd oracle_plugin

3.

次の curl コマンドを使用して、Linux instantclient-basic-linuxx86-64 (64 ビット) 用の Oracle
Instant Client Downloads から .x64-18.5.0.0.0dbru.zip をダウンロードします。 https://www.oracle.com/database/technologies/instant-client/linux-x86-64-downloads.html
curl https://download.oracle.com/otn_software/linux/instantclient/185000/
instantclient-basic-linux.x64-18.5.0.0.0dbru.zip > client.zip

4.

client.zip ファイルを解凍します。例:
unzip *.zip

Docker からファイルを抽出します。
1.

新しいコマンドプロンプトで、Docker コンテナ ID を表示して書き留めます。例:
docker container ls

コマンドプロンプトは、すべてのコンテナとその を返しますIDs。例:
debc16fd6970

2.

oracle_plugin ディレクトリで、lib64/libaio.so.1、lib64/
libaio.so.1.0.0、lib64/libaio.so.1.0.1 ファイルをローカル instantclient_18_5
フォルダに抽出してください。例:
docker cp debc16fd6970:/lib64/libaio.so.1 instantclient_18_5/
docker cp debc16fd6970:/lib64/libaio.so.1.0.0 instantclient_18_5/
docker cp debc16fd6970:/lib64/libaio.so.1.0.1 instantclient_18_5/

カスタムプラグイン
Apache Airflow は、起動時にプラグインフォルダにある Python ファイルの内容を実行します。これは環境変数の設定と変更に使用されます。次のステップでは、カスタムプラグインのサンプルコードを説明します。
カスタムプラグインを作成する

309

Amazon Managed Workflows for Apache Airflow•

ユーザーガイド

以下のコードサンプルの内容をコピーし、ローカルに env_var_plugin_oracle.py として保存します。
from airflow.plugins_manager import AirflowPlugin
import osos.environ["LD_LIBRARY_PATH"]='/usr/local/airflow/plugins/instantclient_18_5'
os.environ["DPI_DEBUG_LEVEL"]="64"class EnvVarPlugin(AirflowPlugin):name = 'env_var_plugin'

Plugins.zip
以下のステップは、plugins.zip を作成する方法を示しています。この例の内容は、他のプラグインやバイナリと組み合わせて 1 つの plugins.zip ファイルにすることができます。
プラグインディレクトリの中身を Zip 圧縮する
1.

コマンドプロンプトで、oracle_plugin ディレクトリに移動します。例:
cd oracle_plugin

2.

instantclient_18_5 ディレクトリを plugins.zip に圧縮します。例:zip -r ../plugins.zip ./3.

コマンドプロンプトに次のように表示されるはずです。
oracle_plugin$ lsclient.zip instantclient_18_5

4.

client.zip ファイルを削除します。例:
rm client.zip

env_var_plugin_oracle.py ファイルを圧縮します。
1.

plugins.zip のルートに env_var_plugin_oracle.py ファイルを追加します。例:

カスタムプラグインを作成する

310

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

zip plugins.zip env_var_plugin_oracle.py2.

これで、plugins.zip に次のものが含まれている必要があります。
env_var_plugin_oracle.py
instantclient_18_5/

Airflow 設定オプション
Apache Airflow v2 を使用している場合、core.lazy_load_plugins : False を Apache Airflowの構成オプションとして追加してください。詳細については、「2 の設定オプションによるプラグイ
ンの読み込み」を参照してください。

次のステップ• この例の requirements.txt ファイルを Amazon S3 バケットにアップロードする方法について
詳しくは、Python 依存関係のインストール をご覧ください。
• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。
• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、カスタムプラグインのインストール をご覧ください。

ランタイム環境変数を生成するカスタムプラグインを作成します
次の例では、Amazon Managed Workflows for Apache Airflow 環境でランタイムに環境変数を生成す
るカスタムプラグインを作成する手順を説明します。
トピック• バージョン
• 前提条件• 許可• 要件• カスタムプラグイン• Plugins.zip
Airflow 設定オプション

311

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Airflow 設定オプション• 次のステップ

バージョン• このページのサンプルコードは「Python 3.7」の Apache Airflow v1 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• 「Amazon MWAA 環境」。

許可
• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

要件• このコード例を Apache Airflow v1 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある「Apache Airflow v1 のベースインストール」を使用します。

カスタムプラグイン
Apache Airflow は、起動時にプラグインフォルダにある Python ファイルの内容を実行します。これは環境変数の設定と変更に使用されます。次のステップでは、カスタムプラグインのサンプルコードを説明します。
1.

コマンドプロンプトで、プラグインが保存されているディレクトリに移動します。例:
cd plugins

2.

以下のコードサンプルの内容をコピーし、ローカルに env_var_plugin.py として保存する。
としてローカルに保存します。
from airflow.plugins_manager import AirflowPlugin

バージョン

312

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

import osos.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/.local/lib/python3.7/
site-packages"
os.environ["JAVA_HOME"]="/usr/lib/jvm/java-1.8.0openjdk-1.8.0.272.b10-1.amzn2.0.1.x86_64"
class EnvVarPlugin(AirflowPlugin):name = 'env_var_plugin'

Plugins.zip
以下のステップは、plugins.zip を作成する方法を示しています。この例の内容は、他のプラグインやバイナリと組み合わせて 1 つの plugins.zip のファイルにすることができます。
1.

コマンドプロンプトで、前のステップの hive_plugin ディレクトリに移動します。例:
cd plugins

2.

plugins フォルダ内のコンテンツを圧縮します。
zip -r ../plugins.zip ./Airflow 設定オプション
Apache Airflow v2 を使用している場合、core.lazy_load_plugins : False を Apache Airflowの構成オプションとして追加してください。詳細については、「2 の設定オプションによるプラグイ
ンの読み込み」を参照してください。

次のステップ• この例の requirements.txt ファイルを Amazon S3 バケットにアップロードする方法について
詳しくは、「Python 依存関係のインストール」をご覧ください。
• この例の DAG コードを Amazon S3 バケットの dags フォルダにアップロードする方法について
は、「DAG の追加と更新」を参照してください。
• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、「カスタムプラグインのインストール」をご覧ください。
Plugins.zip

313

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon での DAGのタイムゾーンの変更 MWAA
Apache Airflow は、デフォルトで有向非巡回グラフ (DAG) を UTC+0 でスケジュールします。次の手順は、Amazon が Pendulum DAGsで MWAAを実行するタイムゾーンを変更する方法を示しています。このトピックでは、任意で、環境の Apache Airflow ログのタイムゾーンを変更するカスタム
プラグインを作成する方法を示します。
トピック• Version• 前提条件• アクセス許可• Airflow ログのタイムゾーンを変更するプラグインを作成する• plugins.zip の作成• コードサンプル• 次のステップ

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

Airflow ログのタイムゾーンを変更するプラグインを作成する
Apache Airflow は、起動時に plugins ディレクトリ内の Python ファイルを実行します。次のプラグインを使用すると、エグゼキューターのタイムゾーンをオーバーライドできます。これにより、Apache Airflow がログを書き込むタイムゾーンが変更されます。
DAGのタイムゾーンの変更

314

Amazon Managed Workflows for Apache Airflow

1.

ユーザーガイド

カスタムプラグイン用に plugins という名前のディレクトリを作成し、そのディレクトリに移動します。例:$ mkdir plugins$ cd plugins

2.

以下のコードサンプルの内容をコピーし、ローカルに dag-timezone-plugin.py として
plugins フォルダに保存します。
import time
import osos.environ['TZ'] = 'America/Los_Angeles'
time.tzset()3.

plugins ディレクトリに、__init__.py という名前の空の Python ファイルを作成します。plugins ディレクトリは以下のようになっているはずです。
plugins/|-- __init__.py|-- dag-timezone-plugin.py

plugins.zip の作成
以下のステップは、plugins.zip を作成する方法を示しています。この例の内容は、他のプラグインやバイナリと組み合わせて 1 つの plugins.zip ファイルにすることができます。
1.

コマンドプロンプトで、前の手順で作成した plugins ディレクトリに移動してください。例:
cd plugins

2.

plugins ディレクトリ内のコンテンツを圧縮します。
zip -r ../plugins.zip ./3.

plugins.zip を S3 バケットにアップロードします$ aws s3 cp plugins.zip s3://your-mwaa-bucket/

plugins.zip の作成

315

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプルがDAG実行されるデフォルトのタイムゾーン (UTC+0) を変更するには、タイムゾーン対応の日時を操作するための Python ライブラリである Pendulum というライブラリを使用します。
1.

コマンドプロンプトで、 DAGsが保存されているディレクトリに移動します。例:$ cd dags2.

以下の例の内容をコピーして、tz-aware-dag.py として保存してください。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta# Import the Pendulum library.
import pendulum# Instantiate Pendulum and set your timezone.
local_tz = pendulum.timezone("America/Los_Angeles")with DAG(
dag_id = "tz_test",
schedule_interval="0 12 * * *",catchup=False,start_date=datetime(2022, 1, 1, tzinfo=local_tz)) as dag:
bash_operator_task = BashOperator(
task_id="tz_aware_task",
dag=dag,bash_command="date")

3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。
$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

成功すると、 の のタスクログtz_aware_taskに次のような出力が表示されますtz_testDAG。

コードサンプル316

Amazon Managed Workflows for Apache Airflow

ユーザーガイド[2022-08-01, 12:00:00 PDT] {{subprocess.py:74}} INFO - Running command: ['bash', 'c', 'date'][2022-08-01, 12:00:00 PDT] {{subprocess.py:85}} INFO - Output:[2022-08-01, 12:00:00 PDT] {{subprocess.py:89}} INFO - Mon Aug 1 12:00:00 PDT 2022
[2022-08-01, 12:00:00 PDT] {{subprocess.py:93}} INFO - Command exited with returncode 0[2022-08-01, 12:00:00 PDT] {{taskinstance.py:1280}} INFO - Marking task as
SUCCESS. dag_id=tz_test, task_id=tz_aware_task, execution_date=20220801T190033,
start_date=20220801T190035, end_date=20220801T190035[2022-08-01, 12:00:00 PDT] {{local_task_job.py:154}} INFO - Task exited with returncode 0[2022-08-01, 12:00:00 PDT] {{local_task_job.py:264}} INFO - 0 downstream tasks
scheduled from follow-on schedule check

次のステップ• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、カスタムプラグインのインストール をご覧ください。

CodeArtifact トークンの更新
CodeArtifact を使用して Python 依存関係をインストールする場合、Amazon にはアクティブなトー
クンMWAAが必要です。Amazon MWAAが実行時に CodeArtifact リポジトリにアクセスできるようにするには、スタートアップスクリプトを使用して、トークンPIP_EXTRA_INDEX_URLで を設定できます。
次のトピックでは、 get_authorization_token CodeArtifact APIオペレーションを使用して、環境が起動または更新されるたびに新しいトークンを取得する起動スクリプトを作成する方法について説明します。
トピック• Version• 前提条件• アクセス許可• コードサンプル• 次のステップ
次のステップ317

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。
• 環境の依存関係を保存するCodeArtifact リポジトリ。

アクセス許可CodeArtifact トークンを更新して Amazon S3 に結果を書き込むには、実行ロールに次のアクセス許可MWAAが必要です。
• codeartifact:GetAuthorizationToken アクションにより、Amazon は から新しいトークンを取得MWAAできます CodeArtifact。次のポリシーは、作成するすべての CodeArtifact ドメインにアクセス許可を付与します。ステートメントのリソース値を変更し、環境からアクセスさせたいド
メインのみを指定することで、ドメインへのアクセスをさらに制限できます。
{"Effect": "Allow","Action": "codeartifact:GetAuthorizationToken","Resource": "arn:aws:codeartifact:us-west-2:*:domain/*"}• sts:GetServiceBearerToken アクションは、 GetAuthorizationTokenAPIオペレー
ションを CodeArtifact呼び出すために必要です。このオペレーションは、 pipで などのパッケージマネージャーを使用するときに使用する必要があるトークンを返します CodeArtifact。
CodeArtifact リポジトリでパッケージマネージャーを使用するには、次のポリシーステートメン
トsts:GetServiceBearerTokenに示すように、環境の実行ロールロールで を許可する必要があります。
{"Sid": "AllowServiceBearerToken","Effect": "Allow","Action": "sts:GetServiceBearerToken",
Version318

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Resource": "*"}コードサンプル
次の手順では、 CodeArtifact トークンを更新する起動スクリプトを作成する方法について説明します。
1.

以下のコードサンプルの内容をコピーし、ローカルに code_artifact_startup_script.shとして保存します。
#!/bin/sh# Startup script for MWAA, see https://docs.aws.amazon.com/mwaa/latest/userguide/using-startup-script.html
set -eu# setup code artifact endpoint and token# https://pip.pypa.io/en/stable/cli/pip_install/#cmdoption-0# https://docs.aws.amazon.com/mwaa/latest/userguide/samples-code-artifact.html
DOMAIN="amazon"
DOMAIN_OWNER="112233445566"
REGION="us-west-2"
REPO_NAME="MyRepo"
echo "Getting token for CodeArtifact with args: --domain $DOMAIN --region $REGION--domain-owner $DOMAIN_OWNER"TOKEN=$(aws codeartifact get-authorization-token --domain $DOMAIN --region $REGION--domain-owner $DOMAIN_OWNER | jq -r '.authorizationToken')echo "Setting Pip env var for '--index-url' to point to CodeArtifact"
export PIP_EXTRA_INDEX_URL="https://aws:$TOKEN@$DOMAIN$DOMAIN_OWNER.d.codeartifact.$REGION.amazonaws.com/pypi/$REPO_NAME/simple/"echo "CodeArtifact startup setup complete"2.

スクリプトを保存したフォルダに移動します。新しいプロンプトウィンドウで cp を使用して、スクリプトをバケットにアップロードします。置換 your-s3-bucket 情報を入力します。
$ aws s3 cp code_artifact_startup_script.sh s3://your-s3-bucket/
code_artifact_startup_script.sh

成功すると、Amazon S3 は オブジェクトへのURLパスを出力します。
コードサンプル319

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

upload: ./code_artifact_startup_script.sh to s3://your-s3-bucket/
code_artifact_startup_script.sh

スクリプトをアップロードすると、環境が更新され、起動時にスクリプトが実行されます。

次のステップ• スタートアップスクリプトを使用して環境をカスタマイズする方法については、the section called“スタートアップスクリプトの使用” を参照してください。
• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。
• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、カスタムプラグインのインストール をご覧ください。

Apache Hive と Hadoop を使ったカスタムプラグインの作成
Amazon は の内容を plugins.zipにMWAA抽出します/usr/local/airflow/plugins。これを使用して、コンテナにバイナリを追加できます。さらに、Apache Airflow は起動時に plugins フォ
ルダ内の Python ファイルの内容を実行するため、環境変数を設定および変更できます。以下のサンプルでは、Amazon Managed Workflows for Apache Airflow 環境で Apache Hive と Hadoop を使用してカスタムプラグインを作成する手順を説明し、他のカスタムプラグインやバイナリと組み合わせることができます。
トピック• Version• 前提条件• アクセス許可• 要件• 依存関係のダウンロード• カスタムプラグイン• Plugins.zip• コードサンプル• Airflow 設定オプション
次のステップ320

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。

要件
このページのサンプルコードを使用するには、次の依存関係を requirements.txt に追加してください。詳細については、「Python 依存関係のインストール」を参照してください。
Apache Airflow v2-c https://raw.githubusercontent.com/apache/airflow/constraints-2.0.2/
constraints-3.7.txt
apache-airflow-providers-amazon[apache.hive]

Apache Airflow v1
apache-airflow[hive]==1.10.12

Version321

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

依存関係のダウンロード
Amazon MWAA は、各 Amazon スMWAAケジューラとワーカーコンテナ/usr/local/airflow/
pluginsの plugins.zip の内容を に抽出します。これはバイナリを環境に追加するために使用されます。次のステップでは、カスタムプラグインに必要なファイルを組み立てる方法について説明します。
1.

コマンドプロンプトで、プラグインを作成したいディレクトリに移動します。例:
cd plugins

2.

ミラーから Hadoop をダウンロードします。例えば:
wget https://downloads.apache.org/hadoop/common/hadoop-3.3.0/hadoop-3.3.0.tar.gz

3.

ミラーから Hive をダウンロードします。例えば:
wget https://downloads.apache.org/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

4.

ディレクトリを作成します。例:
mkdir hive_plugin

5.

Hadoop を抽出します。
tar -xvzf hadoop-3.3.0.tar.gz -C hive_plugin

6.

Hive を抽出します。
tar -xvzf apache-hive-3.1.2-bin.tar.gz -C hive_plugin

カスタムプラグイン
Apache Airflow は、起動時にプラグインフォルダにある Python ファイルの内容を実行します。これは環境変数の設定と変更に使用されます。次のステップでは、カスタムプラグインのサンプルコードを説明します。
1.

コマンドプロンプトで、hive_plugin ディレクトリに移動します。例:

依存関係のダウンロード

322

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

cd hive_plugin2.

次のコードサンプルの内容をコピーし、同じ hive_plugin ディレクトリ
で、hive_plugin.py と名前を付けてローカルに保存します。
from airflow.plugins_manager import AirflowPlugin
import osos.environ["JAVA_HOME"]="/usr/lib/jvm/jre"os.environ["HADOOP_HOME"]='/usr/local/airflow/plugins/hadoop-3.3.0'
os.environ["HADOOP_CONF_DIR"]='/usr/local/airflow/plugins/hadoop-3.3.0/etc/hadoop'os.environ["HIVE_HOME"]='/usr/local/airflow/plugins/apache-hive-3.1.2-bin'
os.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/plugins/
hadoop-3.3.0:/usr/local/airflow/plugins/apache-hive-3.1.2-bin/bin:/usr/local/
airflow/plugins/apache-hive-3.1.2-bin/lib"
os.environ["CLASSPATH"] = os.getenv("CLASSPATH") + ":/usr/local/airflow/plugins/apache-hive-3.1.2-bin/lib"class EnvVarPlugin(AirflowPlugin):name = 'hive_plugin'3.

次のテキストの内容をコピーし、hive_plugin ディレクトリに .airflowignore としてローカルに保存します。
hadoop-3.3.0
apache-hive-3.1.2-bin

Plugins.zip
以下のステップは、plugins.zip を作成する方法を示しています。この例の内容は、他のプラグインやバイナリと組み合わせて 1 つの plugins.zip のファイルにすることができます。
1.

コマンドプロンプトで、前のステップの hive_plugin ディレクトリに移動します。例:
cd hive_plugin

2.

plugins フォルダ内のコンテンツを圧縮します。
zip -r ../hive_plugin.zip ./Plugins.zip

323

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプル
次の手順では、カスタムプラグインをテストするDAGコードを作成する方法について説明します。
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに hive.py として保存します。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
with DAG(dag_id="hive_test_dag", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
hive_test = BashOperator(
task_id="hive_test",
bash_command='hive --help')

Airflow 設定オプション
Apache Airflow v2 を使用している場合、core.lazy_load_plugins : False を Apache Airflowの構成オプションとして追加してください。詳細については、「2 の設定オプションによるプラグイ
ンの読み込み」を参照してください。

次のステップ• この例の requirements.txt ファイルを Amazon S3 バケットにアップロードする方法について
詳しくは、Python 依存関係のインストール をご覧ください。
• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。
• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、カスタムプラグインのインストール をご覧ください。

コードサンプル324

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow 用のカスタムプラグインの作成
PythonVirtualenvOperator
次のサンプルは、Amazon Managed Workflows for Apache Airflow でカスタムプラグイン
PythonVirtualenvOperator を使用して Apache Airflow にパッチを適用する方法を示しています。
トピック• Version• 前提条件• アクセス許可• 要件• カスタムプラグインのサンプルコード• Plugins.zip• コードサンプル• Airflow 設定オプション• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。

アクセス許可• このページのコード例を使用する場合、追加のアクセス許可は必要ありません。
パッチするカスタムプラグイン PythonVirtualenvOperator

325

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

要件
このページのサンプルコードを使用するには、次の依存関係を requirements.txt に追加してください。詳細については、「Python 依存関係のインストール」を参照してください。
virtualenv

カスタムプラグインのサンプルコード
Apache Airflow は、起動時にプラグインフォルダにある Python ファイルの内容を実行します。このプラグインは、起動プロセスPythonVirtualenvOperator中に組み込み にパッチを適用して、Amazon と互換性を持たせますMWAA。次のステップは、カスタムプラグインのサンプルコー
ドが 示しています。
Apache Airflow v2
1.

コマンドラインプロンプトで、plugins ディレクトリに移動します。例:
cd plugins

2.

以下のコードサンプルの内容をコピーし、ローカルに virtual_python_plugin.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow.plugins_manager import AirflowPlugin
import airflow.utils.python_virtualenv

要件

326

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom typing import List
def _generate_virtualenv_cmd(tmp_dir: str, python_bin: str,
system_site_packages: bool) -> List[str]:
cmd = ['python3','/usr/local/airflow/.local/lib/python3.7/site-packages/
virtualenv', tmp_dir]
if system_site_packages:
cmd.append('--system-site-packages')
if python_bin is not None:
cmd.append(f'--python={python_bin}')return cmd
airflow.utils.python_virtualenv._generate_virtualenv_cmd=_generate_virtualenv_cmd
class VirtualPythonPlugin(AirflowPlugin):name = 'virtual_python_plugin'Apache Airflow v1
1.

コマンドラインプロンプトで、plugins ディレクトリに移動します。例:
cd plugins

2.

以下のコードサンプルの内容をコピーし、ローカルに virtual_python_plugin.py として保存します。
from airflow.plugins_manager import AirflowPlugin
from airflow.operators.python_operator import PythonVirtualenvOperator
def _generate_virtualenv_cmd(self, tmp_dir):
cmd = ['python3','/usr/local/airflow/.local/lib/python3.7/site-packages/
virtualenv', tmp_dir]
if self.system_site_packages:
cmd.append('--system-site-packages')
if self.python_version is not None:
cmd.append('--python=python{}'.format(self.python_version))
return cmd
PythonVirtualenvOperator._generate_virtualenv_cmd=_generate_virtualenv_cmd
class EnvVarPlugin(AirflowPlugin):name = 'virtual_python_plugin'カスタムプラグインのサンプルコード

327

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Plugins.zip
以下のステップは、plugins.zip を作成する方法を示しています。
1.

コマンドプロンプトで、上記の virtual_python_plugin.py が含まれるディレクトリに移動してください。例:
cd plugins

2.

plugins フォルダ内のコンテンツを圧縮します。
zip plugins.zip virtual_python_plugin.py

コードサンプル
次の手順では、カスタムプラグインのDAGコードを作成する方法について説明します。
Apache Airflow v2
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに virtualenv_test.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Plugins.zip

328

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"""from airflow import DAG
from airflow.operators.python import PythonVirtualenvOperator
from airflow.utils.dates import days_ago
import osos.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/.local/bin"def virtualenv_fn():import boto3
print("boto3 version ",boto3.__version__)with DAG(dag_id="virtualenv_test", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:virtualenv_task = PythonVirtualenvOperator(
task_id="virtualenv_task",
python_callable=virtualenv_fn,
requirements=["boto3>=1.17.43"],
system_site_packages=False,
dag=dag,)

Apache Airflow v1
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに virtualenv_test.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR

コードサンプル329

Amazon Managed Workflows for Apache Airflow

ユーザーガイドIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow import DAG
from airflow.operators.python_operator import PythonVirtualenvOperator
from airflow.utils.dates import days_ago
import osos.environ["PATH"] = os.getenv("PATH") + ":/usr/local/airflow/.local/bin"def virtualenv_fn():import boto3
print("boto3 version ",boto3.__version__)with DAG(dag_id="virtualenv_test", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:virtualenv_task = PythonVirtualenvOperator(
task_id="virtualenv_task",
python_callable=virtualenv_fn,
requirements=["boto3>=1.17.43"],
system_site_packages=False,
dag=dag,)

Airflow 設定オプション
Apache Airflow v2 を使用している場合、core.lazy_load_plugins : False を Apache Airflowの構成オプションとして追加してください。詳細については、「2 の設定オプションによるプラグイ
ンの読み込み」を参照してください。

次のステップ• この例の requirements.txt ファイルを Amazon S3 バケットにアップロードする方法について
詳しくは、Python 依存関係のインストール をご覧ください。
• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。

Airflow 設定オプション

330

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• この例の plugins.zip ファイルを Amazon S3 バケットにアップロードする方法について詳しくは、カスタムプラグインのインストール をご覧ください。

Lambda 関数DAGsを使用した呼び出し
次のコード例では、 AWS Lambda関数を使用して Apache Airflow CLIトークンを取得し、Amazon
MWAA環境で有向非巡回グラフ (DAG) を呼び出します。
トピック• Version• 前提条件• アクセス許可• 依存関係• コード例

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
コードサンプルを使用するには、以下が必要です。
• Amazon 環境 のパブリックネットワークアクセスモードを使用します。 MWAA
• 最新の Python ランタイムを使用する Lambda 関数を用意してください。

Note
Lambda 関数と Amazon MWAA環境が同じ にある場合はVPC、プライベートネットワーク
でこのコードを使用できます。この設定では、Lambda 関数の実行ロールに Amazon Elastic
Compute Cloud (Amazon EC2) CreateNetworkInterfaceAPIオペレーションを呼び出すアクセス許可が必要です。このアクセス許可は、 AWSLambdaVPCAccessExecutionRole AWS
マネージドポリシーを使用して指定できます。

Lambda DAGsを使用した呼び出し

331

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アクセス許可このページのコード例を使用するには、Amazon MWAA環境の実行ロールに
airflow:CreateCliTokenアクションを実行するためのアクセスが必要です。このアクセス許可
は、 AmazonMWAAAirflowCliAccess AWS 管理ポリシーを使用して付与できます。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["airflow:CreateCliToken"],"Resource": "*"}]}詳細については、「Apache Airflow CLIポリシー: AmazonMWAAAirflowCliAccess」を参照してくだ
さい。

依存関係
• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

コード例
1.

で AWS Lambda コンソールを開きますhttps://console.aws.amazon.com/lambda/。

2.

関数リストから Lambda 関数を選択します。

3.

関数ページで次のコードをコピーし、以下をリソース名に置き換えます。
• YOUR_ENVIRONMENT_NAME – Amazon MWAA環境の名前。
• YOUR_DAG_NAME – DAG呼び出す の名前。

import boto3
import http.client
アクセス許可332

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

import base64
import ast
mwaa_env_name = 'YOUR_ENVIRONMENT_NAME'
dag_name = 'YOUR_DAG_NAME'
mwaa_cli_command = 'dags trigger'
client = boto3.client('mwaa')
def lambda_handler(event, context):# get web token
mwaa_cli_token = client.create_cli_token(
Name=mwaa_env_name)conn = http.client.HTTPSConnection(mwaa_cli_token['WebServerHostname'])payload = mwaa_cli_command + " " + dag_nameheaders = {'Authorization': 'Bearer ' + mwaa_cli_token['CliToken'],'Content-Type': 'text/plain'}conn.request("POST", "/aws_mwaa/cli", payload, headers)
res = conn.getresponse()
data = res.read()
dict_str = data.decode("UTF-8")
mydata = ast.literal_eval(dict_str)
return base64.b64decode(mydata['stdout'])

4.

[デプロイ] を選択します。

5.

[テスト] を選択し、Lambda コンソールを使用して関数を呼び出します。

6.

Lambda が を正常に呼び出したことを確認するにはDAG、Amazon MWAAコンソールを使用して環境の Apache Airflow UI に移動し、次の操作を行います。
a.

DAGs ページで、 のリストDAGで新しいターゲットを見つけますDAGs。

b.

「最終実行」で、最新のDAG実行のタイムスタンプを確認します。このタイムスタンプ
は、他の環境における invoke_dag の最新のタイムスタンプとほぼ一致する必要がありま
す。

c.

コード例

[最近のタスク] で、前回の実行が成功したことを確認します。

333

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

異なる Amazon MWAA環境でDAGsの呼び出し
次のコード例では、Apache Airflow CLIトークンを作成します。次に、コードは 1 つの Amazon
MWAA環境で有向非巡回グラフ (DAG) を使用して、別の Amazon MWAA環境で を呼び出しDAGます。
トピック• Version• 前提条件• アクセス許可• 依存関係• コード例

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのコード例を使用するには、以下のものが必要である：• 現在のMWAA環境を含む、パブリックネットワークウェブサーバーにアクセスできる 2 つのAmazon 環境。
• ターゲット環境の Amazon Simple Storage Service (Amazon S3) バケットにアップロードDAGされたサンプル。

アクセス許可このページのコード例を使用するには、環境の実行ロールに Apache Airflow CLIトークンを作成する
アクセス許可が必要です。 AWS 管理ポリシーをアタッチAmazonMWAAAirflowCliAccessして、
このアクセス許可を付与できます。
{"Version": "2012-10-17","Statement": [DAGs 異なる環境での呼び出し

334

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Effect": "Allow","Action": ["airflow:CreateCliToken"],"Resource": "*"}]詳細については、「Apache Airflow CLIポリシー: AmazonMWAAAirflowCliAccess」を参照してくだ
さい。

依存関係
• このコード例を Apache Airflow v2 で使用する場合、追加の依存関係は必要ありません。このコードでは、お使いの環境にある Apache Airflow v2 のベースインストールを使用します。

コード例
次のコード例では、現在の環境で を使用して別の環境で を呼び出すことを前提DAGとDAGしています。
1.

ターミナルで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

次のコード例の内容をコピーし、invoke_dag.py という名前でローカルに保存します。以下の値をお客様の情報に置き換えます。
• your-new-environment-name – を呼び出す他の環境の名前DAG。
• your-target-dag-id - 呼び出す他の環境DAGの の ID。

from airflow.decorators import dag, task
import boto3
from datetime import datetime, timedelta
import os, requests
DAG_ID = os.path.basename(__file__).replace(".py", "")@task()
依存関係

335

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

def invoke_dag_task(**kwargs):
client = boto3.client('mwaa')
token = client.create_cli_token(Name='your-new-environment-name')url = f"https://{token['WebServerHostname']}/aws_mwaa/cli"
body = 'dags trigger your-target-dag-id'
headers = {'Authorization' : 'Bearer ' + token['CliToken'],'Content-Type': 'text/plain'}requests.post(url, data=body, headers=headers)@dag(
dag_id=DAG_ID,
schedule_interval=None,start_date=datetime(2022, 1, 1),
dagrun_timeout=timedelta(minutes=60),
catchup=False)
def invoke_dag():t = invoke_dag_task()
invoke_dag_test = invoke_dag()

3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。
$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

が正常にDAG実行されると、 のタスクログに次のような出力が表示されますinvoke_dag_task。
[2022-01-01, 12:00:00 PDT] {{python.py:152}} INFO - Done. Returned value was: None[2022-01-01, 12:00:00 PDT] {{taskinstance.py:1280}} INFO - Marking task as SUCCESS.
dag_id=invoke_dag, task_id=invoke_dag_task, execution_date=20220101T120000,
start_date=20220101T120000, end_date=20220101T120000[2022-01-01, 12:00:00 PDT] {{local_task_job.py:154}} INFO - Task exited with returncode 0[2022-01-01, 12:00:00 PDT] {{local_task_job.py:264}} INFO - 0 downstream tasks
scheduled from follow-on schedule check

DAG が正常に呼び出されたことを確認するには、新しい環境の Apache Airflow UI に移動し、次の手順を実行します。
コード例

336

Amazon Managed Workflows for Apache Airflow

ユーザーガイドa.

DAGs ページで、 のリストDAGで新しいターゲットを見つけますDAGs。

b.

「最終実行」で、最新のDAG実行のタイムスタンプを確認します。このタイムスタンプ
は、他の環境における invoke_dag の最新のタイムスタンプとほぼ一致する必要があります。

c.

[最近のタスク] で、前回の実行が成功したことを確認します。

Amazon RDS for Microsoft SQL Server MWAAでの Amazon の使用
Amazon Managed Workflows for Apache Airflow を使用して、 for RDS SQL Server に接続できます。次のサンプルコードではDAGs、Amazon Managed Workflows for Apache Airflow 環境で を使用
して、Amazon RDS for Microsoft SQL Server に接続してクエリを実行します。
トピック• Version• 前提条件• 依存関係• Apache Airflow v2 接続• コードサンプル• 次のステップ

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。
• Amazon MWAAと RDS for SQL Server が同じ Amazon VPC/ で実行されている• VPC Amazon MWAAとサーバーの セキュリティグループは、次の接続で設定されます。

Amazon RDS サーバー337

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon のセキュリティグループRDSで Amazon 用に1433開いているポートMWAAのインバウ
ンドルール• または、Amazon から MWAAへの1433オープンポートのアウトバウンドルール RDS• for SQL Server RDSの Apache Airflow Connection には、前のプロセスで作成した Amazon
RDSSQLサーバーデータベースのホスト名、ポート、ユーザー名、パスワードが反映されます。

依存関係
このセクションのサンプルコードを使用するには、requirements.txt に次の依存関係を追加します。詳細については、「Python 依存関係のインストール」を参照してください。
Apache Airflow v2
apache-airflow-providers-microsoft-mssql==1.0.1
apache-airflow-providers-odbc==1.0.1
pymssql==2.2.1

Apache Airflow v1
apache-airflow[mssql]==1.10.12

Apache Airflow v2 接続
Apache Airflow v2 の接続を使用している場合は、Airflow 接続オブジェクトに次のキーと値のペアが含まれていることを確認してください。
1.

接続 ID: mssql_default

2.

接続タイプ: Amazon Web Services

3.

ホスト: YOUR_DB_HOST

4.

スキーマ：

5.

ログイン:管理者

6.

パスワード:

7.

ポート: 1433

8.

エキストラ:

依存関係

338

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプル
1.

コマンドプロンプトで、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

以下のコードサンプルの内容をコピーし、ローカルに sql-server.py として保存します。
"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
import pymssql
import logging
import sys
from airflow import DAG
from datetime import datetime
from airflow.operators.mssql_operator import MsSqlOperator
from airflow.operators.python_operator import PythonOperator
default_args = {'owner': 'aws','depends_on_past': False,'start_date': datetime(2019, 2, 20),
'provide_context': True}dag = DAG(
'mssql_conn_example', default_args=default_args, schedule_interval=None)
drop_db = MsSqlOperator(
task_id="drop_db",
sql="DROP DATABASE IF EXISTS testdb;",

コードサンプル339

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

mssql_conn_id="mssql_default",
autocommit=True,
dag=dag)create_db = MsSqlOperator(
task_id="create_db",
sql="create database testdb;",
mssql_conn_id="mssql_default",
autocommit=True,
dag=dag)create_table = MsSqlOperator(
task_id="create_table",sql="CREATE TABLE testdb.dbo.pet (name VARCHAR(20), owner VARCHAR(20));",
mssql_conn_id="mssql_default",
autocommit=True,
dag=dag)
insert_into_table = MsSqlOperator(
task_id="insert_into_table",sql="INSERT INTO testdb.dbo.pet VALUES ('Olaf', 'Disney');",
mssql_conn_id="mssql_default",
autocommit=True,
dag=dag)def select_pet(**kwargs):
try:conn = pymssql.connect(server='sampledb.<xxxxxx>.<region>.rds.amazonaws.com',
user='admin',password='<yoursupersecretpassword>',database='testdb')# Create a cursor from the connection
cursor = conn.cursor()
cursor.execute("SELECT * from testdb.dbo.pet")row = cursor.fetchone()
if row:

コードサンプル

340

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

print(row)except:logging.error("Error when creating pymssql database connection: %s",
sys.exc_info()[0])select_query = PythonOperator(
task_id='select_query',python_callable=select_pet,
dag=dag,)
drop_db >> create_db >> create_table >> insert_into_table >> select_query

次のステップ• この例の requirements.txt ファイルを Amazon S3 バケットにアップロードする方法について
詳しくは、Python 依存関係のインストール をご覧ください。
• この例のDAGコードを の Amazon S3 バケットの dagsフォルダにアップロードする方法について説明しますDAG の追加と更新。
• サンプルスクリプトやその他の pymssql モジュールの例を参照してください。
• Apache Airflow リファレンスガイドの mssql_operator を使用して特定の Microsoft SQL データ
ベースでSQLコードを実行する方法の詳細については、「」を参照してください。

Amazon MWAA と Amazon EMR を併用する
以下のコード・サンプルは、Amazon EMR と Amazon Managed Workflows for Apache Airflow を使用して統合を有効にする方法を示しています。
トピック• バージョン
• コードサンプルバージョン• このページのサンプルコードは「Python 3.7」の Apache Airflow v1 で使用できます。

次のステップ341

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

コードサンプル"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow import DAG
from airflow.contrib.operators.emr_add_steps_operator import EmrAddStepsOperator
from airflow.contrib.operators.emr_create_job_flow_operator import
EmrCreateJobFlowOperator
from airflow.contrib.sensors.emr_step_sensor import EmrStepSensor
from airflow.utils.dates import days_ago
from datetime import timedelta
import os
DAG_ID = os.path.basename(__file__).replace(".py", "")DEFAULT_ARGS = {'owner': 'airflow','depends_on_past': False,'email': ['airflow@example.com'],'email_on_failure': False,'email_on_retry': False,}
SPARK_STEPS = [{'Name': 'calculate_pi','ActionOnFailure': 'CONTINUE',

コードサンプル342

Amazon Managed Workflows for Apache Airflow

ユーザーガイド'HadoopJarStep': {'Jar': 'command-runner.jar','Args': ['/usr/lib/spark/bin/run-example', 'SparkPi', '10'],},}]
JOB_FLOW_OVERRIDES = {'Name': 'my-demo-cluster','ReleaseLabel': 'emr-5.30.1','Applications': [{'Name': 'Spark'},],'Instances': {'InstanceGroups': [{'Name': "Master nodes",'Market': 'ON_DEMAND','InstanceRole': 'MASTER','InstanceType': 'm5.xlarge','InstanceCount': 1,},{'Name': "Slave nodes",'Market': 'ON_DEMAND','InstanceRole': 'CORE','InstanceType': 'm5.xlarge','InstanceCount': 2,}],'KeepJobFlowAliveWhenNoSteps': False,'TerminationProtected': False,'Ec2KeyName': 'mykeypair',},'VisibleToAllUsers': True,'JobFlowRole': 'EMR_EC2_DefaultRole','ServiceRole': 'EMR_DefaultRole'}
with DAG(
dag_id=DAG_ID,
default_args=DEFAULT_ARGS,

コードサンプル343

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

dagrun_timeout=timedelta(hours=2),
start_date=days_ago(1),schedule_interval='@once',tags=['emr'],) as dag:cluster_creator = EmrCreateJobFlowOperator(
task_id='create_job_flow',
job_flow_overrides=JOB_FLOW_OVERRIDES)
step_adder = EmrAddStepsOperator(
task_id='add_steps',
job_flow_id="{{ task_instance.xcom_pull(task_ids='create_job_flow',
key='return_value') }}",
aws_conn_id='aws_default',
steps=SPARK_STEPS,)
step_checker = EmrStepSensor(
task_id='watch_step',
job_flow_id="{{ task_instance.xcom_pull('create_job_flow',
key='return_value') }}",
step_id="{{ task_instance.xcom_pull(task_ids='add_steps',
key='return_value')[0] }}",
aws_conn_id='aws_default',)cluster_creator >> step_adder >> step_checker

Amazon MWAAでの Amazon の使用 EKS
次のサンプルは、Amazon で Amazon Managed Workflows for Apache Airflow を使用する方法を示していますEKS。
トピック• Version• 前提条件• Amazon のパブリックキーを作成する EC2• クラスターを作成する
Amazon EKS (eksctl)

344

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• mwaa 名前空間を作成します。
• mwaa 名前空間のロールを作成します。
• Amazon EKSクラスターの IAMロールを作成してアタッチする• 要件.txt ファイルを作成します• Amazon の ID マッピングを作成する EKS• kubeconfig の作成• DAG を作成する• Amazon S3 バケットkube_config.yamlに DAGと を追加する Amazon S3• サンプルを有効にして、トリガーしてください。

Version• このページのサンプルコードは、Python 3.7 の Apache Airflow v1 で使用できます。
• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このトピックの例を使用するには、以下が必要です。
• Amazon MWAA環境 。
• eksctl。詳細については、eksctl のインストール を参照してください。
• kubectl。詳細については、kubectl のインストールとセットアップ を参照してください。eksctl と共にインストールされる場合もあります。
• Amazon MWAA環境を作成するリージョンのEC2キーペア。詳細については、key pair 作成またはインポート を参照してください。

Noteeksctl コマンドを使用するときに、--profile を含めたデフォルト以外のプロファイルを指定できます。

Version345

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon のパブリックキーを作成する EC2
以下のコマンドを使用して、プライベートキーからパブリックキーを作成します。
ssh-keygen -y -f myprivatekey.pem > mypublickey.pub

詳しくは、キーペアのパブリックキーを取得するを参照してください。

クラスターを作成する
次のコマンドを使用してクラスターを作成します。クラスターにカスタム名を付けたい場合や、別のリージョンで作成したい場合は、名前とリージョンの値を置き換えてください。 クラスター
は、Amazon MWAA環境を作成するのと同じリージョンで作成する必要があります。Amazon に使用する Amazon VPCネットワーク内のサブネットと一致するように、サブネットの値を置き換えますMWAA。ssh-public-key の値は、使用するキーと一致するように置き換えてください。同じ
リージョンEC2にある Amazon の既存のキーを使用するか、Amazon MWAA環境を作成するのと同じリージョンに新しいキーを作成できます。
eksctl create cluster \--name mwaa-eks \--region us-west-2 \--version 1.18 \--nodegroup-name linux-nodes \--nodes 3 \--nodes-min 1 \--nodes-max 4 \--with-oidc \--ssh-access \--ssh-public-key MyPublicKey \--managed \--vpc-public-subnets "subnet-11111111111111111, subnet-2222222222222222222" \--vpc-private-subnets "subnet-33333333333333333, subnet-44444444444444444"

クラスターの作成が完了するまで。少し時間がかかります。完了したら、次のコマンドを使用して、クラスターが正常に作成され、IAMOIDCプロバイダーが設定されていることを確認できます。
eksctl utils associate-iam-oidc-provider \--region us-west-2 \--cluster mwaa-eks \--approve

Amazon のパブリックキーを作成する EC2

346

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

mwaa 名前空間を作成します。
クラスターが正常に作成されたことを確認できたあと、以下のコマンドを使用してポッドの名前空間を作成します。
kubectl create namespace mwaa

mwaa 名前空間のロールを作成します。
名前空間を作成したら、MWAA名前空間でポッドをEKS実行できる Amazon MWAA ユーザー用のロールとロール割り当てを作成します。名前空間に別の名前を使用した場合は、-n mwaa の mwaa
を使用した名前に置き換えます。
cat << EOF | kubectl apply -f - -n mwaa
kind: Role
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: mwaa-role
rules:- apiGroups:- ""- "apps"- "batch"- "extensions"
resources:- "jobs"- "pods"- "pods/attach"- "pods/exec"- "pods/log"- "pods/portforward"- "secrets"- "services"
verbs:- "create"- "delete"- "describe"- "get"- "list"- "patch"- "update"--mwaa 名前空間を作成します。

347

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

kind: RoleBinding
apiVersion: rbac.authorization.k8s.io/v1
metadata:
name: mwaa-role-binding
subjects:- kind: User
name: mwaa-service
roleRef:
kind: Role
name: mwaa-role
apiGroup: rbac.authorization.k8s.io
EOF

次のコマンドを実行して、新しいロールが Amazon EKSクラスターにアクセスできることを確認します。を使用していない場合は、必ず正しい名前を使用してください。mwaa:
kubectl get pods -n mwaa --as mwaa-service

以下のメッセージが返ってくるはずだ：
No resources found in mwaa namespace.

Amazon EKSクラスターの IAMロールを作成してアタッチする
IAM ロールを作成して Amazon EKS (k8s) クラスターにバインドし、 による認証に使用できるようにする必要がありますIAM。ロールはクラスターへのログインにのみ使用され、コンソールまたはAPI 呼び出しに対するアクセス許可はありません。
のステップを使用して、Amazon MWAA環境の新しいロールを作成しますAmazon MWAA 実行ロー
ル。ただし、このトピックで説明されているポリシーを作成して追加せずに、次のポリシーを追加します。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": "airflow:PublishMetrics","Resource": "arn:aws:airflow:${MWAA_REGION}:${ACCOUNT_NUMBER}:environment/${MWAA_ENV_NAME}"},
Amazon EKSクラスターの IAMロールを作成してアタッチする

348

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Effect": "Deny","Action": "s3:ListAllMyBuckets","Resource": ["arn:aws:s3:::{MWAA_S3_BUCKET}","arn:aws:s3:::{MWAA_S3_BUCKET}/*"]},{"Effect": "Allow","Action": ["s3:GetObject*","s3:GetBucket*","s3:List*"],"Resource": ["arn:aws:s3:::{MWAA_S3_BUCKET}","arn:aws:s3:::{MWAA_S3_BUCKET}/*"]},{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:CreateLogGroup","logs:PutLogEvents","logs:GetLogEvents","logs:GetLogRecord","logs:GetLogGroupFields","logs:GetQueryResults","logs:DescribeLogGroups"],"Resource": ["arn:aws:logs:${MWAA_REGION}:${ACCOUNT_NUMBER}:log-group:airflow${MWAA_ENV_NAME}-*"]},{"Effect": "Allow","Action": "cloudwatch:PutMetricData","Resource": "*"},{"Effect": "Allow",

Amazon EKSクラスターの IAMロールを作成してアタッチする349

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Action": ["sqs:ChangeMessageVisibility","sqs:DeleteMessage","sqs:GetQueueAttributes","sqs:GetQueueUrl","sqs:ReceiveMessage","sqs:SendMessage"],"Resource": "arn:aws:sqs:${MWAA_REGION}:*:airflow-celery-*"},{"Effect": "Allow","Action": ["kms:Decrypt","kms:DescribeKey","kms:GenerateDataKey*","kms:Encrypt"],"NotResource": "arn:aws:kms:*:${ACCOUNT_NUMBER}:key/*","Condition": {"StringLike": {"kms:ViaService": ["sqs.${MWAA_REGION}.amazonaws.com"
]
}
}
},
{
"Effect": "Allow","Action": ["eks:DescribeCluster"],"Resource": "arn:aws:eks:${MWAA_REGION}:${ACCOUNT_NUMBER}:cluster/${EKS_CLUSTER_NAME}"}]}

ロールを作成したら、Amazon MWAA環境を編集して、作成したロールを環境の実行ロールとして使用します。ロールを変更するには、使用する環境を編集します。[権限] で実行ロールを選択します。
既知の問題：
Amazon EKSクラスターの IAMロールを作成してアタッチする350

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• サブパスARNsが Amazon で認証できないロールには既知の問題がありますEKS。この回避策
は、Amazon MWAA自体によって作成されたロールを使用するのではなく、サービスロールを手動で作成することです。詳細については、「パスが aws-auth configmap の に含まれている場合、
パスARNを持つロールは機能しません」を参照してください。
• Amazon MWAAサービスのリストが で利用できない場合は、Amazon などの代替サービスポリ
シーを選択しEC2、ロールの信頼ポリシーを次のように更新IAMする必要があります。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Principal": {"Service": ["airflow-env.amazonaws.com","airflow.amazonaws.com"]},"Action": "sts:AssumeRole"}]}

詳細については、IAM「ロール で信頼ポリシーを使用する方法」を参照してください。

要件.txt ファイルを作成します
このセクションのサンプルコードを使用するには、以下のデータベースオプションのいずれかを
requirements.txt に追加していることを確認してください。詳細については、「Python 依存関
係のインストール」を参照してください。
Apache Airflow v2
kubernetes
apache-airflow[cncf.kubernetes]==3.0.0

Apache Airflow v1
awscli
要件.txt ファイルを作成します

351

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

kubernetes==12.0.1

Amazon の ID マッピングを作成する EKS
次のコマンドで作成したロールARNの を使用して、Amazon の ID マッピングを作成しますEKS。
リージョンを変更する your-region 環境を作成した リージョンに。ロールARNの を置き換え、最後に mwaa-execution-role を環境の実行ロールで使用します。
eksctl create iamidentitymapping \--region your-region \--cluster mwaa-eks \--arn arn:aws:iam::111222333444:role/mwaa-execution-role \--username mwaa-service

kubeconfig の作成
kubeconfig を作成するには以下のコマンドを使用する：
aws eks update-kubeconfig \--region us-west-2 \--kubeconfig ./kube_config.yaml \--name mwaa-eks \--alias aws

実行時に特定のプロファイルを使用したupdate-kubeconfig場合は、kube_config.yaml ファイルに追加されたenv:セクションを削除して、Amazon で正しく動作するようにする必要があります
MWAA。そのためには、以下をファイルから削除して保存します。
env:- name: AWS_PROFILE
value: profile_name

DAG を作成する
次のコード例を使用して、 mwaa_pod_example.pyの などの Python ファイルを作成しますDAG。
Apache Airflow v2"""
Amazon の ID マッピングを作成する EKS

352

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow import DAG
from datetime import datetime
from airflow.providers.cncf.kubernetes.operators.kubernetes_pod import
KubernetesPodOperator
default_args = {'owner': 'aws','depends_on_past': False,'start_date': datetime(2019, 2, 20),
'provide_context': True}dag = DAG(
'kubernetes_pod_example', default_args=default_args, schedule_interval=None)#use a kube_config stored in s3 dags folder for now
kube_config_path = '/usr/local/airflow/dags/kube_config.yaml'
podRun = KubernetesPodOperator(namespace="mwaa",
image="ubuntu:18.04",
cmds=["bash"],arguments=["-c", "ls"],
labels={"foo": "bar"},name="mwaa-pod-test",
task_id="pod-task",
get_logs=True,
dag=dag,
is_delete_operator_pod=False,
config_file=kube_config_path,in_cluster=False,

DAG を作成する

353

Amazon Managed Workflows for Apache Airflow

ユーザーガイドcluster_context='aws')

Apache Airflow v1"""
Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a copy ofthis software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights touse, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESSFOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHERIN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
from airflow import DAG
from datetime import datetime
from airflow.contrib.operators.kubernetes_pod_operator import KubernetesPodOperator
default_args = {'owner': 'aws','depends_on_past': False,'start_date': datetime(2019, 2, 20),
'provide_context': True}dag = DAG(
'kubernetes_pod_example', default_args=default_args, schedule_interval=None)#use a kube_config stored in s3 dags folder for now
kube_config_path = '/usr/local/airflow/dags/kube_config.yaml'
podRun = KubernetesPodOperator(namespace="mwaa",
image="ubuntu:18.04",
cmds=["bash"],arguments=["-c", "ls"],
labels={"foo": "bar"},name="mwaa-pod-test",

DAG を作成する

354

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

task_id="pod-task",
get_logs=True,
dag=dag,
is_delete_operator_pod=False,
config_file=kube_config_path,in_cluster=False,cluster_context='aws')

Amazon S3 バケットkube_config.yamlに DAGと を追加する Amazon
S3
DAG 作成した と kube_config.yaml ファイルを Amazon 環境の Amazon S3 バケットに配置します。 MWAAAmazon S3 コンソールまたは AWS Command Line Interfaceを使用して、ファイルをバケットに入れることができます。

サンプルを有効にして、トリガーしてください。
Apache Airflow で、サンプルを有効にしてからトリガーします。
実行して正常に完了したら、次のコマンドを使用して、ポッドを確認します。
kubectl get pods -n mwaa

次のような出力が表示されます:
NAME READY STATUS RESTARTS AGE
mwaa-pod-test-aa11bb22cc3344445555666677778888 0/1 Completed 0 2m23s

次に、以下のコマンドを使用して、ポッドの出力を確認できます。名前の値を、前のコマンドで返された値に置き換えます。
kubectl logs -n mwaa mwaa-pod-test-aa11bb22cc3344445555666677778888

ECS を使用した Amazon への接続 ECSOperator
このトピックでは、 を使用して Amazon から Amazon Elastic Container Service (Amazon ECS) コ
ンテナECSOperatorに接続する方法について説明しますMWAA。次のステップでは、必要なアクセス許可を環境の実行ロールに追加し、 AWS CloudFormation テンプレートを使用して Amazon ECS
Amazon S3 バケットkube_config.yamlに DAGと を追加する Amazon S3

355

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Fargate クラスターを作成し、最後に新しいクラスターDAGに接続する を作成してアップロードします。
トピック• Version• 前提条件• アクセス許可• Amazon ECSクラスターを作成する• コードサンプル

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
このページのサンプルコードを使用するには、以下が必要です。
• Amazon MWAA環境 。

アクセス許可• 環境の実行ロールには、Amazon でタスクを実行するためのアクセス許可が必要です
ECS。Amazon ECS_ FullAccess AWS管理ポリシーを実行ロールにアタッチするか、次のポリシーを作成して実行ロールにアタッチできます。
{"Version": "2012-10-17","Statement": [{"Sid": "VisualEditor0","Effect": "Allow","Action": ["ecs:RunTask","ecs:DescribeTasks"],"Resource": "*"Version356

Amazon Managed Workflows for Apache Airflow

ユーザーガイド},{"Action": "iam:PassRole","Effect": "Allow","Resource": ["*"],"Condition": {"StringLike": {"iam:PassedToService": "ecs-tasks.amazonaws.com"
}
}
}
]
}

• Amazon でタスクを実行するために必要な前提条件を追加することに加えてECS、以下に示
すように、Amazon MWAA実行ロールの CloudWatch Logs ポリシーステートメントを変更して、Amazon ECSタスクロググループへのアクセスを許可する必要があります。Amazon ECSロ
ググループは、 の AWS CloudFormation テンプレートによって作成されますthe section called“Amazon ECSクラスターを作成する”。
{"Effect": "Allow","Action": ["logs:CreateLogStream","logs:CreateLogGroup","logs:PutLogEvents","logs:GetLogEvents","logs:GetLogRecord","logs:GetLogGroupFields","logs:GetQueryResults"],"Resource": ["arn:aws:logs:region:account-id:log-group:airflow-environment-name-*","arn:aws:logs:*:*:log-group:ecs-mwaa-group:*"]}

アクセス許可357

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA実行ロールの詳細とポリシーのアタッチ方法については、「」を参照してください実行ロール。

Amazon ECSクラスターを作成する
次の AWS CloudFormation テンプレートを使用して、Amazon MWAA ワークフローで使用する Amazon ECS Fargate クラスターを構築します。詳細については、Amazon Elastic Container
Service デベロッパーガイドの「タスク定義の作成」 を参照してください。
1.

次のコードでJSONファイルを作成し、 として保存しますecs-mwaa-cfn.json。
{"AWSTemplateFormatVersion": "2010-09-09","Description": "This template deploys an ECS Fargate cluster with an Amazon
Linux image as a test for MWAA.","Parameters": {"VpcId": {"Type": "AWS::EC2::VPC::Id","Description": "Select a VPC that allows instances access to ECR, as
used with MWAA."},"SubnetIds": {"Type": "List<AWS::EC2::Subnet::Id>","Description": "Select at two private subnets in your selected VPC, as
used with MWAA."},"SecurityGroups": {"Type": "List<AWS::EC2::SecurityGroup::Id>","Description": "Select at least one security group in your selected
VPC, as used with MWAA."}},"Resources": {"Cluster": {"Type": "AWS::ECS::Cluster","Properties": {"ClusterName": {"Fn::Sub": "${AWS::StackName}-cluster"}}},"LogGroup": {"Type": "AWS::Logs::LogGroup",

Amazon ECSクラスターを作成する

358

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Properties": {"LogGroupName": {"Ref": "AWS::StackName"},"RetentionInDays": 30}},"ExecutionRole": {"Type": "AWS::IAM::Role","Properties": {"AssumeRolePolicyDocument": {"Statement": [{"Effect": "Allow","Principal": {"Service": "ecs-tasks.amazonaws.com"},"Action": "sts:AssumeRole"}]},"ManagedPolicyArns": ["arn:aws:iam::aws:policy/service-role/
AmazonECSTaskExecutionRolePolicy"]}},"TaskDefinition": {"Type": "AWS::ECS::TaskDefinition","Properties": {"Family": {"Fn::Sub": "${AWS::StackName}-task"},"Cpu": 2048,"Memory": 4096,"NetworkMode": "awsvpc","ExecutionRoleArn": {"Ref": "ExecutionRole"},"ContainerDefinitions": [{"Name": {"Fn::Sub": "${AWS::StackName}-container"},

Amazon ECSクラスターを作成する

359

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Image": "137112412989.dkr.ecr.us-east-1.amazonaws.com/
amazonlinux:latest","PortMappings": [{"Protocol": "tcp","ContainerPort": 8080,"HostPort": 8080}],
"LogConfiguration": {"LogDriver": "awslogs","Options": {"awslogs-region": {"Ref": "AWS::Region"},"awslogs-group": {"Ref": "LogGroup"},"awslogs-stream-prefix": "ecs"}}}],"RequiresCompatibilities": ["FARGATE"]}},"Service": {"Type": "AWS::ECS::Service","Properties": {"ServiceName": {"Fn::Sub": "${AWS::StackName}-service"},"Cluster": {"Ref": "Cluster"},"TaskDefinition": {"Ref": "TaskDefinition"},"DesiredCount": 1,"LaunchType": "FARGATE","PlatformVersion": "1.3.0","NetworkConfiguration": {Amazon ECSクラスターを作成する

360

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"AwsvpcConfiguration": {"AssignPublicIp": "ENABLED","Subnets": {"Ref": "SubnetIds"},"SecurityGroups": {"Ref": "SecurityGroups"
}
}
}
}
}
}
}

2.

コマンドプロンプトで、次の AWS CLI コマンドを使用して新しいスタックを作成します。SecurityGroups と の値を、Amazon MWAA環境のセキュリティグループとサブネッ
トSubnetIdsの値に置き換える必要があります。
$ aws cloudformation create-stack \--stack-name my-ecs-stack --template-body file://ecs-mwaa-cfn.json \--parameters ParameterKey=SecurityGroups,ParameterValue=your-mwaa-security-group \ParameterKey=SubnetIds,ParameterValue=your-mwaa-subnet-1\\,your-mwaa-subnet-1 \--capabilities CAPABILITY_IAM

あるいは、以下のシェルスクリプトを使用できます。このスクリプトは、 get-environmentAWS CLI コマンドを使用して環境のセキュリティグループとサブネットに必要な値を取得し、それに応じてスタックを作成します。スクリプトを実行するには、以下のようにします。
a.

スクリプトをコピーして、 AWS CloudFormation テンプレートと同じディレクトリecsstack-helper.shに として保存します。
#!/bin/bash
joinByString() {local separator="$1"
shiftlocal first="$1"
shiftprintf "%s" "$first" "${@/#/$separator}"}

Amazon ECSクラスターを作成する

361

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

response=$(aws mwaa get-environment --name $1)
securityGroupId=$(echo "$response" | jq -r'.Environment.NetworkConfiguration.SecurityGroupIds[]')subnetIds=$(joinByString '\,' $(echo "$response" | jq -r'.Environment.NetworkConfiguration.SubnetIds[]'))
aws cloudformation create-stack --stack-name $2 --template-body file://ecscfn.json \--parameters ParameterKey=SecurityGroups,ParameterValue=$securityGroupId \ParameterKey=SubnetIds,ParameterValue=$subnetIds \--capabilities CAPABILITY_IAMb.

以下のコマンドを使ってスクリプトを実行します。environment-name と stack-name
をあなたの情報に置き換えます。
$ chmod +x ecs-stack-helper.sh$ ./ecs-stack-helper.bash environment-name stack-name

成功すると、次の出力に新しい AWS CloudFormation スタック ID が表示されます。
{"StackId": "arn:aws:cloudformation:us-west-2:123456789012:stack/my-ecsstack/123456e7-8ab9-01cd-b2fb-36cce63786c9"}

AWS CloudFormation スタックが完了し、Amazon ECSリソースを AWS プロビジョニングしたら、を作成してアップロードする準備が整いますDAG。

コードサンプル
1.

コマンドプロンプトを開き、DAGコードが保存されているディレクトリに移動します。例:
cd dags2.

次のコードサンプルの内容をコピーし、 としてローカルに保存してからmwaa-ecsoperator.py、新しい DAGを Amazon S3 にアップロードします。
from http import client

コードサンプル362

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow import DAG
from airflow.providers.amazon.aws.operators.ecs import ECSOperator
from airflow.utils.dates import days_ago
import boto3
CLUSTER_NAME="mwaa-ecs-test-cluster" #Replace value for CLUSTER_NAME with yourinformation.
CONTAINER_NAME="mwaa-ecs-test-container" #Replace value for CONTAINER_NAME withyour information.
LAUNCH_TYPE="FARGATE"
with DAG(
dag_id = "ecs_fargate_dag",schedule_interval=None,
catchup=False,start_date=days_ago(1)) as dag:client=boto3.client('ecs')
services=client.list_services(cluster=CLUSTER_NAME,launchType=LAUNCH_TYPE)
service=client.describe_services(cluster=CLUSTER_NAME,services=services['serviceArns'])ecs_operator_task = ECSOperator(
task_id = "ecs_operator_task",
dag=dag,cluster=CLUSTER_NAME,
task_definition=service['services'][0]['taskDefinition'],launch_type=LAUNCH_TYPE,
overrides={"containerOverrides":[{"name":CONTAINER_NAME,"command":["ls", "-l", "/"],},],},
network_configuration=service['services'][0]['networkConfiguration'],awslogs_group="mwaa-ecs-zero",awslogs_stream_prefix=f"ecs/{CONTAINER_NAME}",)

コードサンプル363

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Note
この例ではDAG、 の場合awslogs_group、Amazon ECSタスクロググループの名前でロググループを変更する必要がある場合があります。この例では、mwaa-ecs-zero という名前のロググループを想定しています。にはawslogs_stream_prefix、Amazon
ECSタスクログストリームプレフィックスを使用します。この例では、ログストリームのプレフィックスが ecs であることを前提としています。
3.

次の AWS CLI コマンドを実行して DAGを環境のバケットにコピーし、Apache Airflow UI DAGを使用して をトリガーします。
$ aws s3 cp your-dag.py s3://your-environment-bucket/dags/

4.

成功すると、 のタスクログに次のような出力が表示されますecs_operator_taskecs_fargate_dagDAG。
[2022-01-01, 12:00:00 UTC] {{ecs.py:300}} INFO - Running ECS Task Task definition: arn:aws:ecs:us-west-2:123456789012:task-definition/mwaa-ecs-testtask:1 - on cluster mwaa-ecs-test-cluster[2022-01-01, 12:00:00 UTC] {{ecs-operator-test.py:302}} INFO - ECSOperator
overrides:{'containerOverrides': [{'name': 'mwaa-ecs-test-container', 'command': ['ls', '-l','/']}]}.
.
.
[2022-01-01, 12:00:00 UTC] {{ecs.py:379}} INFO - ECS task ID is:e012340b5e1b43c6a757cf012c635935[2022-01-01, 12:00:00 UTC] {{ecs.py:313}} INFO - Starting ECS Task Log Fetcher[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] total
52[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC]
lrwxrwxrwx
1 root root
7 Jun 13 18:51 bin -> usr/bin[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] dr-xrxr-x
2 root root 4096 Apr 9 2019 boot[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
5 root root 340 Jul 19 17:54 dev[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
1 root root 4096 Jul 19 17:54 etc[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Apr 9 2019 home

コードサンプル364

Amazon Managed Workflows for Apache Airflow

ユーザーガイド[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC]
lrwxrwxrwx
1 root root
7 Jun 13 18:51 lib -> usr/lib[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC]
lrwxrwxrwx
1 root root
9 Jun 13 18:51 lib64 -> usr/lib64[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Jun 13 18:51 local[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Apr 9 2019 media[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Apr 9 2019 mnt[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Apr 9 2019 opt[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] dr-xrxr-x 103 root root
0 Jul 19 17:54 proc
[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] dr-xrx-\-\2 root root 4096 Apr 9 2019 root[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Jun 13 18:52 run[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC]
lrwxrwxrwx
1 root root
8 Jun 13 18:51 sbin -> usr/sbin[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x
2 root root 4096 Apr 9 2019 srv[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] dr-xrxr-x 13 root root
0 Jul 19 17:54 sys[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC]
drwxrwxrwt
2 root root 4096 Jun 13 18:51 tmp[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x 13 root root 4096 Jun 13 18:51 usr[2022-01-01, 12:00:00 UTC] {{ecs.py:119}} INFO - [2022-07-19, 17:54:03 UTC] drwxrxr-x 18 root root 4096 Jun 13 18:52 var.
.
.
[2022-01-01, 12:00:00 UTC] {{ecs.py:328}} INFO - ECS Task has been successfully
executedAmazon での dbt の使用 MWAA
このトピックでは、Amazon で dbt と Postgres を使用する方法を示しますMWAA。次のステップ
では、必要な依存関係を requirements.txt に追加し、サンプルの dbt プロジェクトを環境の
Amazon S3 バケットにアップロードします。次に、サンプルを使用して Amazon MWAAが依存関係

Amazon での dbt の使用 MWAA

365

Amazon Managed Workflows for Apache Airflow

ユーザーガイドをインストールしたDAGことを確認し、最後に を使用して dbt プロジェクトBashOperatorを実行
します。
トピック
• Version• 前提条件• 依存関係• DBT プロジェクトを Amazon S3 にアップロードする• を使用して DAG dbt 依存関係のインストールを検証する• を使用して DAG dbt プロジェクトを実行する

Version• このページのコード例は、Python 3.10 の Apache Airflow v2 で使用できます。

前提条件
次の手順を完了するには、以下のものが必要です。
• Apache Airflow v2.2.2 を使用する Amazon MWAA環境。このサンプルは v2.2.2 で作成され、テストされています。他の Apache Airflow バージョンで使用するためには、サンプルを変更する必要がある場合があります。
• dbt プロジェクトのサンプル。Amazon で dbt の使用を開始するにはMWAA、フォークを作成
し、dbt-labs リポジトリから dbt スタータープロジェクトのクローンを作成できます。 GitHub

依存関係
dbt MWAAで Amazon を使用するには、次のスタートアップスクリプトを環境に追加します。詳細については、「Amazon でのスタートアップスクリプトの使用MWAA」を参照してください。
#!/bin/bash
if [[ "${MWAA_AIRFLOW_COMPONENT}" != "worker" ]]thenexit 0fi
Version366

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

echo "------------------------------"
echo "Installing virtual Python env"
echo "------------------------------"
pip3 install --upgrade pip
echo "Current Python version:"python3 --version
echo "..."
sudo pip3 install --user virtualenv
sudo mkdir python3-virtualenv
cd python3-virtualenv
sudo python3 -m venv dbt-env
sudo chmod -R 777 *echo "------------------------------"
echo "Activating venv in"$DBT_ENV_PATH
echo "------------------------------"
source dbt-env/bin/activate
pip3 list
echo "------------------------------"
echo "Installing libraries..."echo "------------------------------"# do not use sudo, as it will install outside the venv
pip3 install dbt-redshift==1.6.1 dbt-postgres==1.6.1
echo "------------------------------"
echo "Venv libraries..."echo "------------------------------"
pip3 list
dbt --version
echo "------------------------------"
echo "Deactivating venv..."echo "------------------------------"

依存関係

367

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

deactivate

以下のセクションでは、dbt プロジェクトディレクトリを Amazon S3 にアップロードし、Amazonが必要な dbt 依存関係を正常にインストールMWAAしたかどうかDAGを検証する を実行します。

DBT プロジェクトを Amazon S3 にアップロードする
Amazon MWAA環境で dbt プロジェクトを使用するには、プロジェクトディレクトリ全体を環境のdagsフォルダにアップロードします。環境が更新されると、Amazon は dbt ディレクトリをローカ
ルusr/local/airflow/dags/フォルダにMWAAダウンロードします。
DBT プロジェクトを Amazon S3 にアップロードするには
1.

dbt スタータープロジェクトをクローンしたディレクトリに移動します。

2.

次の Amazon S3 AWS CLI コマンドを実行して、 --recursiveパラメータを使用してプロジェ
クトのコンテンツを環境の dagsフォルダに再帰的にコピーします。このコマンドは、dbt と呼ばれるサブディレクトリを作成し、これをすべてのdbtプロジェクトに使用できます。サブディ
レクトリが既に存在する場合、プロジェクトファイルは既存のディレクトリにコピーされ、新しいディレクトリは作成されません。このコマンドは、この特定のスターターのために dbt ディレクトリ内にサブディレクトリも作成します。
$ aws s3 cp dbt-starter-project s3://mwaa-bucket/dags/dbt/dbt-starter-project -recursive

プロジェクトのサブディレクトリに異なる名前を使用して、親 dbt ディレクトリ内の複数のdbt プロジェクトを整理できます。

を使用して DAG dbt 依存関係のインストールを検証する
以下DAGでは、 BashOperatorと bash コマンドを使用して、Amazon MWAAが で指定された dbt
依存関係を正常にインストールしたかどうかを確認しますrequirements.txt。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
with DAG(dag_id="dbt-installation-test", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
cli_command = BashOperator(
DBT プロジェクトを Amazon S3 にアップロードする

368

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

task_id="bash_command",bash_command=""/usr/local/airflow/python3-virtualenv/dbt-env/bin/dbt -version"")

以下を実行してタスクログを表示し、dbt とその依存関係がインストールされていることを確認します。
1.

Amazon MWAAコンソールに移動し、使用可能な環境のリストから Open Airflow UI を選択します。

2.

Apache Airflow UI dbt-installation-testDAGで、リストから を検索し、Last Run列の下にある日付を選択して、最後に成功したタスクを開きます。

3.

グラフビューを使用してタスクを選択し、bash_commandタスクインスタンスの詳細を開きます。

4.

[Log] を選択してタスクログを開き、次に、requirements.txt で指定された dbt のバージョ
ンをログが正常にリストしていることを確認してください。

を使用して DAG dbt プロジェクトを実行する
以下ではBashOperator、 DAGを使用してAmazon S3プロジェクトをローカルusr/local/
airflow/dags/ディレクトリから書き込みアクセス可能な/tmpディレクトリにコピーし、dbt プ
ロジェクトを実行します。bash コマンドは、dbt-starter-projectというタイトルのスターター
dbt プロジェクトを想定しています。プロジェクトディレクトリの名前に従ってディレクトリ名を変更します。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
import os
DAG_ID = os.path.basename(__file__).replace(".py", "")# assumes all files are in a subfolder of DAGs called dbt
with DAG(dag_id=DAG_ID, schedule_interval=None, catchup=False, start_date=days_ago(1))
as dag:cli_command = BashOperator(
task_id="bash_command",を使用して DAG dbt プロジェクトを実行する

369

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

bash_command="source /usr/local/airflow/python3-virtualenv/dbt-env/bin/
activate;\
cp -R /usr/local/airflow/dags/dbt /tmp;\
echo 'listing project files:';\ls -R /tmp;\
cd /tmp/dbt/mwaa_dbt_test_project;\/usr/local/airflow/python3-virtualenv/dbt-env/bin/dbt run --project-dir /tmp/dbt/
mwaa_dbt_test_project --profiles-dir ..;\
cat /tmp/dbt_logs/dbt.log;\
rm -rf /tmp/dbt/mwaa_dbt_test_project")AWS ブログとチュートリアル• Amazon EKSおよび Amazon MWAA for Apache Airflow v2.x の使用

AWS ブログとチュートリアル

370

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow のベストプ
ラクティス
このガイドでは、Amazon Managed Workflows for Apache Airflow を使用する場合に推奨されるベス
トプラクティスについて説明します。
トピック• Amazon での Apache Airflow のパフォーマンスチューニング MWAA
• requirements.txt での Python 依存関係の管理

Amazon での Apache Airflow のパフォーマンスチューニング
MWAA
このページでは、Amazon MWAA での Apache Airflow 構成オプションの使用 を使用して Amazon
Managed Workflows for Apache Airflow のパフォーマンスを調整するために推奨するベストプラク
ティスについて説明します。
目次• Apache Airflow 構成オプションの追加• Apache Airflow スケジューラー• パラメータ• 制限• DAG フォルダ
• パラメータ• DAG ファイル
• パラメータ• タスク• パラメータ

Apache Airflow 構成オプションの追加
以下の手順では、Airflow 構成オプションを環境に追加するステップを説明します。
Apache Airflow のパフォーマンス調整

371

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[編集] を選択します。

4.

[Next (次へ)] を選択します。

5.

Airflow 構成オプション ペインで [カスタム構成を追加] を選択します。

6.

ドロップダウンリストから構成を選択して値を入力するか、カスタム構成を入力して値を入力します。

7.

追加する構成ごとに [カスタム構成を追加] を選択します。

8.

[Save] を選択します。

詳細については、「Amazon MWAA での Apache Airflow 構成オプションの使用」を参照してください。

Apache Airflow スケジューラー
Apache Airflow スケジューラーは Apache Airflow のコアコンポーネントです。スケジューラに問題があると、 DAGsが解析され、タスクがスケジュールされない可能性があります。Apache Airflow ス
ケジューラーの調整の詳細については、Apache Airflow ドキュメンテーションウェブサイトの「スケジューラーのパフォーマンスの微調整」を参照してください。

パラメータ
このセクションでは、Apache Airflow スケジューラーで使用できる構成オプションとそのユースケー
スについて説明します。
Apache Airflow v2
Version

設定オプション

デフォルト

説明

ユースケースv2

celery.sy
nc_parallelism

1

Celery エグゼ
キュターがタスクの状態を同期するために使用するプロセスの数です。

このオプショ
ンを使用すると、Celery エ
グゼキュターが使用するプロ
セスを制限することでキューのApache Airflow スケジューラー

372

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

ユーザーガイド

デフォルト

説明

ユースケース
競合を防ぐことができます。デ
フォルトでは、
タスクログをCloudWatch ロ
グ1に配信する
際のエラーを防ぐために、 値がに設定されています。この値を0 に設定すると
最大数のプロセスを使用することになりますが、タスクログの配信時にエラーが発生する可能性があります。

Apache Airflow スケジューラー

373

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version

設定オプション

デフォルト

説明

ユースケースv2

scheduler.processo
r_poll_interval

1

スケジューラの「ループ」での連続したDAG
ファイル処理の間に待機する秒数。

このオプション
を使用すると、
スケジューラがDAG解析結果の取得、タスクの検出とキュー
イング、エグゼキューター でのキューに入れられたタスクの実行が完了した後にスリープ
する時間を増やすことで、スケ
ジューラCPUの使用を解放できます。この値を増やすと、Apache Airflow
v2 の場合はscheduler.parsing_
processes
で、Apache
Airflow v1の場合はscheduler.max_threads で、環境で実行されるス
ケジューラーのスレッド数が消費されます。これにより、 を

Apache Airflow スケジューラー

374

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

ユーザーガイド

デフォルト

説明

ユースケース
解析するスケ
ジューラの容量が減りDAGs、ウェブサーバー に表示されるDAGsまでの時間が長くなる可能性があります。

v2

Apache Airflow スケジューラー

scheduler.max_dagr
uns_to_cr
eate_per_loop

10

スケジュー
ラ「ルー
プDagRuns」ごとにDAGs作成する の最大数。

このオプション
を使用すると、
スケジューラの「ループ」の最大数を減らすことで、タスクをスケジュールDagRunsするためのリソースを解放できます。

375

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version

設定オプション

デフォルト

説明

ユースケースv2

scheduler.parsing_
processes(2 * number

スケジューラがをスケジュール
するために並行して実行できる
スレッドの数
DAGs。

このオプショ
ンを使用すると、スケジュー
ラが を解析する
ために並列に実行するプロセスの数を減らすことで、リソースを解放できますDAGs。DAG 解析がタスクのス
ケジュールに影響している場合は、この数of vCPUs) 1 デフォルトでは、次の式を使用して を設定します。

値を低く抑える
ことをお勧めします。環境のvCPU カウントより小さい値を指定する必要があります。詳細については、「制限」を参照
してください。

制限
このセクションでは、スケジューラーのデフォルトパラメータを調整する際に考慮すべき制限について説明します。
scheduler.parsing_processes、scheduler.max_threads
環境クラスの vCPU ごとに 2 つのスレッドが許可されます。環境クラスのスケジューラー用に少なくとも 1 つのスレッドを予約する必要があります。タスクのスケジュールが遅れていることに気付いた場合は、環境クラスを増やす必要があるかもしれません。例えば、大規模な環境
Apache Airflow スケジューラー

376

Amazon Managed Workflows for Apache Airflow

ユーザーガイドには、スケジューラ用の 4 vCPU Fargate コンテナインスタンスがあります。つまり、他のプロセスに使用できるスレッドの 7 合計は最大数になります。つまり、2 つのスレッドに 4 つの を掛けてvCPUs、スケジューラ自体の 1 を引いたものです。scheduler.max_threads およびscheduler.parsing_processes で指定する値は、環境クラスで使用できるスレッド数 (以下を参照) を超えてはなりません。
• mw1.small — 他のプロセスの 1 スレッド数を超えてはいけません。残りのスレッドはスケ
ジューラー用に予約されています。
• mw1.medium — 他のプロセスの 3 スレッド数を超えてはいけません。残りのスレッドはスケ
ジューラー用に予約されています。
• mw1.large — 他のプロセスの 7 スレッド数を超えてはいけません。残りのスレッドはスケ
ジューラー用に予約されています。

DAG フォルダ
Apache Airflow スケジューラは、環境上の DAGsフォルダを継続的にスキャンします。含まれている
plugins.zip ファイル、または「airflow」インポートステートメントを含む Python (.py) ファイ
ル。その後、結果の Python DAG オブジェクトは に配置され、DagBagスケジューラがそのファイルを処理して、スケジュールする必要があるタスクがあるかどうかを判断します。Dag ファイルの解
析は、ファイルに実行可能なDAGオブジェクトが含まれているかどうかに関係なく行われます。

パラメータ
このセクションでは、 DAGsフォルダで使用できる設定オプションとそのユースケースについて説明します。
Apache Airflow v2
Version

設定オプション

デフォルト

説明

ユースケースv2

scheduler.dag_dir_list_inte
rval

300 秒

DAGs フォルダをスキャンして新しいファイル
を探す秒数。

このオプショ
ンを使用すると、DAGsフォルダを解析する
秒数を増やすことでリソースを解放できます。
で解析時間がDAG フォルダ

377

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

ユーザーガイド

デフォルト

説明

ユースケース
長くなる場合はtotal_par
se_timemetrics、この値を増やすことをお勧めします。これは、DAGsフォ
ルダ内のファイ
ルが多数あることが原因である可能性があります。

v2scheduler.min_file_process_interval

30 秒

スケジューラがを解析DAGし、の更新DAGが反映されるまでの秒数。

このオプショ
ンを使用すると、 を解析する
前にスケジュー
ラが待機する
秒数を増やすことでリソースを解放できますDAG。例えば、の値を指定すると30、DAGファ
イルは 30 秒ごとに解析されます。環境のCPU
使用量を減らす
ために、この数値を高くしておくことをお勧めします。

DAG フォルダ

378

Amazon Managed Workflows for Apache Airflow

ユーザーガイドDAG ファイル
Apache Airflow スケジューラループの一部として、個々のDAGファイルが解析されてDAGPython オブジェクトが抽出されます。Apache Airflow v2 以降では、スケジュー
ラーは同時に最大数の解析プロセスを解析します。同じファイルが再び解析される前に、scheduler.min_file_process_interval で指定した秒数が経過する必要があります。

パラメータ
このセクションでは、Apache Airflow DAG ファイルで使用できる設定オプションとそのユースケー
スについて説明します。
Apache Airflow v2
Version

設定オプション

デフォルト

説明

ユースケースv2

core.dag_
file_proc
essor_timeout

50 秒

がDAGファ
イルの処理をDagFilePr
ocessorタイム
アウトするまでの秒数。

このオプショ
ンを使用すると、DagFilePr
ocessorタイム
アウトまでの時間を長くすることでリソースを解放できます。DAG 処理
ログにタイムア
ウトが発生し、実行DAGs可能なロードが行われない場合は、この値を増やすことをお勧めします。

v2

DAG ファイル

core.dagb
ag_import_timeout

30 秒

Python ファイルをインポートするまでの秒数がこのオプショ
ンを使用すると、Python
ファイルのイン
379

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

ユーザーガイド

デフォルト

説明

ユースケース

タイムアウトします。

ポート中にスケ
ジューラがタイ
ムアウトしてDAGオブジェ
クトを抽出するまでの時間を長くすることで、リソースを解放できます。このオプションはス
ケジューラーの「ループ」の一部として処理さ
れ、core.dag_
file_proc
essor_tim
eout で指定されている値よりも小さい値が含まれている必要があります。

DAG ファイル

380

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version

設定オプション

デフォルト

説明

ユースケースv2

core.min_serialize
d_dag_upd
ate_interval

30

データベースDAGsでシリア
ル化された が更新されるまでの最小秒数。

このオプション
を使用すると、
データベースDAGsでシリア
ル化された が更新されるまでの秒数を増やすことで、リソー
スを解放できます。、または複雑な の数が多い
場合はDAGs、
この値を増やすことをお勧めし
ますDAGs。この値を大きくすると、シリア
ル化されるスケジューラとデー
タベースの負荷
DAGsが軽減されます。

DAG ファイル

381

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version

設定オプション

デフォルト

説明

ユースケースv2

core.min_serialize
d_dag_fet
ch_interval

10に既にロードされているときに、シリアル化
された DAG がデータベースから再フェッ
チされる秒数
DagBag。

このオプショ
ンを使用すると、シリアル化された DAG
が再フェッチされる秒数を増やすことでリソースを解放できます。データベースの「書き込み」速度を下げるには、この値を core.min_serialize
d_dag_upd
ate_interval で指定した値より大きくする必要があります。この値を大きくすると、シリアル
化されるウェブ
サーバーとデー
タベースの負荷
DAGsが軽減されます。

タスク
Apache Airflow スケジューラーとワーカーはどちらもタスクのキューイングとデキューに関与します。スケジューラーは、解析済みのスケジュール設定が完了したタスクを [なし] ステータスから [スケジュール済み] ステータスに移行します。同じく Fargate のスケジューラーコンテナーで実行されているエグゼキューターは、それらのタスクをキューに入れ、そのステータスを [キューで待機中]
タスク

382

Amazon Managed Workflows for Apache Airflow

ユーザーガイドに設定します。ワーカーにキャパシティがあると、キューからタスクを取り出してステータスを [実行中] に設定し、その後、タスクが成功したか失敗したかに基づいてステータスを [成功] または [失敗] に変更します。

パラメータ
このセクションでは、Apache Airflow タスクで使用できる構成オプションとそのユースケースについて説明します。
Amazon がMWAA上書きするデフォルトの設定オプションは、 でマークされます。red.
Apache Airflow v2
Version

設定オプション

デフォルト

説明

ユースケースv2

コア・パラレリ
ズムに基づいて動的に設定されま「実行中」のス
テータスを持つことができるタ
スクインスタンスの最大数。

このオプション
を使用すると、同時に実行できるタスクイン
スタンスの数を増やすことでリソースを解放できます。
指定する値は、使用可能なワーカーの数にワー
カーのタスク密度を「掛けた」
ものであるべきす(maxWorkers *maxCelery
Workers) /schedulers* 1.5。

です。この値を変更するのは、多数のタスクが「実行中」または「キューで待機中」の状態で停止している場
合のみにするこ
タスク

383

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

ユーザーガイド

デフォルト

説明

ユースケースとをおすすめします。

v2

core.dag_
concurrency

10000ごとに同時に実行できるタスク
インスタンスの数DAG。

このオプション
を使用すると、同時に実行できるタスクインス
タンスの数を増やすことでリソースを解放できます。例えば、10 個の並列タ
スクDAGsを持
つ 100 個あり、すべてを同時にDAGs実行する
場合は、 で使用可能なワーカーのタスク密度を celery.wo
rker_conc
urrency の数
DAGs (例: 100)で割った数として最大並列度を計算できます。

タスク

384

Amazon Managed Workflows for Apache Airflow

Version

設定オプション

デフォルト

説明

ユースケースv2

core.exec
ute_tasks_new_python_interpreter

True

Apache Airflow
が親プロセスをフォークするか、新しいPython プロセスを作成することによってタスクを実行するかど
うかを決定します。

True に設定す
ると、Apache
Airflow はプラグ

celery.wo
rker_conc
urrency

該当なし

Amazon は、このオプションの Airflow ベー
スインストール
をMWAAオー
バーライドして、ワーカーを自動スケーリン
グコンポーネントの一部としてスケーリングします。

Any value

v2

タスク

ユーザーガイド

インに加えた変
更を、タスクを実行するために作成された新しい Python プロ
セスとして認識します。

specified
for this
option is
ignored.

385

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Version

設定オプション

デフォルト

説明

ユースケースv2

celery.wo
rker_autoscale

mw1.small - 5,0

ワーカー向けのタスク同時実行性。

このオプショ
ンを使用すると、ワーカーの

mw1.medium 10,0
mw1.large 20,0
mw1.xlarge 40,0
mw1.2xlarge 80,0

minimum、maximumのタスク同時実
行を減らすこと
でリソースを解放できます。
ワーカーは、そのための十分なリソースがあるかどうかに関係
なく、構成された maximum までの同時タスク
受け入れます。
十分なリソースがない状態でタスクをスケジュールすると、
タスクはすぐに失敗します。リ
ソースを大量に消費するタスクの場合は、タスクあたりの容量を増やすために値をデフォルトより小さくしてこの値を変更す
ることをお勧め
します。

タスク

386

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

requirements.txt での Python 依存関係の管理
このページでは、Amazon Managed Workflows for Apache Airflow 環境の requirements.txt ファ
イルに Python の依存関係をインストールして管理するために推奨するベストプラクティスについて説明します。
目次• Amazon MWAACLIユーティリティDAGsを使用したテスト• PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール• オプション 1: Python Package インデックスからの Python 依存関係
• オプション 2: Python wheel (.whl)• Amazon S3 バケット上の plugins.zip ファイルを使用する• でホストされているWHLファイルの使用 URL• からのWHLファイルの作成 DAG• オプション 3: プライベート PyPi/PEP-503 準拠リポジトリでホストされる Python 依存関係
• Amazon MWAAコンソールでのログの有効化• Logs コンソールでの CloudWatch ログの表示• Apache Airflow UI でエラーを表示する• Apache Airflow へのログイン• requirements.txt シナリオ例

Amazon MWAACLIユーティリティDAGsを使用したテスト• コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for
Apache Airflow 環境をローカルにレプリケートします。
• は、Amazon MWAA本番稼働用イメージと同様の Docker コンテナイメージをローカルにCLI構築します。これにより、Amazon にデプロイする前に、ローカル Apache Airflow 環境を実行してDAGs、、カスタムプラグイン、依存関係を開発およびテストできますMWAA。
• を実行するにはCLI、「」のaws-mwaa-local-runner「」を参照してください GitHub。

Python 依存関係の管理

387

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール
次のセクションでは、 PyPi.org 要件ファイル形式 に従って Python 依存関係をインストールするさ
まざまな方法について説明します。

オプション 1: Python Package インデックスからの Python 依存関係
次のセクションでは、requirements.txt ファイルの Python Package インデックスから Python
依存関係を指定する方法について説明します。
Apache Airflow v2
1.

ローカルでテストします。requirements.txt ファイルを作成する前に、ライブラリを繰り返し追加してパッケージとバージョンの適切な組み合わせを見つけてください。Amazon
MWAACLIユーティリティを実行するには、「」のaws-mwaa-local-runner「」を参照してく
ださい GitHub。

2.

Apache Airflow パッケージのエクストラを確認してください。Amazon で Apache Airflow v2にインストールされているパッケージのリストを表示するにはMWAA、 GitHub ウェブサイ
トの「Amazon MWAA local runnerrequirements.txt」を参照してください。

3.

制約ステートメントを追加します。Apache Airflow v2 環境用の制約ファイルを
requirements.txt ファイルの先頭に追加します。Apache Airflow の制約ファイルには、Apache Airflow のリリース時点で利用可能なプロバイダーのバージョンが指定されています。
Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める必要があります。制約を指定しない場合、Amazon MWAAは要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するために制約を指定します。
次の例では、{environment-version} 環境のバージョン番号、および {Pythonversion} ご使用の環境と互換性のある Python のバージョンを使用します。
Apache Airflow 環境と互換性のある Python のバージョンについては、「Apache Airflow
バージョン」を参照してください。
--constraint "https://raw.githubusercontent.com/apache/airflow/
constraints-{Airflow-version}/constraints-{Python-version}.txt"

PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

388

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

制約ファイルが xyz==1.0 パッケージが環境内の他のパッケージと互換性がないと判断した
場合、pip3 install は環境に互換性のないライブラリがインストールされるのを防ぐた
めに失敗しま す。パッケージのインストールに失敗した場合、各 Apache Airflow コンポー
ネント (スケジューラ、ワーカー、ウェブサーバー) のエラーログを、対応するログストリー
ムで CloudWatch Logs に表示できます。ログタイプの詳細については、「the section called“Airflow ログの表示”」を参照してください。
4.

Apache Airflow パッケージ。パッケージエクストラとバージョン (==) を追加します。これにより、同じ名前で異なるバージョンのパッケージが環境にインストールされるのを防ぐことができます。
apache-airflow[package-extra]==2.5.1

5.

Python ライブラリ パッケージ名とバージョン (==) を requirements.txt ファイルに追加します。これにより、PyPi.org からの将来の重大な更新が自動的に適用されないようにできます。
library == version

Example Boto3 と psycopg2-binary
この例は、デモンストレーションのみを目的としています。boto と psycopg2 のバイナリラ
イブラリは Apache Airflow v2 のベースインストールに含まれており、requirements.txt
ファイルで指定する必要はありません。
boto3==1.17.54
boto==2.49.0
botocore==1.20.54
psycopg2-binary==2.8.6

バージョンなしでパッケージが指定されている場合、Amazon は PyPi.org から最新バージョンのパッケージMWAAをインストールします。このバージョンは、お客様のrequirements.txt 内の他のパッケージと競合する可能性があります。
Apache Airflow v1
1.

ローカルでテストします。requirements.txt ファイルを作成する前に、ライブラリを繰り返し追加してパッケージとバージョンの適切な組み合わせを見つけてください。Amazon

PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

389

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

MWAACLIユーティリティを実行するには、「」のaws-mwaa-local-runner「」を参照してく
ださい GitHub。
2.

Airflow パッケージのエクストラを確認してください。Apache Airflow v1.10.12 で利用可能なパッケージのリストは、https://raw.githubusercontent.com/apache/「airflow/
constraints-1.10.12/constraints-3.7.txt」で確認してください。

3.

制約ファイルを追加します。Apache Airflow v1.10.12 の制約ファイルを
requirements.txt ファイルの先頭に追加します。制約ファイルが xyz==1.0 パッケージが環境内の他のパッケージと互換性がないと判断した場合、pip3 install は環境に互換性のないライブラリがインストールされるのを防ぐために失敗しま す。
--constraint "https://raw.githubusercontent.com/apache/airflow/
constraints-1.10.12/constraints-3.7.txt"

4.

Apache Airflow v1.10.12 パッケージ。Airflow パッケージエクストラと Apache Airflow
v1.10.12 バージョン (==) を追加します。これにより、同じ名前で異なるバージョンのパッ
ケージが環境にインストールされるのを防ぐことができます。
apache-airflow[package]==1.10.12

Example セキュアシェル (SSH）
次のサンプルrequirements.txtファイルは、Apache Airflow v1.10.12 SSH用に をインス
トールします。
apache-airflow[ssh]==1.10.12

5.

Python ライブラリ パッケージ名とバージョン (==) を requirements.txt ファイルに追加します。これにより、PyPi.org からの将来の重大な更新が自動的に適用されないようにできます。
library == version

Example Boto3
次の例では、requirements.txt ファイルは、Apache Airflow v1.10.12 用の Boto3 ライブ
ラリをインストールします。
boto3 == 1.17.4

PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

390

Amazon Managed Workflows for Apache Airflow

ユーザーガイドバージョンなしでパッケージが指定されている場合、Amazon は PyPi.org から最新バージョンのパッケージMWAAをインストールします。このバージョンは、お客様のrequirements.txt 内の他のパッケージと競合する可能性があります。

オプション 2: Python wheel (.whl)
Python wheel は、コンパイルされたアーティファクトをライブラリに同梱するために設計されたパッケージ形式です。Amazon に依存関係をインストールする方法として、ホイールパッケージには
いくつかの利点がありますMWAA。
• より高速なインストール — WHL ファイルは 1 つの としてコンテナにコピーされZIP、それぞれを
ダウンロードしなくてもローカルにインストールされます。
• より少ないコンフリクト — パッケージのバージョン互換性を事前に判断できます。その結果、pip が互換性のあるバージョンを再帰的に調べる必要がなくなります。
• 耐障害性の向上 — 外部でホストされたライブラリでは、ダウンストリームの要件が変更され、Amazon MWAA環境のコンテナ間でバージョンに互換性がなくなる可能性があります。依存関係を外部ソースに依存しないことで、各コンテナがいつインスタンス化されたかに関係なく、上のすべてのコンテナに同じライブラリが割り当てられます。
requirements.txt の Python wheel アーカイブ (.whl) から Python 依存関係をインストールするには、次の方法をお勧めします。
方法• Amazon S3 バケット上の plugins.zip ファイルを使用する• でホストされているWHLファイルの使用 URL• からのWHLファイルの作成 DAG
Amazon S3 バケット上の plugins.zip ファイルを使用する
Apache Airflow スケジューラ、ワーカー、ウェブサーバー (Apache Airflow v2.2.2 以降用) は、の環境の AWSマネージド Fargate コンテナで起動時にカスタムプラグインを探します/usr/
local/airflow/plugins/*。このプロセスは、Amazon MWAAの for Python pip3 install-r requirements.txt の依存関係と Apache Airflow サービスの起動の前に開始されます。plugins.zip ファイルは、環境の実行中に継続的に変更したくないファイルや、 を書き込む

PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

391

Amazon Managed Workflows for Apache Airflow

ユーザーガイドユーザーにアクセス権を付与したくないファイルに使用されますDAGs。例えば、Python ライブラ
リのホイールファイル、証明書PEMファイル、設定YAMLファイルなどです。
次のセクションでは、plugins.zip ファイルにあるホイールを Amazon S3 バケットにインストー
ルする方法について説明します。
1.

必要なWHLファイルをダウンロードします。Amazon MWAA local-runner または別の Amazon
Linux 2 コンテナrequirements.txtの既存の pip downloadで を使用して、必要な Python
wheel ファイルを解決してダウンロードできます。
$ pip3 download -r "$AIRFLOW_HOME/dags/requirements.txt" -d "$AIRFLOW_HOME/plugins"$ cd "$AIRFLOW_HOME/plugins"$ zip "$AIRFLOW_HOME/plugins.zip" *2.

requirements.txt でパスを指定します。以下に示すように、requirements.txt の先頭に -find-links を使用してプラグインディレクトリを指定し、pip に他のソースからインストー
ルしないように --no-index を用いて指示します。
--find-links /usr/local/airflow/plugins--no-index

Example requirements.txt 内のホイール
次の例では、Amazon S3 バケットのルートにある plugins.zip ファイルにホイールをアップロードしたことを前提としています。例:--find-links /usr/local/airflow/plugins--no-index
numpy

Amazon MWAA は pluginsフォルダからnumpy-1.20.1-cp37-cp37mmanylinux1_x86_64.whlホイールを取得し、環境にインストールします。
でホストされているWHLファイルの使用 URL
次のセクションでは、 でホストされているホイールをインストールする方法について説明しま
すURL。は、パブリックにアクセス可能であるか、Amazon MWAA環境にVPC指定したカスタム
Amazon 内からアクセス可能であるURL必要があります。
PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

392

Amazon Managed Workflows for Apache Airflow•

ユーザーガイドを指定しますURL。のホイールURLに を指定しますrequirements.txt。
Example パブリックのホイールアーカイブ URL
次の例では、公開サイトからホイールをダウンロードします。
--find-links https://files.pythonhosted.org/packages/--no-index

Amazon MWAA は、URL指定した からホイールを取得し、環境にインストールします。
Note
URLs は、Amazon v2.2.2 MWAA 以降で要件をインストールするプライベートウェブ
サーバーからアクセスできません。

からのWHLファイルの作成 DAG
Apache Airflow v2.2.2 以降を使用するプライベートウェブサーバーがあり、環境が外部リポジトリにアクセスできないために要件をインストールできない場合は、以下を使用して既存の Amazon
MWAA要件DAGを取得し、Amazon S3 にパッケージ化できます。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
S3_BUCKET = 'my-s3-bucket'
S3_KEY = 'backup/plugins_whl.zip'
with DAG(dag_id="create_whl_file", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
cli_command = BashOperator(
task_id="bash_command",bash_command=f"mkdir /tmp/whls;pip3 download -r /usr/local/airflow/
requirements/requirements.txt -d /tmp/whls;zip -j /tmp/plugins.zip /tmp/whls/*;aws s3
cp /tmp/plugins.zip s3://{S3_BUCKET}/{S3_KEY}")を実行したらDAG、この新しいファイルを Amazon MWAA として使用します。plugins.zipオ
プションで、他のプラグインにパッケージ化されています。次に、 を追加--no-indexせず
PyPi.org 要件ファイル形式を使用した Python 依存関係のインストール

393

Amazon Managed Workflows for Apache Airflow

ユーザーガイドにrequirements.txt、 の前に --find-links /usr/local/airflow/pluginsと を更新します--constraint。
この方法では、同じライブラリをオフラインで使用できます。

オプション 3: プライベート PyPi/PEP-503 準拠リポジトリでホストされる Python 依
存関係
次のセクションでは、認証URLを使用してプライベートでホストされる Apache Airflow エクストラ
をインストールする方法について説明します。
1.

ユーザー名とパスワードを Apache Airflow 構成オプションとして追加します。例:• foo.user : YOUR_USER_NAME• foo.pass : YOUR_PASSWORD

2.

requirements.txt ファイルを作成します。次の例のプレースホルダーをプライベート に置
き換えURL、Apache Airflow 設定オプション として追加したユーザー名とパスワードに置き換えます。例:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com

3.

その他のライブラリを requirements.txt ファイルに追加します。例:--index-url https://${AIRFLOW__FOO__USER}:${AIRFLOW__FOO__PASS}@my.privatepypi.com
my-private-package==1.2.3

Amazon MWAAコンソールでのログの有効化
Amazon MWAA環境の実行ロールには、ログを CloudWatch Logs に送信するためのアクセス許可が必要です。実行ロールのアクセス権限を更新するには、「Amazon MWAA 実行ロール」を参照してください。
Apache Airflow ログは INFO、WARNING、ERROR または CRITICAL レベルで有効にできます。ログ
レベルを選択すると、Amazon はそのレベルと重要度の高いレベルのログMWAAを送信します。例
えば、 INFOレベルでログを有効にすると、Amazon MWAAはINFOログと WARNING、ERROR、および CRITICALログレベルを CloudWatch Logs に送信します。requirements.txt で受信したログをスケジューラーに表示できるように、INFO レベルで Apache Airflow ログを有効にすることをお勧めします。
Amazon MWAAコンソールでのログの有効化

394

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Logs コンソールでの CloudWatch ログの表示
ワークフローのスケジュール設定と dags フォルダーの解析を行うスケジューラーの Apache Airflow
ログを表示できます。次の手順では、Amazon MWAAコンソールでスケジューラのロググループを開き、Logs コンソールで Apache Airflow CloudWatch ログを表示する方法について説明します。
requirements.txt のログを表示するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[モニタリング] ペインで [Airflow スケジューラーロググループ] を選択します。

4.

[ログストリーム] の requirements_install_ip ログを選択します。

5.

/usr/local/airflow/.local/bin で環境にインストールされたパッケージのリストが表示されるはずです。例:
Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1))
Downloading https://files.pythonhosted.org/
packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/
appdirs-1.4.4-py2.py3-none-any.whl

Logs コンソールでの CloudWatch ログの表示

395

Amazon Managed Workflows for Apache Airflow

ユーザーガイドCollecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))

6.

パッケージのリストを確認し、インストール中にエラーが発生したパッケージがないか確認してください。何か問題が発生した場合、以下のようなエラーが表示されることがあります。
2021-03-05T14:34:42.731-07:00
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))

Apache Airflow UI でエラーを表示する
また、Apache Airflow UI をチェックして、エラーが別の問題に関連しているかどうかを確認することもできます。Amazon で Apache Airflow で発生する可能性のある最も一般的なエラーMWAAは次のとおりです。
Broken DAG: No module named x

Apache Airflow UI にこのエラーが表示される場合は、requirements.txt のファイルに必要な依存関係が欠けている可能性があります。

Apache Airflow へのログイン
Apache Airflow UI を表示するには、 AWS Identity and Access Management （IAM) の AWS アカウ
ントのApache Airflow UI アクセスポリシー: AmazonMWAAWebServerAccessアクセス許可が必要です。
Apache Airflow UI にアクセスするには1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[Airflow UI を開く] を選択します。

requirements.txt シナリオ例
requirements.txt では異なるフォーマットを組み合わせることができます。次の例では、さまざ
まな方法を組み合わせてエクストラをインストールしています。
Apache Airflow UI でエラーを表示する

396

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Example PyPi.org とパブリックの追加 URL
カスタム 503 準拠リポジトリ などのパブリック のパッケージに加えてURL、 PyPi.org PEP から
パッケージを指定する場合は、 --index-urlオプションを使用する必要がありますURLs。
aws-batch == 0.6
phoenix-letter >= 0.3--index-url http://dist.repoze.org/zope2/2.10/simple
zopelib

requirements.txt シナリオ例

397

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow のモニタリ
ングとメトリクス
モニタリングは、Amazon Managed Workflows for Apache Airflow と AWS ソリューションの信頼性、可用性、パフォーマンスを維持する上で重要な部分です。マルチポイント障害が発生した場合は、その障害をより簡単にデバッグできるように、 AWS ソリューションのすべての部分からモニタ
リングデータを収集することをお勧めします。このトピックでは AWS 、Amazon MWAA環境をモニタリングし、潜在的なイベントに対応するための リソースについて説明します。
Note
Apache Airflow のメトリクスとログ記録には、標準の Amazon CloudWatch 料金が適用されます。

Apache Airflow のモニタリングの詳細については、Apache Airflow ドキュメンテーションウェブサイ
トの「ログとモニタリング」を参照してください。
セクション• Amazon のモニタリングの概要 MWAA
• での監査ログの表示 AWS CloudTrail• Amazon での Airflow ログの表示 CloudWatch• Amazon でのダッシュボードとアラームのモニタリング MWAA
• の Apache Airflow v2 環境メトリクス CloudWatch• Amazon のコンテナ、キュー、データベースメトリクス MWAA

Amazon のモニタリングの概要 MWAA
このページでは、Amazon Managed Workflows for Apache Airflow 環境のモニタリングに使用される
AWS サービスについて説明します。
目次• Amazon CloudWatch の概要• AWS CloudTrail 概要
概要

398

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon CloudWatch の概要
CloudWatch は、 AWS サービスによって発行されたメトリクスとディメンションに基づいて統計を取得できる サービスのメトリクスリポジトリです。これらのメトリクスを使用してアラームを設定
し、統計を計算し、Amazon CloudWatch コンソールで環境の状態を評価するのに役立つダッシュ
ボードにデータを表示できます。
Apache Airflow は、Amazon Managed Workflows for Apache Airflow StatsD メトリクスを Amazonに送信するように既に設定されています CloudWatch。
詳細については、「Amazon とは CloudWatch」を参照してください。

AWS CloudTrail 概要
CloudTrail は、Amazon のユーザー、ロール、または のサービスによって実行されたアクションを記録する監査 AWS サービスですMWAA。によって収集された情報を使用して CloudTrail、Amazon
に対して行われたリクエストMWAA、リクエスト元の IP アドレス、リクエスト者、リクエスト日時、監査ログで利用可能な追加の詳細を確認できます。
詳細については、「 AWS CloudTrailとは」を参照してください。

での監査ログの表示 AWS CloudTrailAWS CloudTrail を作成すると、 AWS アカウントで が有効になります。Amazon Managed
Workflows for Apache Airflow など、IAMエンティティまたは AWS のサービスによって実行されたアクティビティを CloudTrail ログに記録します。これは CloudTrail イベントとして記録されます。 CloudTrail コンソールで過去 90 日間のイベント履歴を表示、検索、ダウンロードできます。 は、Amazon MWAAコンソールのすべてのイベントと、Amazon MWAA へのすべての呼び出しを CloudTrail キャプチャしますAPIs。GetEnvironment などの読み取り専用アクションやPublishMetrics アクションはキャプチャされません。このページでは、 CloudTrail を使用してAmazon のイベントをモニタリングする方法について説明しますMWAA。
目次• での証跡の作成 CloudTrail• イベント履歴を使用した CloudTrail イベントの表示• CreateEnvironment のトレイルの例• 次のステップ
Amazon CloudWatch の概要

399

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

での証跡の作成 CloudTrail
Amazon のイベントなど、 AWS アカウント内のイベントの継続的な記録を表示するには、証跡を作成する必要がありますMWAA。証跡により CloudTrail 、 はログファイルを Amazon S3 バケットに配信できます。証跡を作成しない場合でも、 CloudTrail コンソールで利用可能なイベント履歴を表示できます。例えば、 で収集された情報を使用して CloudTrail、Amazon に対して行われたリクエ
ストMWAA、リクエスト元の IP アドレス、リクエスト者、リクエスト日時などの詳細を確認できます。詳細については、AWS 「アカウントの証跡の作成」を参照してください。

イベント履歴を使用した CloudTrail イベントの表示
イベント履歴を表示することで、過去 90 日間の運用インシデントとセキュリティインシデントをCloudTrail コンソールでトラブルシューティングできます。例えば、 AWS アカウント内のリソース(IAMユーザーや他の AWS リソースなど) の作成、変更、削除に関連するイベントをリージョンごとに表示できます。詳細については、「イベント履歴を使用した CloudTrail イベントの表示」を参照
してください。
1.

CloudTrail コンソールを開きます。

2.

[イベント履歴] を選択します。

3.

表示したいイベントを選択し、[イベントの詳細を比較] を選択します。

CreateEnvironment のトレイルの例「トレイル」は、指定した Amazon S3 バケットにイベントをログファイルとして配信するように設定できます。
CloudTrail ログファイルには、1 つ以上のログエントリが含まれます。イベントは任意のソース
からの単一のリクエストを表し、アクションの日時やリクエストパラメータなど、リクエスト
されたアクションに関する情報が含まれます。 CloudTrail ログファイルはパブリックAPIコールの順序付けられたスタックトレースではなく、特定の順序で表示されません。次の例では、アクセス許可がないために拒否された CreateEnvironment アクションのログエントリを示します。AirflowConfigurationOptions 内の値は、プライバシー保護のために編集されています。
{"eventVersion": "1.05","userIdentity": {"type": "AssumedRole","principalId": "00123456ABC7DEF8HIJK",
での証跡の作成 CloudTrail

400

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"arn": "arn:aws:sts::012345678901:assumed-role/root/myuser","accountId": "012345678901","accessKeyId": "","sessionContext": {"sessionIssuer": {"type": "Role","principalId": "00123456ABC7DEF8HIJK","arn": "arn:aws:iam::012345678901:role/user","accountId": "012345678901","userName": "user"},"webIdFederationData": {},"attributes": {"mfaAuthenticated": "false","creationDate": "2020-10-07T15:51:52Z"}}},"eventTime": "2020-10-07T15:52:58Z","eventSource": "airflow.amazonaws.com","eventName": "CreateEnvironment","awsRegion": "us-west-2","sourceIPAddress": "205.251.233.178","userAgent": "PostmanRuntime/7.26.5","errorCode": "AccessDenied","requestParameters": {"SourceBucketArn": "arn:aws:s3:::my-bucket","ExecutionRoleArn": "arn:aws:iam::012345678901:role/AirflowTaskRole","AirflowConfigurationOptions": "***","DagS3Path": "sample_dag.py","NetworkConfiguration": {"SecurityGroupIds": ["sg-01234567890123456"],"SubnetIds": ["subnet-01234567890123456","subnet-65432112345665431"]},"Name": "test-cloudtrail"},"responseElements": {"message": "Access denied."},

CreateEnvironment のトレイルの例

401

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"requestID": "RequestID","eventID": "EventID","readOnly": false,"eventType": "AwsApiCall","recipientAccountId": "012345678901"}

次のステップ• サポートされている AWS サービスと統合 の CloudTrail ログで収集されたイベントデータ用に他の サービスを設定する方法について説明します。 CloudTrail• が新しいログファイルを Amazon S3 バケットに CloudTrail 発行するときに通知を受ける方法については、「 の Amazon SNS 通知の設定」を参照してください CloudTrail。

Amazon での Airflow ログの表示 CloudWatch
Amazon MWAAは Apache Airflow ログを Amazon に送信できます CloudWatch。追加のサードパー
ティツールを必要とせずに、Apache Airflow のタスクの遅延やワークフローエラーを簡単に特定するために、単一の場所から複数の環境のログを表示できます。Apache Airflow 処理、タスク、ウェ
ブサーバー、ワーカーログを で表示するにはDAG、Amazon Managed Workflows for Apache Airflow
コンソールで Apache Airflow ログを有効にする必要があります CloudWatch。
目次• 料金• 開始する前に• ログタイプ• Apache Airflow ログを有効にする• Apache Airflow ログを表示する• スケジューラーログの例• 次のステップ

料金• Standard CloudWatch Logs の料金が適用されます。詳細については、「 のCloudWatch 料金」を参照してください。
次のステップ402

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

開始する前に• でログを表示できるロールが必要です CloudWatch。詳細については、「Amazon MWAA環境へのアクセス」を参照してください。

ログタイプ
Amazon MWAA は、有効にした Airflow ログ記録オプションごとにロググループを作成し、環境に関連付けられた CloudWatch ロググループにログをプッシュします。ロググループの名前は以下の形式に従います: YourEnvironmentName-LogType たとえば、お使いの環境に Airflowv202-Public という名前が付けられている場合、Apache Airflow タスクログは Airflow-v202Public-Task に送信されます。
ログタイプ

説明
DAGProces

DAG プロセッサマネージャー (DAGファイルを処理するスケジューラの一部) のログ。

YourEnvironmentName-

Scheduler

Airflow スケジューラーが生成するログ。

YourEnvironmentName-

Task

タスクは、 がDAG生成する をログに記録します。

YourEnvironmentName-

WebServer

Airflow ウェブインターフェイスが生成するロ
グ。

YourEnvironmentName-

Worker

ワークフローとDAG実行の一部として生成されたログ。

YourEnvironmentNamesing

Apache Airflow ログを有効にする
Apache Airflow ログは INFO、WARNING、ERROR または CRITICAL レベルで有効にできます。ログ
レベルを選択すると、Amazon はそのレベルと重要度の高いレベルのログMWAAを送信します。例
えば、 INFOレベルでログを有効にすると、Amazon MWAAはINFOログと WARNING、ERROR、および CRITICALログレベルを CloudWatch Logs に送信します。
1.

Amazon MWAAコンソールで環境ページを開きます。

開始する前に403

Amazon Managed Workflows for Apache Airflow

2.

環境を選択します。

3.

[編集] を選択します。

4.

[Next (次へ)] を選択します。

5.

以下のロギングオプションのうち 1 つ以上を選択します。
a.

[モニタリング] ペインで [Airflow スケジューラーロググループ] を選択します。

b.

[監視] ペインで [Airflow ウェブサーバーのロググループ] を選択します。

c.

[監視] ペインで [Airflow ワーカーロググループ] を選択します。

d.

モニタリングペインで Airflow DAG処理ロググループを選択します。

e.

[監視] ペインで [Airflow タスクロググループ] を選択します。

f.

[ログレベル] でログレベルを選択します。

6.

[Next (次へ)] を選択します。

7.

[Save] を選択します。

ユーザーガイド

Apache Airflow ログを表示する
次のセクションでは、コンソールで Apache Airflow ログを表示する方法について説明します
CloudWatch 。
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

3.

[モニタリング] ペインでロググループを選択します。

4.

ログストリームを選択します。

スケジューラーログの例
ワークフローのスケジュール設定と dags フォルダーの解析を行うスケジューラーの Apache Airflow
ログを表示できます。次の手順では、Amazon MWAAコンソールでスケジューラのロググループを開き、Logs コンソールで Apache Airflow CloudWatch ログを表示する方法について説明します。
requirements.txt のログを表示するには
1.

Amazon MWAAコンソールで環境ページを開きます。

2.

環境を選択します。

Apache Airflow ログを表示する

404

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

3.

[モニタリング] ペインで [Airflow スケジューラーロググループ] を選択します。

4.

[ログストリーム] の requirements_install_ip ログを選択します。

5.

/usr/local/airflow/.local/bin で環境にインストールされたパッケージのリストが表示されるはずです。例:
Collecting appdirs==1.4.4 (from -r /usr/local/airflow/.local/bin (line 1))
Downloading https://files.pythonhosted.org/
packages/3b/00/2344469e2084fb28kjdsfiuyweb47389789vxbmnbjhsdgf5463acd6cf5e3db69324/
appdirs-1.4.4-py2.py3-none-any.whl
Collecting astroid==2.4.2 (from -r /usr/local/airflow/.local/bin (line 2))

6.

パッケージのリストを確認し、インストール中にエラーが発生したパッケージがないか確認してください。何か問題が発生した場合、以下のようなエラーが表示されることがあります。
2021-03-05T14:34:42.731-07:00
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))
No matching distribution found for LibraryName==1.0.0 (from -r /usr/local/
airflow/.local/bin (line 4))

次のステップ• CloudWatch アラームの設定方法については、「Amazon アラームの使用 CloudWatch 」を参照してください。
• ダッシュボードの作成方法については、 CloudWatch 「 ダッシュボードの使用 CloudWatch 」を参照してください。

Amazon でのダッシュボードとアラームのモニタリング MWAA
Amazon でカスタムダッシュボードを作成し CloudWatch 、特定のメトリクスのアラームを追加して、Amazon Managed Workflows for Apache Airflow 環境のヘルスステータスをモニタリングできます。ダッシュボードにアラームが表示されると、 ALARM状態になると赤に変わるため、Amazon
MWAA環境のヘルスを事前にモニタリングしやすくなります。
Apache Airflow は、プロセス数、DAGバッグサイズ、現在実行中のタスク、タスクの失敗、成功など、多数のDAGプロセスのメトリクスを公開します。環境を作成すると、Airflow は Amazon
MWAA環境のメトリクスを に自動的に送信するように設定されます CloudWatch。このページで次のステップ405

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

は、Amazon MWAA環境の で Airflow メトリクス CloudWatch のヘルスステータスダッシュボードを作成する方法について説明します。
目次• メトリクス• アラーム状態の概要• カスタムダッシュボードとアラームの例• これらのメトリクスについて• ダッシュボードについて• AWS チュートリアルの使用• の使用 AWS CloudFormation• メトリクスとダッシュボードの削除• 次のステップ

メトリクス
お使いの Apache Airflow バージョンで使用できるすべてのメトリクスについて、カスタムダッシュ
ボードとアラームを作成できます。各メトリクスは、Apache Airflow キーパフォーマンスインジケー
タ () に対応しますKPI。メトリクスのリストを表示するには、以下を参照してください。
• の Apache Airflow v2 環境メトリクス CloudWatch

アラーム状態の概要
メトリクスアラームには次の状態があります。
• OK – メトリクスや式は、定義されているしきい値の範囲内です。
• ALARM – メトリクスまたは式が、定義されているしきい値を超えています。
• INSUFFICIENT_DATA – アラームが開始直後であるか、メトリクスが利用できないか、メトリク
ス用のデータが不足しているため、アラームの状態を判定できません。

カスタムダッシュボードとアラームの例
Amazon MWAA環境用に選択したメトリクスのグラフを表示するカスタムモニタリングダッシュ
ボードを構築できます。
メトリクス

406

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

これらのメトリクスについて
以下のリストでは、このセクションのチュートリアルとテンプレート定義によってカスタムダッシュ
ボードに作成された各メトリクスについて説明します。
• QueuedTasks - キューに入れられた状態のタスクの数。executor.queued_tasks Apache
Airflow メトリクスに対応します。
• TasksPending - エグゼキュターで保留中のタスクの数。scheduler.tasks.pending Apache
Airflow メトリクスに対応します。
Note
Apache Airflow v2.2 以上には適用されません。
• RunningTasks - エグゼキュターで実行されているタスクの数。executor.running_tasks
Apache Airflow メトリクスに対応します。
• SchedulerHeartbeat - スケジューラジョブで Apache Airflow が実行するチェックインの数。scheduler_heartbeat Apache Airflow メトリクスに対応します。
• TotalParseTime - すべてのDAGファイルを 1 回スキャンしてインポートするのにかかった秒数。dag_processing.total_parse_time Apache Airflow メトリクスに対応します。

ダッシュボードについて
以下の画像は、このセクションのチュートリアルとテンプレート定義によって作成された監視ダッ
シュボードを示しています。

カスタムダッシュボードとアラームの例

407

Amazon Managed Workflows for Apache Airflow

ユーザーガイドAWS チュートリアルの使用
次の AWS チュートリアルを使用して、現在デプロイされている Amazon MWAA環境のヘルスス
テータスダッシュボードを自動的に作成できます。また、すべての Amazon MWAA環境にわたって、異常なワーカーやスケジューラのハートビート障害に対する CloudWatch アラームも作成します。

カスタムダッシュボードとアラームの例

408

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• CloudWatch Amazon のダッシュボード自動化 MWAAの使用 AWS CloudFormation
このセクションの AWS CloudFormation テンプレート定義を使用して、 でモニタリングダッシュ
ボードを作成し CloudWatch、 CloudWatch コンソールにアラームを追加して、メトリクスが特定のしきい値を超えたときに通知を受け取ることができます。このテンプレート定義を使用してスタックを作成するには、「コンソールでのスタックの作成 AWS CloudFormation」を参照してください。
ダッシュボードにアラームを追加するには、「アラームの使用」を参照してください。
AWSTemplateFormatVersion: "2010-09-09"
Description: Creates MWAA Cloudwatch Dashboard
Parameters:
DashboardName:
Description: Enter the name of the CloudWatch Dashboard
Type: String
EnvironmentName:
Description: Enter the name of the MWAA Environment
Type: String
Resources:
BasicDashboard:
Type: AWS::CloudWatch::Dashboard
Properties:
DashboardName: !Ref DashboardName
DashboardBody:
Fn::Sub: '{"widgets": [{"type": "metric","x": 0,"y": 0,"width": 12,"height": 6,"properties": {"view": "timeSeries","stacked": true,"metrics": [["AmazonMWAA","QueuedTasks","Function","Executor",
カスタムダッシュボードとアラームの例

409

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Environment","${EnvironmentName}"]],"region": "${AWS::Region}","title": "QueuedTasks ${EnvironmentName}","period": 300}},{"type": "metric","x": 0,"y": 6,"width": 12,"height": 6,"properties": {"view": "timeSeries","stacked": true,"metrics": [["AmazonMWAA","RunningTasks","Function","Executor","Environment","${EnvironmentName}"]],"region": "${AWS::Region}","title": "RunningTasks ${EnvironmentName}","period": 300}},{"type": "metric","x": 12,"y": 6,"width": 12,"height": 6,"properties": {"view": "timeSeries","stacked": true,"metrics": [[カスタムダッシュボードとアラームの例

410

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"AmazonMWAA","SchedulerHeartbeat","Function","Scheduler","Environment","${EnvironmentName}"]],"region": "${AWS::Region}","title": "SchedulerHeartbeat ${EnvironmentName}","period": 300}},{"type": "metric","x": 12,"y": 0,"width": 12,"height": 6,"properties": {"view": "timeSeries","stacked": true,"metrics": [["AmazonMWAA","TasksPending","Function","Scheduler","Environment","${EnvironmentName}"]],"region": "${AWS::Region}","title": "TasksPending ${EnvironmentName}","period": 300}},{"type": "metric","x": 0,"y": 12,"width": 24,"height": 6,"properties": {カスタムダッシュボードとアラームの例

411

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"view": "timeSeries","stacked": true,"region": "${AWS::Region}","metrics": [["AmazonMWAA","TotalParseTime","Function","DAG Processing","Environment","${EnvironmentName}"]],"title": "TotalParseTime ${EnvironmentName}","period": 300
}
}
]
}'

メトリクスとダッシュボードの削除
Amazon MWAA環境を削除すると、対応するダッシュボードも削除されます。 CloudWatch メトリ
クスは 15 (15) か月間保存され、削除できません。 CloudWatch コンソールでは、メトリクスの検索
が最後に取り込まれた 2 週間後に制限され、Amazon MWAA環境で最新のインスタンスが表示されるようになります。詳細については、「Amazon CloudWatch FAQs」を参照してください。

次のステップ• 環境の Amazon Aurora PostgreSQL メタデータデータベースをクエリし、カスタムメトリクスを
CloudWatch の に発行DAGする を作成する方法について説明しますDAG を使用した でのカスタ
ムメトリクスの書き込み CloudWatch。

の Apache Airflow v2 環境メトリクス CloudWatch
Apache Airflow v2 は、Amazon Managed Workflows for Apache Airflow 環境の StatsD メトリクスを収集して Amazon に送信するように既に設定されています CloudWatch。Apache Airflow が送信する
メトリクスの全リストは、「Apache Airflow リファレンスガイド」のメトリクスページにあります。
このページでは、 で利用可能な Apache Airflow メトリクスと CloudWatch、 CloudWatch コンソー
ルでメトリクスにアクセスする方法について説明します。
メトリクスとダッシュボードの削除

412

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

目次• 用語• ディメンション• CloudWatch コンソールでのメトリクスへのアクセス• で利用可能な Apache Airflow メトリクス CloudWatch• Apache Airflow カウンター• Apache Airflow Gauges• Apache Airflow Timers• どのメトリクスを報告するかを選択する• 次のステップ

用語
名前空間
名前空間は、 AWS サービスの CloudWatch メトリクスのコンテナです。Amazon の場合
MWAA、名前空間は Amazon MWAAです。
CloudWatch メトリクス
CloudWatch メトリクスは、 に固有の時系列のデータポイントのセットを表します
CloudWatch。
Apache Airflow メトリクス
Apache Airflow 固有のメトリクス。
ディメンション
ディメンションは、メトリクスのアイデンティティの一部である名前と値のペアです。
単位
統計には、測定単位があります。Amazon の場合MWAA、単位にはカウント 、秒 、ミリ秒 が含まれます。Amazon の場合MWAA、単位は元の Airflow メトリクスの単位に基づいて設定されま
す。

用語

413

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ディメンション
このセクションでは、 CloudWatch の Apache Airflow メトリクスのディメンショングループについて説明します CloudWatch。
ディメンション

説明

DAG

特定の Apache Airflow
DAG名を示します。

DAG ファイル名

特定の Apache Airflow
DAGファイル名を示します。

機能

このディメンションは、でのメトリクスのグループ化を改善するために使用されます CloudWatch。

ジョブ

スケジューラーによって実行される Apache
Airflow ジョブを示します。常にジョブという価
値がある。

演算子

特定の Apache Airflow オ
ペレーターを示します。

プール

特定の Apache Airflow
ワーカープールを示します。

タスク

特定の Apache Airflow タ
スクを示します。

HostName

実行中の特定の Apache
Airflow プロセスのホスト名を示します。

ディメンション

414

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch コンソールでのメトリクスへのアクセス
このセクションでは、特定の CloudWatch の でパフォーマンスメトリクスにアクセスする方法について説明しますDAG。
ディメンションのパフォーマンスメトリクスを表示する方法
1.

CloudWatch コンソールでメトリクスページを開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

AmazonMWAA 名前空間を選択します。

4.

[すべてのメトリクス] タブでディメンションを選択します。例えば、DAG、環境 などです。

5.

ディメンションの CloudWatch メトリクスを選択します。例えば、 TaskInstanceSuccessesまたは ですTaskInstanceDuration。[すべての検索結果をグラフ化] を選択します。

6.

グラフ化されたメトリクスタブを選択すると、DAG、環境、タスク などの Apache Airflow メト
リクスのパフォーマンス統計が表示されます。

で利用可能な Apache Airflow メトリクス CloudWatch
このセクションでは、 に送信される Apache Airflow メトリクスとディメンションについて説明しま
す CloudWatch。

Apache Airflow カウンター
このセクションの Apache Airflow メトリクスには、Apache Airflow カウンターに関するデータが含まれています。
CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

SLAMissed

sla_missed

カウント

関数、スケ
ジュール

Note
Apache Airflow v2.4.3
以上で利用可能です。

CloudWatch コンソールでのメトリクスへのアクセス

415

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

FailedSLACallback

sla_callb
ack_notif
ication_failure

カウント

関数、スケ
ジュール

dataset.u
pdates

カウント

関数、スケ
ジュール

dataset.orphaned

カウント

関数、スケ
ジュール

celery.ex
ecute_com
mand.failure

カウント

関数、Celery

Note
Apache Airflow v2.4.3
以上で利用可能です。
更新
Note
Apache Airflow v2.6.3
以上で利用可能です。
Orphaned
Note
Apache Airflow v2.6.3
以上で利用可能です。
FailedCeleryTaskExecution
Note
Apache Airflow v2.4.3
以上で利用可能です。

で利用可能な Apache Airflow メトリクス CloudWatch

416

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

FilePathQueueUpdateCount

dag_processing.file_path_qu
eue_updat
e_count

カウント

関数、スケ
ジュール

CriticalSectionBusy

scheduler.critical_section_
busy

カウント

関数、スケ
ジュール

DagBagSize

dagbag_size

カウント

関数、DAG処
理中

DagCallbackExceptions

dag.callb
ack_excep
tions

カウント

DAG、すべてF ailedSLAEmail試行

sla_email_notifica
tion_failure

カウント

関数、スケ
ジュール

TaskInstanceFinishedti.finish.
{dag_id}.
{task_id}.
{state}

カウント

DAG、{dag_
id}

Note
Apache Airflow v2.6.3
以上で利用可能です。

Task,{task_id}
State, {state}

JobEnd{job_name}_endで利用可能な Apache Airflow メトリクス CloudWatch

カウント

Job,
{job_name}417

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

JobHeartbeatFailure{job_name}_heartbe
at_failure

カウント

Job,
{job_name}

JobStart{job_name}_startカウント

Job,{job_name}ManagerStalls

dag_processing.man
ager_stalls

カウント

関数、DAG処
理中OperatorFailures

operator_
failures_{operator_name}

カウント

Operator,{operator_name}

OperatorSuccesses

operator_successes_{operato
r_name}カウント

Operator,{operator_name}

OtherCallbackCount

dag_processing.oth
er_callba
ck_count

カウント

関数、スケ
ジュール

プロセス

dag_processing.pro
cesses

カウント

関数、DAG処
理中

SchedulerHeartbeatscheduler_heartbeat

カウント

関数、スケ
ジュール

Note
Apache Airflow v2.6.3
以上で利用可能です。

で利用可能な Apache Airflow メトリクス CloudWatch

418

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

StartedTaskInstances

ti.start.
{dag_id}.
{task_id}

カウント

DAG、すべて

dag_processing.sla_callback_count

カウント

関数、スケ
ジュール

SlaCallbackCount

タスク、すべて

Note
ApacheAirflowv2.6.3
以上
で利
用可
能で
す。
TasksKilledExternallyscheduler.tasks.ki
lled_exte
rnally

カウント

関数、スケ
ジュール

TaskTimeoutError

celery.ta
sk_timeout_error

カウント

関数、Celeryで利用可能な Apache Airflow メトリクス CloudWatch

419

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

TaskInstanceCreate
dUsingOperator

task_inst
ance_crea
ted-{oper
ator_name}カウント

Operator,{operator_name}

TaskInstancePreviouslySucce
eded

previousl
y_succeeded

カウント

DAG、すべて

TaskInstanceFailures

ti_failure

カウント

タスク、すべてDAG、すべて
タスク、すべて

TaskInstanceSuccesses

ti_success

カウント

DAG、すべて
タスク、すべてTaskRemovedFromDAG

task_remo
ved_from_
dag.{dag_id}

カウント

DAG、{dag_
id}

TaskRestoredToDAG

task_rest
ored_to_dag.
{dag_id}

カウント

DAG、{dag_id}

TriggersSucceeded

triggers.
succeeded

カウント

関数、トリ
ガー

Note
Apache Airflow v2.7.2
以上で利用可能です。

で利用可能な Apache Airflow メトリクス CloudWatch

420

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

TriggersFailed

triggers.failed

カウント

関数、トリ
ガー

triggers.
blocked_main_thread

カウント

関数、トリ
ガー

triggerer_
ハートビート

カウント

関数、トリ
ガー

Note
Apache Airflow v2.7.2
以上で利用可能です。
TriggersBlockedMainThread
Note
Apache Airflow v2.7.2
以上で利用可能です。
TriggerHeartbeat
Note
Apache Airflow v2.8.1
以降で使用できます。

で利用可能な Apache Airflow メトリクス CloudWatch

421

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メトリクス

ApacheAirflow メト
リクス

単位

ディメンショ
ン

TaskInstanceCreate
dUsingOperator

airflow.t
ask_insta
nce_creat

カウント

演算子、{operator_name}

ed_{operator_name}
Note
ApacheAirflowv2.7.2
以上
で利
用可
能で
す。
ZombiesKilled

zombies_k
illed

カウント

DAG、すべて
タスク、すべてApache Airflow Gauges
このセクションの Apache Airflow メトリクスには、Apache Airflow ゲージに関するデータが含まれています。
CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンションDAGFileRefreshError

dag_file_
refresh_error

カウント

関数、DAG処理
中で利用可能な Apache Airflow メトリクス CloudWatch

422

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

ImportErrors

dag_processing.imp
ort_errors

カウント

関数、DAG処理
中Exception
Failuressmart_sen
sor_opera
tor.exception_fail
ures

カウント

関数、スマー
トセンサーオペレーター

ExecutedTasks

smart_sen
sor_opera
tor.execu
ted_tasks

カウント

関数、スマー
トセンサーオペレーター

InfraFailuressmart_sen
sor_opera
tor.infra_failures

カウント

関数、スマー
トセンサーオペレーター

LoadedTasks

smart_sen
sor_opera
tor.loaded_tasks

カウント

関数、スマー
トセンサーオペレーター

TotalParseTime

dag_processing.tot
al_parse_time[秒]関数、DAG処理
中で利用可能な Apache Airflow メトリクス CloudWatch

423

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

Triggered
DagRuns

dataset.t
riggered_dagruns

カウント

関数、スケ
ジュール

triggers.

カウント

関数、トリガー

Note
ApacheAirflowv2.6.3 以
上で利用
可能です
。
TriggersRunningrunning。{hostname
Note}

HostName,{hostname}

ApacheAirflowv2.7.2 以
上で利用
可能です
。

で利用可能な Apache Airflow メトリクス CloudWatch

424

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

PoolDefer
redSlots

pool.defe
rred_slot

カウント

Pool, {pool_name}s.{pool_nam
Note

e}

ApacheAirflowv2.7.2 以
上で利用
可能です
。
DAGFilePr
ocessingL
astRunSec
ondsAgodag_processing.last_run.sec
onds_ago.
{dag_filename}[秒]

DAG ファイ
ル名、{dag_filename}

OpenSlots

executor.
open_slots

カウント

関数、エグゼキューター

OrphanedT
asksAdopted

scheduler.orphaned_tasks.adopted

カウント

関数、スケ
ジュール

OrphanedT
asksClearedscheduler.orphaned_tasks.cleared

カウント

関数、スケ
ジュール

PokedExceptionssmart_sen
sor_opera
tor.poked_exception

カウント

関数、スマー
トセンサーオペレーター

で利用可能な Apache Airflow メトリクス CloudWatch

425

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

PokedSuccesssmart_sen
sor_opera
tor.poked_success

カウント

関数、スマー
トセンサーオペレーター

PokedTasks

smart_sen
sor_opera
tor.poked_tasks

カウント

関数、スマー
トセンサーオペレーター

PoolFailurespool.open_slots.
{pool_name}

カウント

Pool, {pool_nam
e}

PoolStarv
ingTasks

pool.star
ving_tasks.
{pool_name}

カウント

Pool, {pool_name}

PoolOpenSlots

pool.open_slots.
{pool_name}

カウント

Pool, {pool_name}

PoolQueue
dSlotspool.queu
ed_slots.
{pool_name}

カウント

Pool, {pool_nam
e}

PoolRunni
ngSlotspool.runn
ing_slots.
{pool_name}

カウント

Pool, {pool_nam
e}Processor
Timeouts

dag_processing.pro
cessor_timeouts

カウント

関数、DAG処理
中QueuedTasks

executor.
queued_tasks

カウント

関数、エグゼキューター

RunningTasks

executor.
running_tasks

カウント

関数、エグゼキューター

で利用可能な Apache Airflow メトリクス CloudWatch

426

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

TasksExecutable

scheduler.tasks.ex
ecutable

カウント

関数、スケ
ジュール

TasksPending

scheduler.tasks.pending

カウント

関数、スケ
ジュール

TasksRunningscheduler.tasks.running

カウント

関数、スケ
ジュール

TasksStarving

scheduler.tasks.starving

カウント

関数、スケ
ジュール

TasksWith
outDagRunscheduler.tasks.wi
thout_dagrun

カウント

関数、スケ
ジュール

Note
ApacheAirflowv2.2 以上
には適用
されませ
ん。

Apache Airflow Timers
このセクションの Apache Airflow メトリクスには、Apache Airflow Timers に関するデータが含まれています。

で利用可能な Apache Airflow メトリクス CloudWatch

427

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

ディメンション

CollectDBDags

collect_db_dags

ミリ秒

関数、DAG処理
中

CriticalSectionDuration

scheduler.critical_section_
duration

ミリ秒

関数、スケ
ジュール

CriticalSectionQue
ryDuration

scheduler.critical_section_
query_duration

ミリ秒

関数、スケ
ジュール

DAGDepend
encyCheckdagrun.dependency-check.
{dag_id}

ミリ秒

DAG、{dag_id}

DAGDurati
onFaileddagrun.duration.failed.{dag
_id}

ミリ秒

DAG、{dag_id}

DAGDurati
onSuccessdagrun.duration.success.
{dag_id}

ミリ秒

DAG、{dag_id}

DAGFilePr
ocessingL
astDuration

dag_processing.las[秒]

DAG ファイ
ル名、{dag_filename}

Note
ApacheAirflow
v2.5.1 以
上で利用
可能です
。

で利用可能な Apache Airflow メトリクス CloudWatch

428

Amazon Managed Workflows for Apache Airflow

CloudWatch メ
トリクス

Apache Airflow
メトリクス

ユーザーガイド

単位

ディメンション

t_duration.{dag_fi
lename}DAGSchedu
leDelaydagrun.sc
hedule_delay.
{dag_id}

ミリ秒

DAG、{dag_id}

FirstTask
SchedulingDelaydagrun.{dag_id}.first_task_scheduling_delay

ミリ秒

DAG、{dag_id}

Scheduler
LoopDuration

scheduler.schedule
r_loop_duration

ミリ秒

関数、スケ
ジュール

dag.{dag_id}.
{task_id}.duration

ミリ秒

DAG、{dag_id}

Note
ApacheAirflow
v2.5.1 以
上で利用
可能です
。
TaskInsta
nceDuration

で利用可能な Apache Airflow メトリクス CloudWatch

Task, {task_id}429

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

CloudWatch メ
トリクス

Apache Airflow
メトリクス

単位

TaskInsta
nceQueued
Duration

ミリ秒
dag.{dag_id}.{task_id}.queued_durationディメンション

DAG、{dag_id}
Task, {task_id}

Note
ApacheAirflowv2.7.2 以
上で利用
可能です
。
TaskInsta
nceSchedu
ledDuration

ミリ秒
dag.{dag_id}.{task_id}.schedule
d_duration

DAG、{dag_id}
Task, {task_id}

Note
ApacheAirflowv2.7.2 以
上で利用
可能です
。

どのメトリクスを報告するかを選択する
次の Amazon MWAA設定オプションを使用して CloudWatch、Apache Airflow に出力される、またはApache Airflow によってブロックされる Apache Airflow メトリクスを選択できます。
• metrics.metrics_allow_list — 環境 CloudWatch から出力されるメトリクスを選択するために使用できるカンマ区切りプレフィックスのリスト。Apache Airflow で利用可能なメトリクスをどのメトリクスを報告するかを選択する

430

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

すべて送信させずに、要素のサブセットを選択させたい場合は、このオプションを使用してください。例えば、scheduler,executor,dagrun と指定します。
• metrics.metrics_block_list — リストの要素で始まるメトリクスを除外するための、カンマで区切られたプレフィックスのリスト。例えば、scheduler,executor,dagrun と指定します。
metrics.metrics_allow_list と metrics.metrics_block_list を両方構成した場合、Apache Airflow は metrics.metrics_block_list を無視します。metrics.metrics_block_list を構成して、metrics.metrics_allow_list を構成しなかった場合、Apache Airflow は metrics.metrics_block_list で指定した要素を除外します。
Notemetrics.metrics_allow_list および metrics.metrics_block_list設定オプショ
ンは、Apache Airflow v2.6.3 以降にのみ適用されます。Apache Airflow の以前のバージョン
では、metrics.statsd_block_list代わりに metrics.statsd_allow_listと を使用します。

次のステップ• で環境ヘルスメトリクスを公開するために使用される Amazon MWAAAPIオペレーションについて説明しますPublishMetrics。

Amazon のコンテナ、キュー、データベースメトリクス MWAA
Apache Airflow メトリクスに加えて、 を使用して Amazon Managed Workflows for Apache Airflow
環境の基盤となるコンポーネントをモニタリングできます。これにより CloudWatch、raw データを収集し、データを読み取り可能なほぼリアルタイムのメトリクスに加工できます。これらの環境メ
トリクスを使用すると、主要業績評価指標の可視性が高まり、環境の適切な規模を決定し、ワークフ
ローの問題をデバッグするのに役立ちます。これらのメトリクスは、Amazon でサポートされているすべての Apache Airflow バージョンに適用されますMWAA。
Amazon MWAA は、各 Amazon Elastic Container Service (Amazon ECS) コンテナと Amazon
Aurora PostgreSQL インスタンスの とCPUメモリ使用率、メッセージ数と最も古いメッセージの経
過時間に関する Amazon Simple Queue Service (Amazon SQS) メトリクス、データベース接続の次のステップ431

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Relational Database Service (Amazon RDS) メトリクス、ディスクキューの深さ、書き込み
オペレーション、レイテンシー、スループット、および Amazon RDS Proxy メトリクスを提供します。これらのメトリクスには、ベースワーカー、追加ワーカー、スケジューラー、およびウェブサー
バーの数も含まれます。
これらの統計は 15 か月間保持されるため、履歴情報にアクセスしてスケジュールが失敗した理由をより的確に把握し、根本的な問題をトラブルシューティングできます。また、特定のしきい値をモニタリングするアラームを設定し、しきい値に達したときに通知を送信したりアクションを実行したりできます。詳細については、「Amazon ユーザーガイド CloudWatch 」を参照してください。
トピック
• 用語
• ディメンション• CloudWatch コンソールでのメトリクスへのアクセス• メトリクスの一覧

用語
名前空間
名前空間は、 AWS サービスの CloudWatch メトリクスのコンテナです。Amazon の場合
MWAA、名前空間は ですAWS/MWAA。
CloudWatch メトリクス
CloudWatch メトリクスは、 に固有の時系列のデータポイントのセットを表します
CloudWatch。
ディメンション
ディメンションは、メトリクスのアイデンティティの一部である名前と値のペアです。
単位
統計には、測定単位があります。Amazon の場合MWAA、単位にはカウント が含まれます。

ディメンション
このセクションでは、 の Amazon MWAAメトリクスの CloudWatch ディメンショングループについて説明します CloudWatch。
用語432

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ディメンション

説明

クラスター

Amazon MWAA環境が Apache Airflow コン
ポーネントの実行に使用する、スケジュー
ラ、ワーカー、ウェブサーバーの最小 3 つのAmazon ECSコンテナのメトリクス。

キュー

スケジューラをワーカーから切り離す Amazon
SQSキューのメトリクス。ワーカーがメッセー
ジを読むと、そのメッセージは処理中と見なされ、他のワーカーは使用できません。12 時間の可視性タイムアウトまでにメッセージを削除しないと、他のワーカーがメッセージを読むことができるようになります。

データベースAmazon で使用される Aurora クラスターのメ
トリクスMWAA。これには、プライマリデータ
ベースインスタンスと読み取りオペレーションをサポートするリードレプリカのメトリクスが含まれます。Amazon MWAA は、 インスタン
スREADERと WRITERインスタンスの両方のデータベースメトリクスを発行します。

CloudWatch コンソールでのメトリクスへのアクセス
このセクションでは、 で Amazon MWAAメトリクスにアクセスする方法について説明します
CloudWatch。
ディメンションのパフォーマンスメトリクスを表示する方法
1.

CloudWatch コンソールでメトリクスページを開きます。

2.

AWS リージョンセレクタを使用して、リージョンを選択します。

3.

AWS/MWAA 名前空間を選択します。

4.

すべてのメトリクス タブで、ディメンションを選択します。たとえば、[クラスター]。

5.

ディメンションの CloudWatch メトリクスを選択します。例えば、 NumSchedulersまたは ですCPUUtilization。次に、[すべての検索結果をグラフ化] を選択します。

メトリクスへのアクセス

433

Amazon Managed Workflows for Apache Airflow

6.

ユーザーガイド[グラフ化されたメトリクス] タブを選択すると、パフォーマンスメトリクスが表示されます。

メトリクスの一覧
次の表に、Amazon のクラスター、キュー、データベースサービスメトリクスを示します
MWAA。Amazon 、Amazon ECS、SQSまたは Amazon から直接出力されるメトリクスの説明を表示するにはRDS、それぞれのドキュメントリンクを選択します。
トピック• クラスターメトリクス• データベースメトリクス• キューメトリクス• Application Load Balancer のメトリクス

クラスターメトリクス
以下のメトリクスは、各スケジューラー、ベースワーカー、追加ワーカー、ウェブサーバーに適用されます。各クラスターメトリクスの詳細と説明については、「Amazon ECSデベロッパーガイド」の「使用可能なメトリクスとディメンション」を参照してください。
名前空間

メトリクス

Unit

AWS/MWAA

CPUUtilization

割合 (%)AWS/MWAA

MemoryUtilization

割合 (%)

追加のワーカーコンテナとウェブサーバーコンテナの数を評価する
次の手順で説明するように、クラスターディメンションで提供されるコンポーネントメトリクスを使用して、特定の時点で環境が使用している追加のワーカーまたはウェブサーバーの数を評価できます。これを行うには、 CPUUtilizationまたは MemoryUtilizationメトリクスのいずれかをグラフ化
し、統計タイプをサンプル数 に設定します。結果の値は、AdditionalWorker コンポーネントのRUNNING タスク総数です。環境で使用される追加のワーカーインスタンスの数を理解することは、環境のスケーリング方法を判断し、追加のワーカーの数を最適化するのに役立ちます。

メトリクスの一覧

434

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Workersを使用して追加のワーカーの数を評価するには AWS Management Console
1.

AWS/MWAA 名前空間を選択します。

2.

[すべてのメトリクス] タブで、[クラスター] ディメンションを選択します。

3.

クラスターディメンションで、 に AdditionalWorkerCPUUtilizationまたはMemoryUtilizationメトリクスを選択します。

4.

[グラフ化したメトリクス] タブで、[期間] を [1 分] に、[統計] を [サンプル数] に設定します。

Web servers
を使用して追加のウェブサーバーの数を評価するには AWS Management Console
1.

AWS/MWAA 名前空間を選択します。

2.

[すべてのメトリクス] タブで、[クラスター] ディメンションを選択します。

3.

クラスターディメンションの でAdditionalWebservers、 CPUUtilizationまたはMemoryUtilizationメトリクスを選択します。

4.

[グラフ化したメトリクス] タブで、[期間] を [1 分] に、[統計] を [サンプル数] に設定します。

詳細については、「Amazon Elastic Container Service デベロッパーガイド」の「サービスのRUNNING タスク数」を参照してください。

データベースメトリクス
次のメトリクスは、Amazon MWAA環境に関連付けられた各データベースインスタンスに適用され
ます。
名前空間

メトリクス

Unit

AWS/MWAA

CPUUtilization

割合 (%)AWS/MWAA

DatabaseConnections

カウント

AWS/MWAA

DiskQueueDepth

カウント

メトリクスの一覧

435

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

名前空間

メトリクス

Unit

AWS/MWAA

FreeableMemory

バイト

AWS/MWAA

VolumeWriteIOPS

5 分あたりのカ
ウント

AWS/MWAA

WriteIOPS

1 秒あたりのカ
ウント数

AWS/MWAA

WriteLatency[秒]

AWS/MWAA

WriteThroughput

1 秒あたりのバ
イト数

キューメトリクス
以下のキューメトリクスの単位と説明の詳細については、「Amazon Simple Queue Service デベ
ロッパーガイド」の「Amazon で利用可能な CloudWatch メトリクスSQS」を参照してください。
名前空間

メトリクス

Unit

AWS/MWAA

ApproximateAgeOfOl[秒]

destTask
AWS/MWAA

RunningTasks

カウント

AWS/MWAA

QueuedTasks

カウント

Application Load Balancer のメトリクス
Application Load Balancer メトリクスは、環境で実行されているウェブサーバーに適用されます。Amazon MWAAは、これらのメトリクスを に使用して、トラフィック量に基づいてウェブ
サーバーをスケーリングします。以下のロードバランサーメトリクスの単位と説明の詳細について
は、CloudWatch Application Load Balancer」の「Application Load Balancer のメトリクス」を参照
してください。

メトリクスの一覧

436

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

名前空間

メトリクス

Unit

AWS/MWAA

ActiveConnectionCount

カウント

メトリクスの一覧

437

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow におけるセキュリティーのクラウドセキュリティが最優先事項 AWS です。お客様は AWS 、セキュリティを最も重視する組織の要件を満たすように構築されたデータセンターとネットワークアーキテクチャからメリットを得られます。
セキュリティは、 AWS とお客様 (顧客) の間で共有される責任です。責任共有モデルでは、これをクラウドのセキュリティおよびクラウド内のセキュリティと説明しています。
• クラウドのセキュリティ — クラウドで AWS サービスを実行するインフラストラクチャを保護する責任 AWS は AWS にあります。 AWS また、 では、安全に使用できるサービスも提供しています。コンプライアンスAWS プログラムコンプライアンスプログラム の一環として、サードパー
ティーの監査者は定期的にセキュリティの有効性をテストおよび検証。Amazon に適用されるコン
プライアンスプログラムの詳細についてはMWAA、「コンプライアンスプログラムAWS による対象範囲内のサービスコンプライアンスプログラム」を参照してください。
• クラウドのセキュリティ — お客様の責任は、使用する AWS サービスによって決まります。また、お客様は、データの機密性、会社の要件、適用される法律や規制など、その他の要因についても責任を負います。
このドキュメントは、Amazon Managed Workflows for Apache Airflow 使用時における責任共有モデ
ルの適用法を理解するのに役立ちます。ここでは、セキュリティおよびコンプライアンスの目的を達成するMWAAように Amazon を設定する方法を示します。また、Amazon MWAAリソースのモニタ
リングや保護に役立つ他の AWS のサービスの使用方法についても説明します。
このセクションの内容:• Amazon Managed Workflows for Apache Airflow におけるデータ保護• AWS Identity and Access Management• Amazon Managed Workflows for Apache Airflow のコンプライアンス検証• Amazon Managed Workflows for Apache Airflow におけるレジリエンス• Amazon のインフラストラクチャセキュリティ MWAA
• Amazon での設定と脆弱性の分析 MWAA
• Amazon のセキュリティのベストプラクティス MWAA
438

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow におけるデータ保護
責任 AWS 共有モデル、Amazon Managed Workflows for Apache Airflow のデータ保護に適用されます。このモデルで説明されているように、 AWS はすべての を実行するグローバルインフラス
トラクチャを保護する責任があります AWS クラウド。お客様は、このインフラストラクチャでホストされているコンテンツに対する管理を維持する責任があります。このコンテンツには、使用される AWS サービス のセキュリティ設定と管理タスクが含まれます。データプライバシーの詳細については、「データプライバシーFAQ」を参照してください。欧州でのデータ保護の詳細について
は、AWS 「 セキュリティブログ」のAWS 「責任共有モデル」とGDPRブログ記事を参照してください。
データ保護の目的で、 AWS アカウント 認証情報を保護し、 AWS Identity and Access Management() を使用して個々のユーザーアカウントを設定することをお勧めしますIAM。この方法により、それぞれのジョブを遂行するために必要な許可のみを各ユーザーに付与できます。また、次の方法でデータを保護することをお勧めします。
• 各アカウントで多要素認証 (MFA) を使用します。
• SSL/TLS を使用して AWS リソースと通信します。1.2 TLS 以降をお勧めします。
• を使用して APIとユーザーアクティビティのログ記録を設定します AWS CloudTrail。
• AWS 暗号化ソリューションと、 サービス内のすべての AWS デフォルトのセキュリティコント
ロールを使用します。
• Amazon Macie などのアドバンストマネージドセキュリティサービスを使用します。これは、Amazon S3 に保存されている個人データの検出と保護を支援します。
顧客の E メールアドレスなどの機密情報やセンシティブ情報は、タグや [Name] (名前) フィールドなどの自由形式のフィールドに配置しないことを強くお勧めします。これは、コンソール、MWAA、または を使用して Amazon または他の AWS のサービスを使用する場合API AWS CLIも同様です
AWS SDKs。タグまたは名前に使用する自由記入欄に入力したデータは、課金や診断ログに使用される場合があります。URL を外部サーバーに提供する場合は、そのサーバーへのリクエストを検証
URLするために認証情報を に含めないことを強くお勧めします。

Amazon での暗号化 MWAA
以下のトピックでは、Amazon が保管中および転送中のデータMWAAを保護する方法について説明します。この情報を使用して、Amazon が とMWAA統合 AWS KMS して保管中のデータを暗号化す
データ保護

439

Amazon Managed Workflows for Apache Airflow

ユーザーガイドる方法と、転送中の Transport Layer Security (TLS) プロトコルを使用してデータを暗号化する方法について説明します。
トピック• 保管中の暗号化• 転送中の暗号化

保管中の暗号化
Amazon ではMWAA、保管中のデータは、サービスが永続的メディアに保存するデータです。
保管中のデータの暗号化にはAWS 所有キーを使用することも、環境の作成時にオプションでカス
タマーマネージドキーを提供して追加の暗号化を行うこともできます。カスタマーマネージドKMS
キーを使用する場合は、環境で使用する他の AWS リソースやサービスと同じアカウントに存在する
必要があります。
カスタマーマネージドKMSキーを使用するには、キーポリシー CloudWatch にアクセスするために必要なポリシーステートメントをアタッチする必要があります。お客様の環境にカスタマー
マネージドKMSキーを使用すると、Amazon はお客様に代わって 4 つの許可をアMWAAタッチ
します。Amazon がカスタマーマネージドKMSキーにアMWAAタッチする許可の詳細について
は、「データ暗号化用のカスタマーマネージドキー」を参照してください。
カスタマーマネージドKMSキーを指定しない場合、Amazon はデフォルトで の AWS 所有KMSキー
MWAAを使用してデータを暗号化および復号します。Amazon でのデータ暗号化を管理するには、
AWS 所有KMSキーを使用することをお勧めしますMWAA。
Note
Amazon での AWS 所有キーまたはカスタマーマネージドKMSキーのストレージと使用に対して料金が発生しますMWAA。詳細については、「AWS KMS 料金」を参照してください。

暗号化アーティファクト
Amazon MWAA環境の作成時に AWS 所有キーまたはカスタマーマネージドキーを指定することで、保管時の暗号化に使用される暗号化アーティファクトを指定します。Amazon は、指定されたキーに必要な許可MWAAを追加します。
暗号化

440

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon S3 – Amazon S3 データは、サーバー側の暗号化 () を使用してオブジェクトレベルで暗号化されますSSE。Amazon S3 の暗号化と復号は、DAGコードとサポートファイルが保存されている Amazon S3 バケットで行われます。オブジェクトは Amazon S3 にアップロードされると暗号化され、Amazon MWAA環境にダウンロードされると復号されます。デフォルトでは、カスタマーマ
ネージドKMSキーを使用している場合、Amazon MWAAはそれを使用して Amazon S3 バケット上のデータを読み取って復号します。
CloudWatch ログ – AWS 所有KMSキーを使用している場合、 CloudWatch ログに送信される
Apache Airflow ログは、ログ AWS の所有KMSキーを持つサーバー側の暗号化 (SSE) CloudWatch を使用して暗号化されます。カスタマーマネージドKMSキーを使用している場合は、キーポリシーを
KMSキーに追加して、 CloudWatch ログがキーを使用できるようにする必要があります。
Amazon SQS – Amazon MWAAは、環境用に 1 つの Amazon SQSキューを作成します。Amazon
MWAAは、サーバー側の暗号化 (SSE) を使用して、 AWS 所有KMSキーまたは指定したカスタマー
マネージドKMSキーを使用して、キューとの間で送受信されるデータの暗号化を処理します。 AWS
所有キーとカスタマーマネージドKMSキーのどちらを使用しているかにかかわらず、実行ロールにAmazon アクセスSQS許可を追加する必要があります。
Aurora PostgreSQL – Amazon MWAAは、環境用に 1 つの PostgreSQL クラスターを作成します。Aurora PostgreSQL は、サーバー側の暗号化 () を使用して、 AWS 所有キーまたはカスタマー
マネージドKMSキーでコンテンツを暗号化しますSSE。カスタマーマネージドKMSキーを使用している場合、Amazon はキーに少なくとも 2 つの権限RDSを追加します。1 つはクラスター用、もう 1 つはデータベースインスタンス用です。複数の環境でカスタマーマネージドKMSキーを使用することを選択した場合、Amazon は追加の許可を作成するRDSことがあります。詳細について
は、「Amazon でのデータ保護RDS」を参照してください。

転送中の暗号化
転送中のデータとは、ネットワークを移動する際に傍受される可能性があるデータと呼ばれます。
Transport Layer Security (TLS) は、環境の Apache Airflow コンポーネントと、Amazon S3 などのAmazon と統合する他の AWS サービスの間で転送中の Amazon MWAA オブジェクトを暗号化しますMWAA。 Amazon S3 Amazon S3 暗号化の使用の詳細については、「暗号化でデータを保護する」を参照してください。

暗号化のためのカスタマーマネージドキーの使用オプションで、環境内のデータ暗号化するためのカスタマーマネージドキーを提供できます。カス
タマーマネージドKMSキーは、ワークフローのリソースを保存する Amazon MWAA環境インスタン
カスタマーマネージドキーを使用する

441

Amazon Managed Workflows for Apache Airflow

ユーザーガイドスおよび Amazon S3 バケットと同じリージョンに作成する必要があります。指定したカスタマー
マネージドKMSキーが環境の設定に使用するアカウントとは異なるアカウントにある場合は、クロ
スアカウントアクセスARNに を使用してキーを指定する必要があります。キーの作成の詳細については、「AWS Key Management Service デベロッパーガイド」の「キーの作成」を参照してください。

サポート対象AWS KMS 機能

サポート対象AWS KMS キー ID または
ARN。

あり

AWS KMS キーエイリアス。

なし

AWS KMS マルチリージョンキー。

なし

暗号化のための許可の使用。
このトピックでは、Amazon がユーザーに代わってカスタマーマネージドKMSキーにアMWAAタッ
チして、データを暗号化および復号する権限について説明します。
仕組み
カスタマーマネージドKMSキー AWS KMS には、 でサポートされるリソースベースのアクセスコン
トロールメカニズムとして、キーポリシーとグラントの 2 つがあります。
キーポリシーは、権限がほとんど静的で、同期サービスモードで使用される場合に使用されます。許可は、サービスが自身や他のアカウントに異なるアクセス権限を定義する必要がある場合など、より動的で詳細な権限が必要な場合に使用されます。
Amazon は 4 つの許可ポリシーMWAAを使用してカスタマーマネージドKMSキーにアタッチします。これは、環境が CloudWatch ログ、Amazon SQSキュー、Aurora PostgreSQL データベー
ス、Secrets Manager シークレット、Amazon S3 バケット、DynamoDB テーブルから保管中のデータを暗号化するために必要なきめ細かいアクセス許可によるものです。
Amazon MWAA環境を作成し、カスタマーマネージドKMSキーを指定すると、Amazon は付与
ポリシーをカスタマーマネージドKMSキーにアMWAAタッチします。これらのポリシーによカスタマーマネージドキーを使用する

442

Amazon Managed Workflows for Apache Airflow

ユーザーガイドりairflow.region}.amazonaws.com、 MWAAの Amazon はカスタマーマネージドKMSキーを使用して、Amazon が所有するリソースを暗号化できますMWAA。
Amazon は、ユーザーに代わって、指定されたKMSキーに追加の許可MWAAを作成してアタッチします。これには、環境を削除した場合にグラントを廃止するポリシー、クライアント側の暗号化(CSE) にカスタマーマネージドKMSキーを使用するポリシー、Secrets Manager のカスタマーマ
ネージドキーで保護されたシークレットにアクセスする必要がある AWS Fargate 実行ロールを使用するポリシーが含まれます。

許可ポリシー
Amazon は、ユーザーに代わって次のリソースベースのポリシー許可をカスタマーマネージドKMS
キーMWAAに追加します。これらのポリシーにより、被付与者とプリンシパル (Amazon MWAA) はポリシーで定義されたアクションを実行できます。
許可 1: データプレーンリソースの作成に使用{"Name": "mwaa-grant-for-env-mgmt-role-environment name","GranteePrincipal": "airflow.region.amazonaws.com","RetiringPrincipal": "airflow.region.amazonaws.com","Operations": ["kms:Encrypt","kms:Decrypt","kms:ReEncrypt*","kms:GenerateDataKey*","kms:CreateGrant","kms:DescribeKey","kms:RetireGrant"]}

許可 2: ControllerLambdaExecutionRole アクセスに使用{"Name": "mwaa-grant-for-lambda-exec-environment name","GranteePrincipal": "airflow.region.amazonaws.com","RetiringPrincipal": "airflow.region.amazonaws.com","Operations": ["kms:Encrypt",
カスタマーマネージドキーを使用する

443

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"kms:Decrypt","kms:ReEncrypt*","kms:GenerateDataKey*","kms:DescribeKey","kms:RetireGrant"]}

許可 3: CfnManagementLambdaExecutionRole アクセスに使用{"Name": " mwaa-grant-for-cfn-mgmt-environment name","GranteePrincipal": "airflow.region.amazonaws.com","RetiringPrincipal": "airflow.region.amazonaws.com","Operations": ["kms:Encrypt","kms:Decrypt","kms:ReEncrypt*","kms:GenerateDataKey*","kms:DescribeKey"]}

許可 4: バックエンドシークレットにアクセスするための Fargate 実行ロールに使用{"Name": "mwaa-fargate-access-for-environment name","GranteePrincipal": "airflow.region.amazonaws.com","RetiringPrincipal": "airflow.region.amazonaws.com","Operations": ["kms:Encrypt","kms:Decrypt","kms:ReEncrypt*","kms:GenerateDataKey*","kms:DescribeKey","kms:RetireGrant"]}

カスタマーマネージドキーを使用する

444

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

カスタマーマネージドキーへのキーポリシーの適用
Amazon で独自のカスタマーマネージドKMSキーを使用する場合はMWAA、次のポリシーをキーにアタッチして、Amazon がそれMWAAを使用してデータを暗号化できるようにする必要があります。
Amazon MWAA環境に使用したカスタマーマネージドKMSキーが で動作するようにまだ設定されていない場合は CloudWatch、暗号化された CloudWatch ログを許可するようにキーポリシーを更新する必要があります。詳細については、「サービス CloudWatch を使用して でログデータを暗号化す
る AWS Key Management Service」を参照してください。
次の例は、 CloudWatch ログのキーポリシーを表します。リージョンに提供されているサンプル値に置き換えてください。
{"Effect": "Allow","Principal": {"Service": "logs.us-west-2.amazonaws.com"},"Action": ["kms:Encrypt*","kms:Decrypt*","kms:ReEncrypt*","kms:GenerateDataKey*","kms:Describe*"],"Resource": "*",
"Condition": {"ArnLike": {"kms:EncryptionContext:aws:logs:arn": "arn:aws:logs:us-west-2:*:*"}}}AWS Identity and Access Management
AWS Identity and Access Management （IAM) は、管理者が AWS リソースへのアクセスを安全に制御するのに役立つ AWS サービスです。IAM 管理者は、誰を認証 (サインイン) し、誰に Amazon
Managed Workflows for Apache Airflow リソースの使用を承認する (アクセス許可を付与する) かを制御します。IAM は、追加料金なしで使用できる AWS のサービスです。
AWS Identity and Access Management445

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

このトピックでは、Amazon が AWS Identity and Access Management () MWAA を使用する方法の基本的な概要を説明しますIAM。Amazon へのアクセスの管理については、MWAA「」を参照してく
ださいAmazon MWAA環境へのアクセスの管理。
内容• 対象者• アイデンティティを使用した認証• ポリシーを使用したアクセスの管理• ユーザー自身のアクセス許可を表示することをユーザーに許可する• Amazon Managed Workflows for Apache Airflow のアイデンティティとアクセスのトラブルシュー
ティング• Amazon と のMWAA連携方法 IAM

対象者
AWS Identity and Access Management （IAM) の使用方法は、Amazon で行う作業によって異なりますMWAA。
サービスユーザー – Amazon MWAAサービスを使用してジョブを実行する場合、管理者から必要な認証情報とアクセス許可が与えられます。さらに多くの Amazon MWAA機能を使用して作業を行う
場合は、追加のアクセス許可が必要になることがあります。アクセスの管理方法を理解しておくと、管理者に適切な許可をリクエストするうえで役立ちます。Amazon の機能にアクセスできない場合
は、MWAA「」を参照してくださいAmazon Managed Workflows for Apache Airflow のアイデンティ
ティとアクセスのトラブルシューティング。
サービス管理者 – 社内の Amazon MWAAリソースを担当している場合は、通常、Amazon へのフルアクセスがありますMWAA。サービスユーザーがどの Amazon MWAA機能やリソースにアクセスするかを決めるのは管理者の仕事です。次に、サービスユーザーのアクセス許可を変更するリクエスト
をIAM管理者に送信する必要があります。このページの情報を確認して、 の基本概念を理解してくださいIAM。会社で Amazon IAMと を併用する方法の詳細についてはMWAA、「」を参照してくだ
さいAmazon と のMWAA連携方法 IAM。
IAM 管理者 – IAM管理者は、Amazon へのアクセスを管理するポリシーの作成方法の詳細について確認する場合がありますMWAA。で使用できる Amazon MWAAアイデンティティベースのポリシーの例を表示するにはIAM、「」を参照してくださいAmazon MWAAアイデンティティベースのポリシー
の例。
対象者

446

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

アイデンティティを使用した認証
認証とは、ID 認証情報 AWS を使用して にサインインする方法です。として、IAMユーザーとして
AWS アカウントのルートユーザー、または IAMロールを引き受けることによって認証 （ にサイン
イン AWS) される必要があります。
ID ソースを介して提供された認証情報を使用して、フェデレーティッド ID AWS として にサインインできます。 AWS IAM Identity Center （IAM Identity Center) ユーザー、会社のシングルサインオン
認証、Google または Facebook の認証情報は、フェデレーティッド ID の例です。フェデレーティッ
ド ID としてサインインすると、管理者は以前に IAMロールを使用して ID フェデレーションをセッ
トアップしていました。フェデレーション AWS を使用して にアクセスすると、間接的にロールを引き受けることになります。
ユーザーのタイプに応じて、 AWS Management Console または AWS アクセスポータルにサインインできます。へのサインインの詳細については AWS、「 ユーザーガイド」の「 へのサインイン
AWS アカウント方法AWS サインイン 」を参照してください。
AWS プログラムで にアクセスする場合、 はソフトウェア開発キット (SDK) とコマンドラインイ
ンターフェイス (CLI) AWS を提供し、認証情報を使用してリクエストに暗号で署名します。 AWS
ツールを使用しない場合は、リクエストに自分で署名する必要があります。推奨される方法を使用してリクエストを自分で署名する方法の詳細については、「 IAMユーザーガイド」のAWS API「リクエストの署名」を参照してください。
使用する認証方法を問わず、追加セキュリティ情報の提供をリクエストされる場合もあります。例えば、 AWS では、アカウントのセキュリティを高めるために多要素認証 (MFA) を使用することをお勧めします。詳細については、「 ユーザーガイド」の「多要素認証」および「 ユーザーガイド」の「 での多要素認証 (MFA） AWS IAM の使用」を参照してください。 AWS IAM Identity Center

AWS アカウント ルートユーザーを作成するときは AWS アカウント、アカウント内のすべての AWS サービス およびリソースへの完
全なアクセス権を持つ 1 つのサインインアイデンティティから始めます。この ID は AWS アカウン
ト ルートユーザーと呼ばれ、アカウントの作成に使用した E メールアドレスとパスワードでサインインすることでアクセスできます。日常的なタスクには、ルートユーザーを使用しないことを強くお勧めします。ルートユーザーの認証情報は保護し、ルートユーザーでしか実行できないタスクを実行するときに使用します。ルートユーザーとしてサインインする必要があるタスクの完全なリストについては、「 IAMユーザーガイド」の「ルートユーザーの認証情報を必要とするタスク」を参照してください。
アイデンティティを使用した認証

447

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

IAM ユーザーとグループ
IAM ユーザーは、単一のユーザーまたはアプリケーションに対して特定のアクセス許可 AWS アカ
ウント を持つ 内のアイデンティティです。可能であれば、パスワードやアクセスキーなどの長期的な認証情報を持つIAMユーザーを作成するのではなく、一時的な認証情報を使用することをお勧めします。ただし、IAMユーザーとの長期的な認証情報を必要とする特定のユースケースがある場合は、
アクセスキーをローテーションすることをお勧めします。詳細については、「 ユーザーガイド」の「長期的な認証情報を必要とするユースケースでアクセスキーを定期的にローテーションするIAM」
を参照してください。
IAM グループは、IAMユーザーのコレクションを指定する ID です。グループとしてサインインすることはできません。グループを使用して、複数のユーザーに対して一度に権限を指定できます。多数のユーザーグループがある場合、グループを使用することで権限の管理が容易になります。例えば、という名前のグループIAMAdminsを作成し、そのグループにIAMリソースを管理するアクセス許可を付与できます。
ユーザーは、ロールとは異なります。ユーザーは 1 人の人または 1 つのアプリケーションに一意に関連付けられますが、ロールはそれを必要とする任意の人が引き受けるようになっています。ユー
ザーには永続的な長期の認証情報がありますが、ロールでは一時認証情報が提供されます。詳細については、「 ユーザーガイド」のIAM「 (ロールの代わりに) ユーザーを作成する場合IAM」を参照してください。

IAM ロール
IAM ロールは、特定のアクセス許可 AWS アカウント を持つ 内のアイデンティティです。これはIAM ユーザーと似ていますが、特定のユーザーに関連付けられていません。IAM ロール を切り替え
る AWS Management Console ことで、 で ロールを一時的に引き受けることができます。ロールを引き受けるには、 または AWS API オペレーションを AWS CLI 呼び出すか、カスタム を使用します
URL。ロールの使用方法の詳細については、「 ユーザーガイド」のIAM「ロールの使用IAM」を参照
してください。
IAM 一時的な認証情報を持つ ロールは、以下の状況で役立ちます。
• フェデレーションユーザーアクセス – フェデレーティッド ID に許可を割り当てるには、ロールを作成してそのロールの許可を定義します。フェデレーティッド ID が認証されると、その ID はロールに関連付けられ、ロールで定義されている許可が付与されます。フェデレーションのロールの詳細については、「 ユーザーガイド」の「サードパーティー ID プロバイダーのロールの作
成IAM」を参照してください。IAM Identity Center を使用する場合は、アクセス許可セットを設定します。ID が認証後にアクセスできる内容を制御するために、IAMIdentity Center はアクセス
アイデンティティを使用した認証

448

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

許可セットを のロールに関連付けますIAM。アクセス許可セットの詳細については、「AWS IAM
Identity Center ユーザーガイド」の「アクセス許可セット」を参照してください。
• 一時的なIAMユーザーアクセス許可 – IAM ユーザーまたはロールは、 IAMロールを引き受けて、特定のタスクに対して異なるアクセス許可を一時的に引き受けることができます。
• クロスアカウントアクセス – IAMロールを使用して、別のアカウントのユーザー (信頼されたプリ
ンシパル) がアカウントのリソースにアクセスすることを許可できます。クロスアカウントアク
セスを許可する主な方法は、ロールを使用することです。ただし、一部の では AWS サービス、(ロールをプロキシとして使用する代わりに) ポリシーをリソースに直接アタッチできます。クロ
スアカウントアクセスのロールとリソースベースのポリシーの違いについては、「 ユーザーガイ
ド」の「 でのクロスアカウントリソースアクセスIAMIAM」を参照してください。
• クロスサービスアクセス — 一部の は、他の の機能 AWS サービス を使用します AWS サービス。例えば、サービスで呼び出しを行うと、そのサービスが Amazon でアプリケーションを実行
EC2したり、Amazon S3 にオブジェクトを保存したりするのが一般的です。サービスでは、呼び出し元プリンシパルの許可、サービスロール、またはサービスリンクロールを使用してこれを行う
場合があります。
• 転送アクセスセッション (FAS） – IAM ユーザーまたはロールを使用して でアクションを実行す
ると AWS、プリンシパルと見なされます。一部のサービスを使用する際に、アクションを実行することで、別のサービスの別のアクションがトリガーされることがあります。FAS は、 を呼び出すプリンシパルのアクセス許可を AWS サービス、ダウンストリームサービス AWS サービ
ス へのリクエストのリクエストと組み合わせて使用します。FAS リクエストは、サービスが他の AWS サービス またはリソースとのやり取りを完了する必要があるリクエストを受け取った場合にのみ行われます。この場合、両方のアクションを実行するための権限が必要です。FAS
リクエストを行う際のポリシーの詳細については、「転送アクセスセッション」を参照してください。
• サービスロール – サービスロールは、ユーザーに代わってアクションを実行するためにサービスが引き受ける IAMロールです。IAM 管理者は、 内からサービスロールを作成、変更、削除できますIAM。詳細については、「 ユーザーガイド」の「 にアクセス許可を委任するロールの作
成 AWS サービスIAM」を参照してください。
• サービスにリンクされたロール – サービスにリンクされたロールは、 にリンクされたサービス
ロールの一種です AWS サービス。サービスは、ユーザーに代わってアクションを実行するロー
ルを引き受けることができます。サービスにリンクされたロールは に表示され AWS アカウン
ト 、サービスによって所有されます。IAM 管理者は、サービスにリンクされたロールのアクセ
ス許可を表示できますが、編集することはできません。
• Amazon で実行されているアプリケーション EC2 – IAMロールを使用して、EC2インスタンスで実行され、 AWS CLI または AWS API リクエストを行うアプリケーションの一時的な認証情報を管アイデンティティを使用した認証

449

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

理できます。これは、EC2インスタンス内にアクセスキーを保存するよりも望ましいです。 AWS
ロールをEC2インスタンスに割り当て、そのすべてのアプリケーションで使用できるようにするには、インスタンスにアタッチされたインスタンスプロファイルを作成します。インスタンスプ
ロファイルには ロールが含まれており、EC2インスタンスで実行されているプログラムが一時的な認証情報を取得できるようにします。詳細については、「 ユーザーガイド」の「 IAMロールを使用して Amazon EC2インスタンスで実行されているアプリケーションにアクセス許可を付与するIAM」を参照してください。
IAM ロールとIAMユーザーのどちらを使用するかについては、「 ユーザーガイド」の「 (ユーザーではなく) IAMロールを作成する場合IAM」を参照してください。

ポリシーを使用したアクセスの管理でアクセスを制御する AWS には、ポリシーを作成し、 AWS ID またはリソースにアタッチします。
ポリシーは、アイデンティティまたはリソースに関連付けられているときにアクセス許可を定義するのオブジェクトです。プリンシパル (ユーザー、ルートユーザー、またはロールセッション) AWS が
リクエストを行うと、 はこれらのポリシー AWS を評価します。ポリシーでの権限により、リクエ
ストが許可されるか拒否されるかが決まります。ほとんどのポリシーはJSONドキュメント AWS として に保存されます。JSON ポリシードキュメントの構造と内容の詳細については、「 ユーザーガ
イド」のJSON「ポリシーの概要IAM」を参照してください。
管理者はポリシーを使用して AWS JSON、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
デフォルトでは、ユーザーやロールに権限はありません。必要なリソースに対してアクションを実行するアクセス許可をユーザーに付与するために、IAM管理者はIAMポリシーを作成できます。その後、管理者はIAMポリシーをロールに追加し、ユーザーはロールを引き受けることができます。
IAM ポリシーは、オペレーションの実行に使用するメソッドに関係なく、アクションのアクセス許可を定義します。例えば、iam:GetRoleアクションを許可するポリシーがあるとします。そのポリシーを持つユーザーは、 AWS Management Console、、 AWS CLIまたは AWS からロール情報を取得できますAPI。

アイデンティティベースのポリシー
ID ベースのポリシーは、IAMユーザー、ユーザーのグループ、ロールなど、ID にアタッチできる
JSONアクセス許可ポリシードキュメントです。これらのポリシーは、ユーザーとロールが実行できポリシーを使用したアクセスの管理

450

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

るアクション、リソース、および条件をコントロールします。アイデンティティベースのポリシーを作成する方法については、「 ユーザーガイド」のIAM「ポリシーの作成IAM」を参照してください。
アイデンティティベースのポリシーは、さらにインラインポリシーまたはマネージドポリシーに分類できます。インラインポリシーは、単一のユーザー、グループ、またはロールに直接埋め込まれています。管理ポリシーは、 内の複数のユーザー、グループ、ロールにアタッチできるスタンドア
ロンポリシーです AWS アカウント。管理ポリシーには、 AWS 管理ポリシーとカスタマー管理ポ
リシーが含まれます。管理ポリシーとインラインポリシーのどちらかを選択する方法については、
IAM ユーザーガイドの「管理ポリシーとインラインポリシーの選択」を参照してください。

リソースベースのポリシー
リソースベースのポリシーは、リソースにアタッチするJSONポリシードキュメントです。リソース
ベースのポリシーの例としては、IAMロール信頼ポリシー や Amazon S3 バケットポリシー などがあります。リソースベースのポリシーをサポートするサービスでは、サービス管理者はポリシーを使用して特定のリソースへのアクセスをコントロールできます。ポリシーがアタッチされているリソー
スの場合、指定されたプリンシパルがそのリソースに対して実行できるアクションと条件は、ポリシーによって定義されます。リソースベースのポリシーでは、プリンシパルを指定する必要があります。プリンシパルには、アカウント、ユーザー、ロール、フェデレーティッドユーザー、または を含めることができます AWS サービス。
リソースベースのポリシーは、そのサービス内にあるインラインポリシーです。リソースベースのポ
リシーIAMでは、 の AWS 管理ポリシーを使用できません。

アクセスコントロールリスト (ACLs）
アクセスコントロールリスト (ACLs) は、リソースへのアクセス許可を持つプリンシパル (アカウン
トメンバー、ユーザー、またはロール) を制御します。ACLs はリソースベースのポリシーに似ていますが、JSONポリシードキュメント形式を使用しません。
Amazon S3、 AWS WAF、および Amazon VPCは、 をサポートするサービスの例ですACLs。の詳細についてはACLs、Amazon Simple Storage Service デベロッパーガイドの「アクセスコントロー
ルリスト (ACL) の概要」を参照してください。

その他のポリシータイプ
AWS は、一般的ではない追加のポリシータイプをサポートします。これらのポリシータイプでは、より一般的なポリシータイプで付与された最大の権限を設定できます。
• アクセス許可の境界 – アクセス許可の境界は、アイデンティティベースのポリシーがIAMエンティ
ティ (IAMユーザーまたはロール) に付与できるアクセス許可の上限を設定する高度な機能です。エ
ポリシーを使用したアクセスの管理

451

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ンティティにアクセス許可の境界を設定できます。結果として得られる権限は、エンティティのアイデンティティベースポリシーとそのアクセス許可の境界の共通部分になります。Principal
フィールドでユーザーまたはロールを指定するリソースベースのポリシーでは、アクセス許可の境界は制限されません。これらのポリシーのいずれかを明示的に拒否した場合、権限は無効になります。アクセス許可の境界の詳細については、「 IAMユーザーガイド」の「 IAMエンティティのア
クセス許可の境界」を参照してください。
• サービスコントロールポリシー (SCPs） – SCPsは、 の組織または組織単位 (OU) に対する最大ア
クセス許可を指定するJSONポリシーです AWS Organizations。 AWS Organizations は、 AWS ア
カウント ビジネスが所有する複数の をグループ化して一元管理するためのサービスです。組織内のすべての機能を有効にすると、サービスコントロールポリシー (SCPs) をアカウントの一部またはすべてに適用できます。は、各 を含むメンバーアカウントのエンティティのアクセス許可SCPを制限します AWS アカウントのルートユーザー。Organizations と の詳細についてはSCPs、「AWS Organizations ユーザーガイド」の「サービスコントロールポリシー」を参照してください。
• セッションポリシー - セッションポリシーは、ロールまたはフェデレーションユーザーの一時的なセッションをプログラムで作成する際にパラメータとして渡す高度なポリシーです。結果としてセッションの権限は、ユーザーまたはロールのアイデンティティベースポリシーとセッションポ
リシーの共通部分になります。また、リソースベースのポリシーから権限が派生する場合もあります。これらのポリシーのいずれかを明示的に拒否した場合、権限は無効になります。詳細について
は、「 ユーザーガイド」の「セッションポリシーIAM」を参照してください。

複数のポリシータイプ
1 つのリクエストに複数のタイプのポリシーが適用されると、結果として作成される権限を理解するのがさらに難しくなります。複数のポリシータイプが関与する場合にリクエストを許可するかどうか
AWS を決定する方法については、「 ユーザーガイド」の「ポリシー評価ロジックIAM」を参照してください。

ユーザー自身のアクセス許可を表示することをユーザーに許可する
この例では、IAMユーザーがユーザー ID にアタッチされているインラインポリシーと管理ポリシーを表示できるようにするポリシーを作成する方法を示します。このポリシーには、コンソールで、または AWS CLI または を使用してプログラムでこのアクションを実行するアクセス許可が含まれています AWS API。
{
"Version": "2012-10-17","Statement": [ユーザー自身のアクセス許可を表示することをユーザーに許可する

452

Amazon Managed Workflows for Apache Airflow

ユーザーガイド{"Sid": "ViewOwnUserInfo","Effect": "Allow","Action": ["iam:GetUserPolicy","iam:ListGroupsForUser","iam:ListAttachedUserPolicies","iam:ListUserPolicies","iam:GetUser"],"Resource": ["arn:aws:iam::*:user/${aws:username}"]},{"Sid": "NavigateInConsole","Effect": "Allow","Action": ["iam:GetGroupPolicy","iam:GetPolicyVersion","iam:GetPolicy","iam:ListAttachedGroupPolicies","iam:ListGroupPolicies","iam:ListPolicyVersions","iam:ListPolicies","iam:ListUsers"],"Resource": "*"}]}Amazon Managed Workflows for Apache Airflow のアイデンティティとアクセスのトラブルシューティング
以下の情報は、Amazon および の使用時に発生する可能性がある一般的な問題の診断MWAAと修正に役立ちますIAM。

Amazon でアクションを実行する権限がない MWAA
がアクションを実行する権限がないと AWS Management Console 通知した場合は、管理者に連絡してサポートを依頼する必要があります。担当の管理者はお客様のユーザー名とパスワードを発行した人です。
Amazon Managed Workflows for Apache Airflow のアイデンティティとアクセスのトラブルシューティン
グ453

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

iam を実行する権限がありません。PassRole
iam:PassRole アクションを実行する権限がないというエラーが表示された場合は、ポリシーを更新して Amazon にロールを渡すことができるようにする必要がありますMWAA。
一部の AWS サービス では、新しいサービスロールまたはサービスにリンクされたロールを作成する代わりに、そのサービスに既存のロールを渡すことができます。そのためには、サービスにロールを渡す権限が必要です。
次の例のエラーは、 というIAMユーザーがコンソールを使用して Amazon marymajor でアクションを実行しようする場合に発生しますMWAA。ただし、このアクションをサービスが実行するには、
サービスロールから付与された権限が必要です。メアリーには、ロールをサービスに渡す許可がありません。
User: arn:aws:iam::123456789012:user/marymajor is not authorized to perform:
iam:PassRole

この場合、Mary のポリシーを更新してメアリーに iam:PassRole アクションの実行を許可する必要があります。
サポートが必要な場合は、 AWS 管理者にお問い合わせください。サインイン認証情報を提供した担当者が管理者です。

AWS アカウント以外のユーザーに Amazon MWAAリソースへのアクセスを許可したい
他のアカウントのユーザーや組織外の人が、リソースにアクセスするために使用できるロールを作成できます。ロールの引き受けを委託するユーザーを指定できます。リソースベースのポリシーまたは
アクセスコントロールリスト (ACLs) をサポートするサービスでは、これらのポリシーを使用して、ユーザーにリソースへのアクセスを許可できます。
詳細については、以下を参照してください。
• Amazon がこれらの機能MWAAをサポートしているかどうかを確認するには、「」を参照してく
ださいAmazon と のMWAA連携方法 IAM。
• 所有している のリソースへのアクセスを提供する方法については、 AWS アカウント 「 ユーザーガイド」の「所有 AWS アカウント している別の のIAMユーザーへのアクセスを提供するIAM」を参照してください。
Amazon Managed Workflows for Apache Airflow のアイデンティティとアクセスのトラブルシューティン
グ454

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• リソースへのアクセスをサードパーティー に提供する方法については AWS アカウント、「 IAM
ユーザーガイド」の「サードパーティー AWS アカウント が所有する へのアクセスを提供する」
を参照してください。
• ID フェデレーションを通じてアクセスを提供する方法については、 IAMユーザーガイドの「外部認証されたユーザーへのアクセスの提供 (ID フェデレーション）」を参照してください。
• クロスアカウントアクセスでのロールとリソースベースのポリシーの使用の違いについては、
ユーザーガイドの「 でのクロスアカウントリソースアクセスIAMIAM」を参照してください。

Amazon と のMWAA連携方法 IAM
Amazon MWAAはIAMアイデンティティベースのポリシーを使用して、Amazon MWAAアクションとリソースにアクセス許可を付与します。Amazon MWAAリソースへのアクセスを制御するために使用できるカスタムIAMポリシーの推奨例については、「」を参照してくださいthe section called“Amazon MWAA環境へのアクセス”。
Amazon MWAAおよびその他の AWS のサービスが と連携する方法の概要を把握するにはIAM、「IAMユーザーガイド」のAWS 「 と連携する のサービスIAM」を参照してください。

Amazon MWAAアイデンティティベースのポリシー
IAM アイデンティティベースのポリシーでは、許可または拒否されたアクションとリソース、およびアクションが許可または拒否される条件を指定できます。Amazon は、特定のアクション、リソー
ス、および条件キーMWAAをサポートしています。
次の手順は、 IAMコンソールを使用して新しいJSONポリシーを作成する方法を示しています。このポリシーは、Amazon MWAAリソースへの読み取り専用アクセスを提供します。
JSON ポリシーエディタを使用してポリシーを作成するには1.

にサインイン AWS Management Console し、 でIAMコンソールを開きますhttps://
console.aws.amazon.com/iam/。

2.

左側のナビゲーションペインで、[ポリシー] を選択します。
初めて [ポリシー] を選択する場合には、[管理ポリシーにようこそ] ページが表示されます。[今すぐ始める] を選択します。

3.

ページの上部で、[ポリシーを作成] を選択します。

4.

ポリシーエディタセクションで、JSONオプションを選択します。

Amazon と のMWAA連携方法 IAM

455

Amazon Managed Workflows for Apache Airflow

5.

ユーザーガイド

次のJSONポリシードキュメントを入力します。
{"Version": "2012-10-17","Statement": [{"Effect": "Allow","Action": ["airflow:ListEnvironments","airflow:GetEnvironment","airflow:ListTagsForResource"],"Resource": "*"
}
]
}

6.

[Next (次へ)] を選択します。
NoteビジュアルオプションとJSONエディタオプションはいつでも切り替えることができます。ただし、ビジュアルエディタで変更を加えるか、次へ を選択すると、 IAMはポリシーを再構築してビジュアルエディタ用に最適化する場合があります。詳細について
は、「 ユーザーガイド」の「ポリシーの再構築IAM」を参照してください。

7.

[確認と作成] ページで、作成するポリシーの [ポリシー名] と [説明] (オプション) を入力します。
[このポリシーで定義されているアクセス許可] を確認して、ポリシーによって付与されたアクセ
ス許可を確認します。

8.

[ポリシーの作成] をクリックして、新しいポリシーを保存します。

JSON ポリシーで使用するすべての要素については、 ユーザーガイドのIAMJSON「 ポリシー要素リ
ファレンスIAM」を参照してください。
アクション
管理者はポリシーを使用して AWS JSON、誰が何にアクセスできるかを指定できます。つまり、どのプリンシパルがどのリソースに対してどのような条件下でアクションを実行できるかということです。
Amazon と のMWAA連携方法 IAM

456

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

JSON ポリシーの Action要素は、ポリシーでアクセスを許可または拒否するために使用できるアクションを記述します。ポリシーアクションの名前は通常、関連する AWS APIオペレーションと同じです。一致するAPIオペレーションを持たないアクセス許可のみのアクションなど、いくつかの例外があります。また、ポリシーに複数のアクションが必要なオペレーションもあります。これらの追加
アクションは、依存アクションと呼ばれます。
このアクションは、関連付けられたオペレーションを実行するための権限を付与するポリシーで使用されます。
ポリシーステートメントには、Action 要素または NotAction 要素を含める必要があります。Action 要素は、ポリシーによって許可されるアクションをリストします。NotAction 要素
は、許可されていないアクションをリストします。
Amazon に定義されているアクションには、Amazon を使用して実行できるタスクMWAAが反映されますMWAA。Detective のポリシーアクションには、プレフィックス airflow: が付いています。
複数のアクションを指定するために、ワイルドカード (*) を使用することもできます。これらのアクションを個別にリストする代わりに、たとえば environment という単語で終わるすべてのアクションへのアクセス権を付与できます。
Amazon MWAAアクションのリストを確認するには、「 IAMユーザーガイド」の「Amazon
Managed Workflows for Apache Airflow で定義されるアクション」を参照してください。

Amazon MWAAアイデンティティベースのポリシーの例
Amazon MWAAポリシーを表示するには、「」を参照してくださいAmazon MWAA環境へのアクセスの管理。
デフォルトでは、IAMユーザーとロールには Amazon MWAAリソースを作成または変更するアクセ
ス許可はありません。また、、 AWS Management Console AWS CLI、または を使用してタスクを実行することはできません AWS API。
IAM 管理者は、必要な特定のリソースに対して特定のAPIオペレーションを実行するアクセス許可をユーザーとロールに付与するIAMポリシーを作成する必要があります。次に、管理者は、これらのア
クセス許可を必要とするIAMユーザーまたはグループにこれらのポリシーをアタッチします。

Amazon と のMWAA連携方法 IAM

457

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Important
IAM ロールと一時的な認証情報を使用して、Amazon MWAAリソースへのアクセスを提供することをお勧めします。アクセス許可ポリシーをIAMユーザーに直接アタッチすることは避
けてください。

これらのポリシードキュメント例を使用してIAMアイデンティティベースのJSONポリシーを作成す
る方法については、 ユーザーガイドのJSON「 タブでのポリシーの作成IAM」を参照してください。
トピック• ポリシーのベストプラクティス• Amazon MWAAコンソールの使用• ユーザー自身のアクセス許可を表示することをユーザーに許可する
ポリシーのベストプラクティス
ID ベースのポリシーは、ユーザーのアカウントで誰かが Amazon MWAAリソースを作成、アクセス、または削除できるどうかを決定します。これらのアクションを実行すると、 AWS アカウントに料金が発生する可能性があります。アイデンティティベースポリシーを作成したり編集したりする際には、以下のガイドラインと推奨事項に従ってください:• AWS 管理ポリシーを開始し、最小特権のアクセス許可に移行する – ユーザーとワークロードにアクセス許可を付与するには、多くの一般的なユースケースにアクセス許可を付与する AWS 管理ポ
リシーを使用します。これらは で使用できます AWS アカウント。ユースケースに固有の AWS カ
スタマー管理ポリシーを定義して、アクセス許可をさらに減らすことをお勧めします。詳細については、「 ユーザーガイド」の「 AWS 管理ポリシー」または「 ジョブ機能の 管理ポリシーIAM」
を参照してください。 AWS• 最小特権のアクセス許可を適用する – IAMポリシーでアクセス許可を設定する場合は、タスクの実行に必要なアクセス許可のみを付与します。これを行うには、特定の条件下で特定のリソースに対して実行できるアクションを定義します。これは、最小特権アクセス許可とも呼ばれています。IAM を使用してアクセス許可を適用する方法の詳細については、「 ユーザーガイド」の「 のポリシーとアクセス許可IAMIAM」を参照してください。
• IAM ポリシーの条件を使用してアクセスをさらに制限する – ポリシーに条件を追加して、アクションとリソースへのアクセスを制限できます。例えば、ポリシー条件を記述して、すべてのリク
エストを を使用して送信する必要があることを指定できますSSL。条件を使用して、 などの特定Amazon と のMWAA連携方法 IAM

458

Amazon Managed Workflows for Apache Airflow

ユーザーガイドの を介してサービスアクションが使用される場合に AWS サービス、サービスアクションへのア
クセスを許可することもできます AWS CloudFormation。詳細については、「 ユーザーガイド」のIAMJSON「ポリシー要素: 条件IAM」を参照してください。
• IAM Access Analyzer を使用してIAMポリシーを検証し、安全で機能的なアクセス許可を確保する– IAM Access Analyzer は、ポリシーがポリシー言語 (JSON) とIAMベストプラクティスに準拠するように、新規および既存のIAMポリシーを検証します。IAM Access Analyzer には、安全で機能的なポリシーの作成に役立つ 100 を超えるポリシーチェックと実用的な推奨事項が用意されています。詳細については、「 ユーザーガイド」のIAM「Access Analyzer ポリシーの検証IAM」を参照してください。
• 多要素認証を要求する (MFA） – でIAMユーザーまたはルートユーザーを必要とするシナリオがある場合は AWS アカウント、セキュリティを強化MFAするために をオンにします。API オペレー
ションが呼び出されるMFAタイミングを要求するには、ポリシーにMFA条件を追加します。詳細
については、「 IAMユーザーガイド」のMFA「 で保護されたAPIアクセスの設定」を参照してください。
のベストプラクティスの詳細についてはIAM、「 ユーザーガイド」の「 のセキュリティのベストプ
ラクティスIAMIAM」を参照してください。
Amazon MWAAコンソールの使用
Amazon MWAAコンソールを使用するには、ユーザーまたはロールが、 の対応するアクションと一致する関連アクションにアクセスできる必要がありますAPI。
Amazon MWAAポリシーを表示するには、「」を参照してくださいAmazon MWAA環境へのアクセスの管理。
ユーザー自身のアクセス許可を表示することをユーザーに許可する
この例では、IAMユーザーがユーザー ID にアタッチされているインラインポリシーと管理ポリシーを表示できるようにするポリシーを作成する方法を示します。このポリシーには、コンソールで、または AWS CLI または を使用してプログラムでこのアクションを実行するアクセス許可が含まれています AWS API。
{
"Version": "2012-10-17","Statement": [{"Sid": "ViewOwnUserInfo","Effect": "Allow",
Amazon と のMWAA連携方法 IAM

459

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Action": ["iam:GetUserPolicy","iam:ListGroupsForUser","iam:ListAttachedUserPolicies","iam:ListUserPolicies","iam:GetUser"],"Resource": ["arn:aws:iam::*:user/${aws:username}"]},{"Sid": "NavigateInConsole","Effect": "Allow","Action": ["iam:GetGroupPolicy","iam:GetPolicyVersion","iam:GetPolicy","iam:ListAttachedGroupPolicies","iam:ListGroupPolicies","iam:ListPolicyVersions","iam:ListPolicies","iam:ListUsers"],"Resource": "*"}]}Amazon Managed Workflows for Apache Airflow のコンプライアン
ス検証
AWS サービス が特定のコンプライアンスプログラムの範囲内にあるかどうかを確認するには、コン
プライアンスプログラムAWS サービス による対象範囲内のコンプライアンスプログラムを参照し、関心のあるコンプライアンスプログラムを選択します。一般的な情報については、AWS 「コンプライアンスプログラム」を参照してください。
を使用して、サードパーティーの監査レポートをダウンロードできます AWS Artifact。詳細について
は、「 でのレポートのダウンロード AWS Artifact」の」を参照してください。
を使用する際のお客様のコンプライアンス責任 AWS サービス は、お客様のデータの機密性、貴社のコンプライアンス目的、適用される法律および規制によって決まります。 では、コンプライアン
スに役立つ以下のリソース AWS を提供しています。
コンプライアンス検証

460

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• セキュリティとコンプライアンスのクイックスタートガイド – これらのデプロイガイドでは、アーキテクチャ上の考慮事項について説明し、セキュリティとコンプライアンスに重点を置いた
ベースライン環境 AWS を にデプロイする手順について説明します。
• アマゾン ウェブ サービスHIPAAのセキュリティとコンプライアンスのためのアーキテクチャ – このホワイトペーパーでは、企業が AWS を使用して HIPAA対象アプリケーションを作成する方法について説明します。
Note
すべての AWS サービス がHIPAA対象となるわけではありません。詳細について
は、HIPAA「対象サービスリファレンス」を参照してください。
• AWS コンプライアンスリソース – このワークブックとガイドのコレクションは、お客様の業界や地域に適用される場合があります。
• AWS カスタマーコンプライアンスガイド – コンプライアンスの観点から責任共有モデルを理解します。このガイドでは、ガイダンスを保護し AWS サービス 、複数のフレームワーク (米国国立標準技術研究所 (NIST）、Payment Card Industry Security Standards Council ()、PCI国際標準化機
構 (ISO) など) のセキュリティコントロールにマッピングするためのベストプラクティスをまとめています。
• 「 デベロッパーガイド」の「 ルールによるリソースの評価」 – この AWS Config サービスは、リソース設定が社内プラクティス、業界ガイドライン、および規制にどの程度準拠しているかを評価します。 AWS Config• AWS Security Hub – これにより AWS サービス 、 内のセキュリティ状態を包括的に確認できま
す AWS。Security Hub では、セキュリティコントロールを使用して AWS リソースを評価し、セキュリティ業界標準とベストプラクティスに対するコンプライアンスをチェックします。サポートされているサービスとコントロールのリストについては、Security Hub のコントロールリファレン
スを参照してください。
• Amazon GuardDuty – これにより AWS アカウント、疑わしいアクティビティや悪意のあるアク
ティビティがないか環境を監視することで、、、ワークロード、コンテナ、データに対する潜在的な脅威 AWS サービス を検出します。 GuardDuty は、特定のコンプライアンスフレームワークで義務付けられている侵入検知要件を満たすことでDSS、 PCI などのさまざまなコンプライアンス
要件への対応に役立ちます。
• AWS Audit Manager – これにより AWS サービス 、 AWS 使用状況を継続的に監査し、リスクの管理方法と規制や業界標準への準拠を簡素化できます。

コンプライアンス検証

461

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow におけるレジリエ
ンス
AWS グローバルインフラストラクチャは、 AWS リージョンとアベイラビリティーゾーンを中心に構築されています。リージョンには、低レイテンシー、高いスループット、そして高度の冗長ネッ
トワークで接続されている複数の物理的に独立および隔離されたアベイラビリティーゾーンがあります。アベイラビリティーゾーンでは、ゾーン間で中断することなく自動的にフェイルオーバーする
アプリケーションとデータベースを設計および運用することができます。アベイラビリティーゾーン
は、従来の単一または複数のデータセンターインフラストラクチャよりも可用性が高く、フォールト
トレラントで、スケーラブルです。
AWS リージョンとアベイラビリティーゾーンの詳細については、AWS 「 グローバルインフラスト
ラクチャ」を参照してください。

Amazon のインフラストラクチャセキュリティ MWAA
マネージドサービスである Amazon Managed Workflows for Apache Airflow は、 AWS グローバル
ネットワークセキュリティで保護されています。 AWS セキュリティサービスと がインフラストラ
クチャ AWS を保護する方法については、AWS 「 クラウドセキュリティ」を参照してください。インフラストラクチャセキュリティのベストプラクティスを使用して AWS 環境を設計するには、「セキュリティの柱 AWS Well‐Architected Framework」の「Infrastructure Protection」を参照してくだ
さい。
が AWS 公開したAPI呼び出しを使用して、ネットワークMWAA経由で Amazon にアクセスします。
クライアントは以下をサポートする必要があります:• Transport Layer Security (TLS）。1TLS.2 が必要で、1.3 TLS をお勧めします。
• (Ephemeral Diffie-HellmanPFS) や DHE (Elliptic Curve Ephemeral Diffie-Hellman) などの完全前方秘匿性 ECDHE () を備えた暗号スイート。これらのモードは、Java 7 以降など、ほとんどの最新システムでサポートされています。
さらに、 リクエストは、 IAMプリンシパルに関連付けられたアクセスキー ID とシークレットアクセ
スキーを使用して署名する必要があります。または、AWS Security Token Service (AWS STS) を使用して、一時セキュリティ認証情報を生成し、リクエストに署名することもできます。

耐障害性

462

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon での設定と脆弱性の分析 MWAA
設定と IT コントロールは、 AWS とお客様の間で共有される責任です。
Amazon Managed Workflows for Apache Airflow に定期的にパッチを適用し、環境の Apache Airflow
をアップグレードします。に適切なアクセスポリシーが使用されていることを確認する必要がありま
すVPCs。
詳細については、以下のリソース を参照してください。
• Amazon Managed Workflows for Apache Airflow のコンプライアンス検証• 責任共有モデル• Amazon Web Services：セキュリティプロセスの概要• Amazon のインフラストラクチャセキュリティ MWAA
• Amazon のセキュリティのベストプラクティス MWAA

Amazon のセキュリティのベストプラクティス MWAA
Amazon MWAAには、独自のセキュリティポリシーを開発および実装する際に考慮すべきセキュリ
ティ機能が多数用意されています。以下のベストプラクティスは一般的なガイドラインであり、完全なセキュリティソリューションを説明するものではありません。これらのベストプラクティスはお客様の環境に必ずしも適切または十分でない可能性があるので、処方箋ではなく、あくまで有用な考慮
事項とお考えください。
• 最小許可ポリシーを使用します。ユーザーがタスクを実行するのに必要なリソースまたはアクショ
ンのみにアクセス許可を付与します。
• AWS CloudTrail を使用して、アカウントのユーザーアクティビティをモニタリングします。
• Amazon S3 バケットポリシーとオブジェクトが、関連付けられた Amazon MWAA環境のユーザーにオブジェクトをバケットに入れるアクセス許可ACLsを付与していることを確認します。これにより、バケットにワークフローを追加する権限を持つユーザーには、Airflow でワークフローを実行する権限も付与されます。
• Amazon MWAA環境に関連付けられた Amazon S3 バケットを使用します。お使いの Amazon S3
バケットにはどのような名前でもかまいません。他のオブジェクトをバケットに保存したり、別のサービスでバケットを使用したりしないでください。

設定と脆弱性の分析

463

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow でのセキュリティのベストプラクティス
Apache Airflow はマルチテナントではありません。一部の機能を Amazon がMWAA実装する特定のユーザーに制限するアクセスコントロール手段がありますが、DAG作成者は Apache Airflow ユー
ザー権限を変更し、基盤となるメタデータベースとやり取りDAGsできる書き込み機能を備えています。
Amazon で Apache Airflow を操作するときは、環境のメタデータベースとDAGsセキュリティMWAAを確保するために、次のステップを実行することをお勧めします。
• DAG 書き込みアクセス権を持つ個別のチーム、または Amazon S3 /dagsフォルダにファイルを追加する機能には、個別の環境を使用します。Amazon MWAA 実行ロールまたは Apache Airflow
接続からアクセスできるものには、環境に書き込み可能なユーザーもアクセスできると仮定します。
• Amazon S3 DAGsフォルダへの直接アクセスを許可しないでください。代わりに、CI/CD ツールを使用して Amazon S3 DAGsに書き込み、検証手順でDAGコードがチームのセキュリティガイド
ラインを満たしていることを確認します。
• お使いの環境の Amazon S3 バケットへのユーザーアクセスを防ぎます。代わりに、 を保存する
MWAA Amazon S3 バケットとは別の場所に保存されている YAMLJSON、、またはその他の定義
ファイルDAGsに基づいて が生成するDAGファクトリを使用してくださいDAGs。 Amazon S3• Secrets Manager でシークレットを管理するには これにより、 を書き込めるユーザーがシークレットDAGsを読み取ることを防ぐことはできませんが、環境が使用するシークレットを変更することはできません。

Apache Airflow ユーザー権限の変更を検出します。
CloudWatch Logs Insights を使用して、Apache Airflow ユーザー権限DAGsの変更の発生を検出できます。これを行うには、 EventBridge スケジュールされたルール、Lambda 関数、およびCloudWatch Logs Insights を使用して、Apache Airflow ユーザー権限DAGsが変更されるたびにCloudWatch メトリクスに通知を配信できます。
前提条件
このセクションの手順を完了するには、次のものが必要です。
• ログINFOレベルですべての Apache Airflow ログタイプが有効になっている Amazon MWAA環境。
詳細については、「the section called “Airflow ログの表示”」を参照してください。
Apache Airflow でのセキュリティのベストプラクティス

464

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow ユーザー権限が変更された際の通知を構成するには
1.

5 つの Amazon 環境ロググループ (、、、、および ) に対して次の Logs Insights クエリ
文字列を実行する Lambda 関数を作成しますWebServerWorker。 CloudWatch MWAA
DAGProcessing Scheduler Task
fields @log, @timestamp, @message | filter @message like "add-role" | stats count()
by @log

2.

前のステップで作成した Lambda 関数を EventBridge ルールのターゲットとして、スケジュー
ル で実行される ルールを作成します。cron または rate 式を使用して、定期的に実行されるよ
うにスケジュールを構成します。

Apache Airflow でのセキュリティのベストプラクティス

465

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow 用 Amazon マネージドワークフロー上の
Apache Airflow のバージョン
このページでは、Apache Airflow 用 Amazon マネージドワークフローがサポートする Apache
Airflow のバージョンと、最新バージョンへのアップグレードに推奨される戦略について説明します。
トピック• Amazon MWAA のバージョンについて• 最新バージョン• Apache Airflow のバージョン• Apache Airflow コンポーネント• Apache Airflow バージョンのアップグレード• Apache Airflow の非推奨バージョン• Apache Airflow のバージョンサポートとよくある質問

Amazon MWAA のバージョンについて
Amazon MWAA は、Apache Airflow リリースを他の一般的なバイナリや Python ライブラリとバンドルしたコンテナイメージを構築します。このイメージは、指定したバージョンの Apache Airflow
ベースインストールを使用します。環境を作成する時に、使用するイメージバージョンを指定します。環境が一度作成されると、新しいバージョンにアップグレードするまで、指定されたイメージバージョンが使用され続けます。

最新バージョン
Amazon MWAA は複数の Apache Airflow のバージョンをサポートしています。環境の作成時にイメージバージョンを指定しない場合、Amazon MWAA はサポートされている最新バージョンのApache Airflow を使用して環境を作成します。

Apache Airflow のバージョン
以下の Apache Airflow バージョンは、Amazon Managed Workflows for Apache Airflow でサポートされています。
Amazon MWAA のバージョンについて

466

Amazon Managed Workflows for Apache Airflow

ユーザーガイドNote• Apache Airflow v2.2.2 以降、Amazon MWAA は Python 要件、プロバイダーパッケージ、
カスタムプラグインを Apache Airflow ウェブサーバーに直接インストールすることをサポートしています。
• Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める
必要があります。制約を指定しない場合、要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するため、Amazon MWAA は
お客様に代わって制約を指定します。
要件ファイルに制約を設定する方法の詳細については、「Python 依存関係のインストー
ル」を参照してください。

Apache Airflow のバージョン

Apache Airflow ガイド

Apache Airflow の制約

Python バージョン

v2.9.2Apache Airflow v2.9.2
リファレンスガイド

Apache Airflow v2.9.2
制約ファイル「Python 3.11」

v2.8.1Apache Airflow v2.8.1
リファレンスガイド

Apache Airflow v2.8.1
制約ファイル「Python 3.11」「v2.7.2」「Apache Airflow
v2.7.2 リファレンス
ガイド」「Apache Airflow
v2.7.2 制約ファイ
ル」「Python 3.11」「v2.6.3」「Apache Airflow
v2.6.3 リファレンス
ガイド」「Apache Airflow
v2.6.3 制約ファイ
ル」「Python 3.10」「v2.5.1」「Apache Airflow
v2.5.1 リファレンス
ガイド」「Apache Airflow
v2.5.1 制約ファイ
ル」「Python 3.10」

Apache Airflow のバージョン467

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow のバージョン

Apache Airflow ガイド

Apache Airflow の制約

Python バージョン「v2.4.3」「Apache Airflow
v2.4.3 リファレンス
ガイド」「Apache Airflow
v2.4.3 制約ファイ
ル」「Python 3.10」「v2.2.2」「Apache Airflow
v2.2.2 リファレンス
ガイド」「Apache Airflow
v2.2.2 制約ファイ
ル」「Python 3.7」

「v2.0.2」「Apache Airflow
v2.0.2 リファレンス
ガイド」「Apache Airflow
v2.0.2 制約ファイ
ル」「Python 3.7」

自己管理型の Apache Airflow デプロイの移行、または既存の Amazon MWAA 環境の移行について、メタデータデータベースのバックアップ手順を含む詳細情報は、「Amazon MWAA 移行ガイド」 を参照してください。

Apache Airflow コンポーネント
このセクションでは、Amazon MWAA の Apache Airflow バージョンごとに利用可能な Apache
Airflow スケジューラーとワーカーの数について説明し、各機能をサポートするバージョンを示す
Apache Airflow の主要な機能のリストを提供します。

スケジューラApache Airflowのバージョン

スケジューラー(デフォルト)

スケジューラー(最小)

スケジューラー(最大)

Apache Airflow
v2 以上

2

2

5

Apache Airflow コンポーネント

468

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ワーカー
Airflow のバー
ジョン

ワーカー (最小)

ワーカー (最大)ワーカー (デフォルト)

Apache Airflow
v2

1

25

10

Apache Airflow バージョンのアップグレード
Amazon MWAA はマイナーバージョンアップグレードをサポートしています。つまり、環境をバー
ジョン x.1.z から x.2.z にアップグレードすることはできますが、新しいメジャーバージョン (たとえば 1.y.z から 2.y.z へ) にはアップグレードできません。
Note
ご使用の環境に合わせて Apache Airflow バージョンをダウングレードすることはできません。

詳細情報とワークフローリソースを更新する詳細な手順、および環境を新しいバージョンにアップグレードする方法については、「the section called “エンジンバージョンのアップグレード”」を参照してください。

Apache Airflow の非推奨バージョン
次の表は、Amazon MWAA におけるApache Airflowの非推奨バージョンと、各バージョンの初期リ
リース日およびサポート終了日を一覧表示します。新しいバージョンへの移行に関する詳細について
は、「Amazon MWAA 移行ガイド」を参照してください。
Apache Airflowのバージョン

Apache Airflow
リリース日

Amazon MWAA
利用開始日

Amazon MWAA
限定サポート日

Amazon MWAA
サポート終了日v1.10.12

2020 年 8 月 25
日2020 年 11 月 24日

2023 年 8 月 21日

2024 年 2 月 21
日

ワーカー

469

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflowのバージョン

Apache Airflow
リリース日

Amazon MWAA
利用開始日

Amazon MWAA
限定サポート日

Amazon MWAA
サポート終了日v2.0.22021 年 4 月 19日

2021 年 5 月 25日

2023 年 11 月 23日

2024 年 4 月 29
日

v2.2.22021 年 11 月 15日

2022 年 1 月 27日

2024 年 1 月 25日

2024 年 6 月 27日

Apache Airflow のバージョンサポートとよくある質問
Apache Airflow コミュニティの「リリースプロセスとバージョンポリシー」に従い、Amazon MWAA
は常に Apache Airflow の少なくとも 3 つのマイナーバージョンをサポートすることを約束しています。Apache Airflow における規定のマイナーバージョンのサポート終了日については、サポート終了
日の少なくとも 90 日前に発表します。

よくある質問Q: Amazon MWAA は Apache Airflow バージョンをどのくらいの期間サポートしますか?
A: Amazon MWAA は、Apache Airflow のマイナーバージョンが最初に利用可能になってから最低12ヶ月間サポートします。
Q: Amazon EKS でバージョンのサポートが終了する際には通知が届きますか?
A: はい。アカウント内のいずれかの Amazon MWAA 環境がサポート終了間近のバージョンを実行している場合、Amazon MWAA はサポート終了日 AWS Health Dashboard を記載した通知を を通じて送信します。
Q: 限定サポート日にはどうなりますか?
A: 限定サポート日には、関連付けのバージョンで新しい Amazon MWAA 環境を作成できなくなります。既存の環境は、サポートの終了日まで利用可能です。
Q: サポート終了日にはどうなりますか?
A: サポート終了日には、関連する非推奨バージョンの Apache Airflow を実行する既存の Amazon
MWAA 環境には、引き続きお客様の責任でアクセスできます。Amazon MWAA で Apache Airflow を
新しいバージョンにアップグレードする手順については、「Amazon MWAA 移行ガイド」を参照してください。
Apache Airflow のバージョンサポートとよくある質問

470

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Important
お客様は、Amazon MWAA バージョンを最新の状態に保つ責任があります。 は、最新のセキュリティ、プライバシー、および可用性の保護策を活用するために、すべてのお客様に Amazon MWAA 環境を最新バージョンにアップグレードするよう AWS 促します。レガシーバージョン と呼ばれるサポートされていないバージョンまたはソフトウェアで環境を運用している場合、ダウンタイムイベントを含むセキュリティ、プライバシー、運用上のリス
クにさらされる可能性があります。Amazon MWAA 環境をレガシーバージョンで運用することで、これらのリスクを理解し、意図的に引き受けることを確認し、可能な限り早急に最新バージョンへのアップグレードを完了することに同意したことになります。レガシーバー
ジョンでの環境の継続的な運用には、 AWS サービスの使用に適用される契約が適用されます。
レガシーバージョンは一般公開されていないと見なされ、レガシーバージョンのサポートは
提供 AWS されなくなりました。その結果、 は、レガシーバージョンがサービス、、 AWS
その関連会社、またはその他の第三者にセキュリティまたは責任のリスク、または損害のリスクをもたらす AWS と判断した場合、いつでもレガシーバージョンへのアクセスまたは使用を制限 AWS できます。レガシーバージョンでワークロードを引き続き実行すると、コンテンツが使用不能、破損、または回復不能になる可能性があります。レガシーバージョンで実行されている環境には、サービスレベルアグリーメント (SLA) の例外が適用されます。
レガシーバージョンで実行されている環境および関連ソフトウェアには、バグ、エラー、欠陥、および有害なコンポーネントが含まれている可能性があります。したがって、契約に矛盾する情報や利用規約にかかわらず、 はレガシーバージョンを として AWS 提供します。
の責任共有モデルの詳細については、 AWS WellAWS -Architected フレームワークの「責任共有」を参照してください。

よくある質問471

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow のサービス
エンドポイントとクォータ
Amazon Managed Workflows for Apache Airflow には、以下のサービスクォータとエンドポイントがあります。制限とも呼ばれるサービスクォータは、 AWS アカウントのサービスリソースまたはオペ
レーションの最大数です。
目次• サービスエンドポイント• Service Quotas• クォータの増加

サービスエンドポイント
Amazon MWAA のエンドポイントのリストを表示するには、「Apache Airflow エンドポイントとクォータ用の Amazon マネージドワークフロー」を参照してください。

Service Quotas
クォータ名

説明

デフォルトのクォー
タ

調整可能

環境

リージョンごとに、
1 アカウントあたりのAmazon MWAA 環境
の最大数。

10

[Yes (はい)]

環境ごとのワーカーの数

Amazon MWAA 環
境あたりの最大ワー
カー数。

25

はい

環境あたりのウェブ
サーバー

Amazon MWAA 環境
あたりのウェブサー
バーの最大数。

5

はいサービスエンドポイント

472

Amazon Managed Workflows for Apache Airflow

ユーザーガイドクォータの増加「クォータ引き上げリクエスト」を送信することで、調整可能なクォータへの増額をリクエストできます。

クォータの増加

473

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA のよくある質問
このページでは、Amazon Managed Workflows for Apache Airflow を使用する際に起こる可能性のある一般的な疑問について説明します。
目次• サポートバージョン• Amazon が Apache Airflow v2 でMWAAサポートしているもの• 古いバージョンの Apache Airflow がサポートされていないのはなぜですか?
• どの Python バージョンを使用する必要がありますか?
• Amazon pipはどのバージョンの MWAAを使用していますか？
• ユースケース• AWS Step Functions と をいつ使用すべきか Amazon MWAA？
• 環境仕様• 各環境で使用できるタスクストレージの容量はどれくらいですか?
• Amazon MWAA環境で使用されるデフォルトのオペレーティングシステムは何ですか？
• Amazon MWAA環境にカスタムイメージを使用できますか？
• Amazon MWAAHIPAAは準拠していますか？
• Amazon はスポットインスタンスMWAAをサポートしていますか？
• Amazon はカスタムドメインMWAAをサポートしていますか？
• 自分の環境にSSH侵入できますか？
• VPC セキュリティグループで自己参照ルールが必要なのはなぜですか？
• の異なるグループから環境を非表示にできますかIAM？
• 一時データを Apache Airflow ワーカーに保存できますか?
• 25 個以上の Apache Airflow ワーカーを指定できますか?
• Amazon は共有 Amazon VPCs または共有サブネットMWAAをサポートしていますか？
• メトリクス• ワーカーをスケーリングするかどうかの判断にはどのようなメトリックスが使用されますか?
• でカスタムメトリクスを作成できますか CloudWatch？
• DAGs、演算子、接続、およびその他の質問• PythonVirtualenvOperator は使えますか?

474

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon が新しいDAGファイルを認識するMWAAのにどれくらいの時間がかかりますか？
• DAG ファイルが Apache Airflow によって取得されないのはなぜですか？
• 環境から plugins.zip または requirements.txt を削除できますか?
• Apache Airflow v2.0.2 の管理プラグインメニューに自分のプラグインが表示されないのはなぜですか?
• AWS Database Migration Service (DMS) Operators を使用できますか？

サポートバージョン
Amazon が Apache Airflow v2 でMWAAサポートしているもの
Amazon がMWAAサポートする機能については、「」を参照してくださいApache Airflow 用 Amazon
マネージドワークフロー上の Apache Airflow のバージョン。

古いバージョンの Apache Airflow がサポートされていないのはなぜですか?
古いバージョンではセキュリティ上の懸念があるため、（発売時点で）最新の Apache Airflow バー
ジョンの Apache Airflow v1.10.12 のみをサポートしています。

どの Python バージョンを使用する必要がありますか?
以下の Apache Airflow バージョンは、Amazon Managed Workflows for Apache Airflow でサポートされています。
Note• Apache Airflow v2.2.2 以降、Amazon MWAAは Python 要件、プロバイダーパッケージ、
カスタムプラグインを Apache Airflow ウェブサーバーに直接インストールすることをサポートしています。
• Apache Airflow v2.7.2 から、要件ファイルには --constraint ステートメントを含める
必要があります。制約を指定しない場合、Amazon MWAAは要件に記載されているパッケージが使用している Apache Airflow のバージョンと互換性があることを確認するために制約を指定します。
サポートバージョン

475

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

要件ファイルに制約を設定する方法の詳細については、「Python 依存関係のインストー
ル」を参照してください。

Apache Airflow のバージョン

Apache Airflow ガイド

Apache Airflow の制約

Python バージョン

v2.9.2Apache Airflow v2.9.2
リファレンスガイド

Apache Airflow v2.9.2
制約ファイル

Python 3.11

v2.8.1Apache Airflow v2.8.1
リファレンスガイド

Apache Airflow v2.8.1
制約ファイル

Python 3.11

v2.7.2Apache Airflow v2.7.2
リファレンスガイド

Apache Airflow v2.7.2
制約ファイル

Python 3.11

v2.6.3

Apache Airflow v2.6.3
リファレンスガイド

Apache Airflow v2.6.3
制約ファイル

Python 3.10

v2.5.1Apache Airflow v2.5.1
リファレンスガイド

Apache Airflow v2.5.1
制約ファイル

Python 3.10

v2.4.3

Apache Airflow v2.4.3
リファレンスガイド

Apache Airflow v2.4.3
制約ファイル

Python 3.10

v2.2.2Apache Airflow v2.2.2
リファレンスガイド

Apache Airflow v2.2.2
制約ファイル「Python 3.7」

v2.0.2Apache Airflow v2.0.2
リファレンスガイド

Apache Airflow v2.0.2
制約ファイル「Python 3.7」

メタデータデータベースのバックアップ手順など、セルフマネージド Apache Airflow デプロイの移行や既存の Amazon MWAA環境の移行の詳細については、「Amazon MWAA 移行ガイド」を参照してください。

Python バージョン476

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon pipはどのバージョンの MWAAを使用していますか？
Apache Airflow v1.10.12 を実行している環境の場合、Amazon はpipバージョン 21.1.2 MWAAをインストールします。
Note
Amazon MWAAは Apache Airflow v1.10.12 環境pipにアップグレードしません。

Apache Airflow v2 以降を実行している環境の場合、Amazon はpipバージョン 21.3.1 MWAAをインストールします。

ユースケースAWS Step Functions と をいつ使用すべきか Amazon MWAA？
1.

Step Functions は 1 件の注文または 100 万件の注文の需要に合わせてスケーリングできるた
め、Step Functions を使用して個々の顧客の注文を処理できます。

2.

前日の注文を処理する夜間ワークフローを実行している場合は、Step Functions または Amazonを使用できますMWAA。Amazon MWAA では、使用している AWS リソースからワークフロー
を抽象化するためのオープンソースオプションを使用できます。

環境仕様
各環境で使用できるタスクストレージの容量はどれくらいですか?
タスクストレージは 20 GB に制限されており、Amazon ECS Fargate 1.4 で指定されています。の量はRAM、指定した環境クラスによって決まります。環境タグ付けの詳細については、「Amazon
MWAA環境クラスの設定」を参照してください。

Amazon MWAA環境で使用されるデフォルトのオペレーティングシステム
は何ですか？
Amazon MWAA環境は、バージョン 2.6 以前では Amazon Linux 2 を実行しているインスタンスで作成され、バージョン 2.7 以降では Amazon Linux 2023 を実行しているインスタンスで作成されます。
アプリケーションのバージョン477

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA環境にカスタムイメージを使用できますか？
カスタムイメージはサポートされていません。Amazon は、Amazon Linux 上に構築されたイメー
ジMWAAを使用しますAMI。Amazon は、環境の Amazon S3 バケットに追加する requirements.txt
ファイルで指定された要件pip3 -r installに対して を実行して、追加要件MWAAをインストー
ルします。 Amazon S3

Amazon MWAAHIPAAは準拠していますか？
Amazon MWAA は、医療保険の相互運用性と説明責任に関する法律 (HIPAA) の対象となります。でHIPAA事業提携契約 (BAA) を締結している場合は AWS、2022 年 11 月 14 日以降に作成された環境で保護対象医療情報 (PHI) を処理するMWAAワークフローに Amazon を使用できます。

Amazon はスポットインスタンスMWAAをサポートしていますか？
Amazon MWAAは現在、Apache Airflow EC2 のオンデマンド Amazon スポットインスタンスタイプをサポートしていません。ただし、Amazon MWAA環境は、Amazon EMRや Amazon などでスポッ
トインスタンスをトリガーできますEC2。

Amazon はカスタムドメインMWAAをサポートしていますか？
Amazon MWAAホスト名にカスタムドメインを使用するには、次のいずれかを実行します。
• パブリックウェブサーバーアクセスを使用する Amazon MWAAデプロイでは、Amazon
CloudFront と Lambda@Edge を使用してトラフィックを環境に転送し、カスタムドメイン名をにマッピングできます CloudFront。パブリック環境のカスタムドメインの設定の詳細と例については、Amazon サンプルリポジトリの「パブリックウェブサーバーの Amazon MWAAカスタムド
メインのサンプル」を参照してください。 MWAA GitHub• プライベートウェブサーバーアクセスを使用した Amazon MWAAデプロイについては、「」を参照してくださいthe section called “カスタムドメインのセットアップ”。

自分の環境にSSH侵入できますか？
SSH は Amazon MWAA環境ではサポートされていませんが、 を使用して bash コマンドDAGを実行することは可能ですBashOperator。例:
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
カスタムイメージ

478

Amazon Managed Workflows for Apache Airflow

ユーザーガイドwith DAG(dag_id="any_bash_command_dag", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
cli_command = BashOperator(
task_id="bash_command",bash_command="{{ dag_run.conf['command'] }}")Apache Airflow UI DAGで をトリガーするには、以下を使用します。
{ "command" : "your bash command"}VPC セキュリティグループで自己参照ルールが必要なのはなぜですか？
自己参照ルールを作成することで、ソースを 内の同じセキュリティグループに制限しVPC、すべてのネットワークに開放されるわけではありません。詳細については、「the section called “VPC におけるセキュリティ”」を参照してください。

の異なるグループから環境を非表示にできますかIAM？
で環境名を指定することでアクセスを制限できます AWS Identity and Access Managementが、可視性フィルタリングは AWS コンソールでは使用できません。ユーザーが 1 つの環境を表示できる場
合、すべての環境を表示できます。

一時データを Apache Airflow ワーカーに保存できますか?
Apache Airflow オペレータはワーカーに一時データを保存できます。Apache Airflow ワーカーは、お客様の環境の Fargate コンテナにある /tmp の一時ファイルにアクセスできます。
Note
Amazon ECS Fargate 1.3 によると、タスクストレージの合計は 10 GB に制限されています。後続のタスクが同じ Fargate コンテナインスタンスで実行される保証はありません。この Fargate コンテナインスタンスは別の /tmp フォルダを使用する可能性があります。

25 個以上の Apache Airflow ワーカーを指定できますか?
はい。Amazon MWAAコンソールでは最大 25 人の Apache Airflow ワーカーを指定できますが、クォータの引き上げをリクエストすることで、環境で最大 50 人の Apache Airflow ワーカーを設定で自己参照ルール

479

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

きます。詳細については、「Requesting a quota increase」(クォータ引き上げのリクエスト) を参照
してください。

Amazon は共有 Amazon VPCs または共有サブネットMWAAをサポートしていますか？
Amazon MWAA は、共有 Amazon VPCsまたは共有サブネットをサポートしていません。環境の作
成時にVPC選択する Amazon は、環境を作成しようとしているアカウントによって所有されている必要があります。ただし、Amazon MWAAアカウントの VPC Amazon から共有 にトラフィックをルーティングすることはできますVPC。詳細については、「Amazon Transit Gateways Guide」のVPC「Centralized outbound routing to the internet」を参照してください。 VPC

メトリクス
ワーカーをスケーリングするかどうかの判断にはどのようなメトリックス
が使用されますか?
Amazon は QueuedTasksと RunningTasks をMWAAモニタリング CloudWatch して、お客様の環境
で Apache Airflow ワーカーをスケーリングするかどうかを判断します。詳細については、「モニタリングおよびメトリクス」を参照してください。

でカスタムメトリクスを作成できますか CloudWatch？
CloudWatch コンソールにはありません。ただし、 でカスタムメトリクスDAGを書き込む を作成できます CloudWatch。詳細については、「the section called “を使用したカスタムメトリクスのDAG
書き込み”」を参照してください。

DAGs、演算子、接続、およびその他の質問
PythonVirtualenvOperator は使えますか?
PythonVirtualenvOperator は Amazon では明示的にサポートされていませんがMWAA、 を使用するカスタムプラグインを作成できますPythonVirtualenvOperator。サンプルコードについては、「the section called “パッチするカスタムプラグイン PythonVirtualenvOperator ”」を参照してください。
共有 Amazon VPCs

480

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon が新しいDAGファイルを認識するMWAAのにどれくらいの時間がかかりますか？
DAGs は、Amazon S3 バケットからお客様の環境に定期的に同期されます。新しいDAGファイルを追加すると、Amazon が新しいファイルの使用を開始するMWAAまでに約 300 秒かかります。既存の を更新するとDAG、Amazon が更新を認識するまでにMWAA約 30 秒かかります。
これらの値は、新しい の場合は 300 秒DAGs、既存の の更新の場合は 30 秒でDAGs、min_file_process_intervalそれぞれ Apache Airflow 設定オプション
dag_dir_list_intervalおよび に対応します。

DAG ファイルが Apache Airflow によって取得されないのはなぜですか？
このセクションでは、以下の問題の発生時に考えられる対策について説明します。
1.

実行ロールに Amazon S3 バケットに対する十分なアクセス権限があることを確認します。詳細
については、「Amazon MWAA 実行ロール」を参照してください。

2.

Amazon S3 バケットに Block Public Access が設定され、バージョニングが有効になっていることを確認します。詳細については、「Amazon MWAA 用の Amazon S3 バケットの作成」を参照してください。

3.

DAG ファイル自体を確認します。例えば、それぞれに一意の DAG ID DAGがあることを確認してください。

環境から plugins.zip または requirements.txt を削除できますか?
現在、plugins.zip や requirements.txt を追加したら環境から削除する方法はありませんが、現在対応中です。当面の回避策は、それぞれ空のテキストまたは zip ファイルを指すことです。詳細について
は、「Amazon S3 でファイルの削除」を参照してください。

Apache Airflow v2.0.2 の管理プラグインメニューに自分のプラグインが表示されないのはなぜですか?
セキュリティ上の理由から、Amazon の Apache Airflow ウェブサーバーMWAAではネットワーク出力が制限されており、バージョン 2.0.2 環境ではプラグインや Python の依存関係は Apache Airflow
ウェブサーバーに直接インストールされません。表示されるプラグインにより、Amazon は AWS
Identity and Access Management () で Apache Airflow ユーザーMWAAを認証できますIAM。
Amazon が新しいDAGファイルを認識するMWAAのにどれくらいの時間がかかりますか？

481

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

プラグインと Python の依存関係をウェブサーバーに直接インストールできるようにするには、Apache Airflow v2.2 以降で新しい環境を作成することをお勧めします。Amazon は、Python の依存関係とカスタムプラグインを Apache Airflow v2.2 以降のウェブサーバーに直接MWAAインス
トールします。

AWS Database Migration Service (DMS) Operators を使用できますか？
Amazon MWAAはDMSオペレーター をサポートしています。ただし、この演算子を使用して、Amazon MWAA環境に関連付けられた Amazon Aurora PostgreSQL メタデータデータベースでアクションを実行することはできません。

AWS Database Migration Service (DMS) Operators を使用できますか？

482

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon Managed Workflows for Apache Airflow のトラブル
シューティング
このトピックでは、Apache Airflow 用 Amazon マネージドワークフローで Apache Airflow を使用する際に発生する可能性のある一般的な問題とエラー、およびこれらのエラーを解決するための推奨手順について説明します。
目次• トラブルシューティング Apache Airflow v2 における DAG、オペレータ、接続、その他の問題• 接続• Secrets Manager に接続できません。
• secretsmanager:ResourceTag/<tag-key> シークレットマネージャの条件またはリソース制
限は、実行ロールポリシーでどのように設定しますか。
• Snowflake に接続できません。
• Airflow UIに接続が表示されない• ウェブサーバ• ウェブサーバーにアクセスすると、5xx エラーが表示されます。
• 「スケジューラーは実行されていないようです」というエラー表示があります。
• タスク• タスクが行き詰まっいるか、完了していません。
• CLI• CLI で DAG をトリガーすると「503」エラーが表示されます• dags backfill Apache エアフロー CLI コマンドが失敗した原因は？ 回避策はありますか?
• 演算子• S3-Transform オペレータの使用中に PermissionError: [Errno 13] Permission denied エラーが発生しました。
• トラブルシューティング:Apache Airflow v1 の DAGs、オペレータ、接続、およびその他の問題• requirements.txt の更新• apache-airflow-providers-amazon を追加すると、環境が失敗します。
• Broken DAG

483

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Amazon DynamoDB オペレーターを使用しているときに「DAG が壊れました」というエラーが表示されました• 「壊れた DAG：psycopg2 という名前のモジュールはありません」というエラーが表示されました。
• Slack オペレータを使用しているときに「DAG が壊れました」というエラーが表示されました。
• Google/GCP/BigQuery のインストール中に、さまざまなエラーが発生しました。
• 「DAG が壊れました：Cython という名前のモジュールはありません」というエラーが表示されました。
• 演算子• BigQuery オペレータの使用中にエラーが発生しました。
• 接続• Snowflake に接続できません。
• Secrets Manager に接続できません。
• 「<DB-identifier-name>.cluster-id.rds.amazonaws.com」 の MySQL サーバに接続できません。
• ウェブサーバ• BigQueryOperator を使用しており、そのせいで web サーバーがクラッシュした。
• ウェブサーバーにアクセスすると、5xx エラーが表示されます。
• 「スケジューラーは実行されていないようです」というエラー表示があります。
• タスク• タスクが行き詰まっいるか、完了していません。
• CLI• CLI で DAG をトリガーすると「503」エラーが表示されます• トラブルシューティング: Amazon MWAA環境の作成と更新• requirements.txt の更新• 新しいバージョンを指定しましたが、requirements.txt 環境の更新に 20 分以上かかります。
• プラグイン• Amazon はカスタム UI の実装MWAAをサポートしていますか？
484

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• プラグインを使用して Amazon MWAA Local Runner にカスタム UI の変更を実装できますが、Amazon で同じ操作を実行しようとするとMWAA、変更やエラーは表示されません。
この問題が発生する理由• バケットを作成する• S3 のパブリックアクセスのブロック設定を選択できない• 環境を作成する• 環境を作成しようとしましたが、「作成中」の状態のままです。
• 環境を作成しようとしましたが、ステータスが「Create failed」と表示されます。
• を選択しようとVPCして「ネットワーク障害」というエラーが表示されました• 環境を作成したときに、サービス、パーティション、またはリソースに「渡さなければなりません」というエラーが表示されました。
• 環境を作成しようとしたところ、ステータスが「使用可能」と表示されているのに、Airflow
UI にアクセスしようとすると、「サーバーからの返信が空です」または「502 Bad ゲートウェイ」というエラーが表示されます。
• ユーザー名がランダムな文字名の集まりになっている環境を作成しようとしました• update-environment• 環境クラスを変更しようとしましたが、更新に失敗しました• アクセス環境• Apache Airflow UI にアクセスできません• トラブルシューティング:CloudWatch ログ記録と CloudTrail のエラー
• ログ
• タスクログが表示されないか、「Cloudwatch log_group からリモートログを読み取っています」というエラーが表示されます。
• ログなしでタスクが失敗しました• CloudTrail に「リソースはすでに存在している例外」というエラーが表示されます• CloudTrail に「リクエストが無効です」というエラーが表示されます。
• Apache Airflow ログに「64 ビット Oracle クライアントライブラリが見つかりませんでした:「libclntsh.so: 共有オブジェクトファイルを開くことができません:そのようなファイル
またはディレクトリはありません」と表示されます。
• ディスパッチャのログに psycopg2 「サーバが接続を誤って閉じました」とあります。
• 「タスクインスタンス%sが完了したとExecutorから報告されました(%s)。ただし、タスク
485
はDAG処理ログに%s表示されています。」が表示されました。

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• 「log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log からリモートログを読み込めませんでした」と表示されました。自分のタ
スクログ

トラブルシューティング Apache Airflow v2 における DAG、オペ
レータ、接続、その他の問題
このページのトピックでは、Apache Airflow v2 Python の依存関係、カスタムプラグイン、DAGs、オペレータ、接続、タスク、およびウェブサーバが Amazon でホストされている Apache Airflow
ワークフロー環境で発生する可能性のある問題の解決方法について説明します。
目次• 接続• Secrets Manager に接続できません。
• secretsmanager:ResourceTag/<tag-key> シークレットマネージャの条件またはリソース制限
は、実行ロールポリシーでどのように設定しますか。
• Snowflake に接続できません。
• Airflow UIに接続が表示されない• ウェブサーバ• ウェブサーバーにアクセスすると、5xx エラーが表示されます。
• 「スケジューラーは実行されていないようです」というエラー表示があります。
• タスク• タスクが行き詰まっいるか、完了していません。
• CLI• CLI で DAG をトリガーすると「503」エラーが表示されます• dags backfill Apache エアフロー CLI コマンドが失敗した原因は？ 回避策はありますか?
• 演算子• S3-Transform オペレータの使用中に PermissionError: [Errno 13] Permission denied エラーが発生しました。

Apache Airflow v2

486

Amazon Managed Workflows for Apache Airflow

ユーザーガイド接続
以下のトピックでは、Apache Airflow の接続を使用する際や別の AWS データベースを使用する際に受け取る可能性のあるエラーについて説明しています。

Secrets Manager に接続できません。
次のステップを推奨します。
1.

Apache Airflow 接続と変数のシークレットキーを作成する方法を「the section called “Secrets
Manager の設定”」 で学習できます。

2.

test-variable で ApacheAirflow 変数 (Apache Airflow 変数 AWS Secrets Manager の でのシークレットキーの使用) のシークレットキーを使用する方法を学習します。

3.

Apache Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する で ApacheAirflow
接続 (myconn) のシークレットキーを使用する方法を学習します。

secretsmanager:ResourceTag/<tag-key> シークレットマネージャの条件またはリソース制限は、実行ロールポリシーでどのように設定しますか。
Note
Apache Airflow バージョン 2.0 やそれ以前のバージョンに適用されます。

現時点では、Apache Airflow の既知の問題のため、環境の実行ロールで条件キーやその他のリソース制限を使用して Secrets Manager secrets へのアクセスを制限することはできません。

Snowflake に接続できません。
次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

ご使用の環境に適した requirements.txt に次のエントリを追加します。
apache-airflow-providers-snowflake==1.3.0

3.
接続

以下のインポートを DAG に追加する：
487

Amazon Managed Workflows for Apache Airflow

ユーザーガイドfrom airflow.providers.snowflake.operators.snowflake import SnowflakeOperator

Apache Airflow 接続オブジェクトに、次のキーバリューのペアが含まれていることを確認します。
1.

接続 ID: snowflake_conn2.

コーンタイプ: スノーフレーク

3.

ホスト： <my account> <my region if not us-west-2>.snowflakecomputing.com

4.

スキーマ: <my schema>

5.

ログイン： <my user name>6.

パスワード： ********

7.

ポート: <port, if any>

8.

エキストラ：{"account": "<my account>","warehouse": "<my warehouse>","database": "<my database>","region": "<my region if not using us-west-2 otherwise omit this line>"}

例:>>> import json>>> from airflow.models.connection import Connection>>> myconn = Connection(...
conn_id='snowflake_conn',...
conn_type='Snowflake',...
host='YOUR_ACCOUNT.YOUR_REGION.snowflakecomputing.com',...
schema='YOUR_SCHEMA'...
login='YOUR_USERNAME',...
password='YOUR_PASSWORD',...
port='YOUR_PORT'...
extra=json.dumps(dict(account='YOUR_ACCOUNT', warehouse='YOUR_WAREHOUSE',
database='YOUR_DB_OPTION', region='YOUR_REGION')),
... )

接続

488

Amazon Managed Workflows for Apache Airflow

Airflow UI

ユーザーガイドに接続が表示されない

Apache Airflow は Apache Airflow UI に接続テンプレートを用意しています。接続タイプに関係な
く、接続 URI 文字列を生成します。Apache Airflow UI に接続テンプレートがない場合は、HTTP 接
続テンプレートを使用するなど、代替の接続テンプレートを使用して接続 URI 文字列を生成できます。
次のステップを推奨します。
1.

Amazon MWAA が Apache Airflow UI で提供している接続タイプについては、「Amazon MWAA
環境にインストールされている Apache エアフロープロバイダーパッケージ」 を参照してください。

2.

Apache Airflow CLI コマンドリファレンス のCLI でApache Airflow接続を作成するコマンドを確
認します。

3.

接続タイプの概要 Amazon MWAA上のApache Airflow UI では使用できない接続タイプのために、Apache Airflow UI で接続テンプレートを交換して使用する方法を学習します。

ウェブサーバ
次のトピックでは、Amazon MWAA 上の Apache Airflow ウェブサーバーで発生する可能性のあるエラーについて説明します。

ウェブサーバーにアクセスすると、5xx エラーが表示されます。
次のステップを推奨します。
1.

Apache Airflow 構成オプションを確認してください。Apache Airflow 構成オプションとして指定したキーと値のペア（例： AWS Secrets Manager ）が正しく設定されていることを確認してください。詳細については、「the section called “Secrets Manager に接続できません。”」を参照
してください。

2.

requirements.txt をチェックしてください。Apache Airflow バージョンと互換性のある、requirements.txt にリストされている Airflow の「extras」パッケージおよびその他のライブラリを確認してください。

3.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

ウェブサーバ489

Amazon Managed Workflows for Apache Airflow

ユーザーガイド「スケジューラーは実行されていないようです」というエラー表示があります。
スケジューラが実行されていないように見える場合や、最後の「ハートビート」が数時間前に受信された場合は、DAGs が Apache Airflow に表示されず、新しいタスクがスケジューリングされない可能性があります。
次のステップを推奨します。
1.

VPC セキュリティグループがポート 5432 へのインバウンドアクセスを許可していることを確認します。これは、ご使用の環境の Amazon Aurora PostgreSQL メタデータデータベースに接続するために必要のポートです。このルールを追加したら、 Amazon MWAA を数分間待つとエラーは消えるはずです。詳細については、「the section called “VPC におけるセキュリティ”」を参照してください。
Note• Aurora PostgreSQL メタデータベースは 「Amazon MWAAサービスアーキテクチャ」の一部であり、AWS アカウント では表示されません。
• データベース関連のエラーは通常、スケジューラー障害の症状であり、根本的な原因ではありません。

2.

スケジューラーが動作していない場合は、「依存関係のインストールの失敗」 や 「スケジュー
ラーの過負荷」 など、さまざまな要因が原因である可能性があります。CloudWatch Logs で対応するロググループを表示して、DAGs、プラグイン、および要件が正しく機能していることを確認します。詳細については、「モニタリングおよびメトリクス」を参照してください。

タスク
次のトピックでは、Apache Airflow ログを表示した際に発生する可能性があるエラーについて説明します。

タスクが行き詰まっいるか、完了していません。
Apache Airflow タスクが「行き詰まっている」か、完了していない場合は、次のステップを実行することをお勧めします。
1.

タスク

多数の DAG が定義されている可能性があります。DAG の数を減らし、環境の更新 (ログレベルの変更など) を実行して強制的にリセットしてください。
490

Amazon Managed Workflows for Apache Airflowa.

ユーザーガイド

Airflow は DAG が有効かどうかに関係なく解析します。環境の 50% を超える容量を使用していると、Apache Airflow スケジューラに負荷がかかり始める可能性があります。これにより、CloudWatch メトリクスの合計解析時間が長くなったり、CloudWatCloudWatch Logsの DAG 処理時間が長くることがあります。Apache Airflow の設定を最適化する方法は他にもありますが、このガイドの対象範囲には含まれていません。

b.

2.

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。

キューには、多数のタスクがある可能性があります。これは通常、「なし」状態のタスクが多数発生しているか、CloudWatch でキューに入れられたタスクや保留中のタスクが多数発生している場合に発生します。これは以下のような原因で起こりうる：
a.

実行するタスクの数が環境の実行能力を超えている場合や、自動スケーリング前にキューに入れられたタスクの数が多い場合は、タスクを検出して追加のワーカー.をデプロイする時間があります。

b.

実行するタスクの数が、実行可能な環境よりも多い場合は、DAG が同時に実行するタスクの数を減らすか、Apache Airflow ワーカーの最小数を増やすことをお勧めします。

c.

自動スケーリングで追加のワーカーを検出してデプロイする時間ができる前に、大量のタス
クがキューに入れられている場合は、タスクの配備をずらすか、最小 Apache Airflow ワー
カスレッドを増やすことをお勧めします。

d.

AWS Command Line Interface (AWS CLI) の 「update-environment」 コマンドを使用して、環境で実行されるワーカーの最小数または最大数を変更できます。
aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --maxworkers 10e.

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。

3.

タスクログとして表示され、それ以上の指示なしに Apache Airflow で停止したタスクが、実行中に削除された可能性があります。これは以下のような原因で起こりうる：a.

タスクもし、1）現在のタスクが現在の環境のキャパシティを超え、2）数分間、タスクが実行されなかったり、キューに入れられなかったりした後、3）新しいタスクがキューに入れられたりする瞬間があります。

491

Amazon Managed Workflows for Apache Airflowb.

ユーザーガイド

Amazon MWAA 自動スケーリングは、最初のシナリオに応じてワーカーを追加します。2
番目のシナリオでは、追加のワーカーが削除されます。キューに入っているタスクの中には、ワーカーが削除される過程にあり、コンテナが削除された時点で終了するものもあります。

c.

環境内の最小ワーカー数を増やすことをお勧めします。もう 1 つの選択肢は、DAG とタス
クの時間を調整して、これらの状況が発生しないようにすることですd.

また、最小ワーカー数を環境内の最大ワーカー数と同じようにに設定して、オートスケー
リングを効果的に無効にすることもできます。AWS Command Line Interface (AWS CLI) の「update-environment」 コマンドを使用して、ワーカーの最小数と最大数を同じに設定して自動スケーリングを無効にします。
aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --maxworkers 5

e.

4.

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。

タスクが「実行中」状態のままになっている場合は、タスクをクリアしたり、成功または失敗のマークを付けることもできます。これにより、環境の自動スケーリングコンポーネントは、環境で実行されているワーカー数をスケールダウンできます。次の図は、取り残されたタスクの例です。

•

取り残されたタスクの円を選択し、クリアを選択します（図を参照）。これにより Amazon
MWAA はワーカーをスケールダウンできます。そうしない場合、Amazon MWAA はどの
DAG が有効か無効かを判断できず、キューにタスクが残っている場合はスケールダウンで
きません。

タスク

492

Amazon Managed Workflows for Apache Airflow

5.

ユーザーガイド

Apache Airflow タスクライフサイクルの詳細については、Apache Airflow リファレンスガイドの「概念」 を参照してください。

CLI
次のトピックでは、AWS Command Line Interface で Airflow CLI コマンドを実行したときに発生する可能性があるエラーについて説明します。

CLI で DAG をトリガーすると「503」エラーが表示されます
Airflow CLI は Apache Airflow ウェブサーバー上でで実行され、同時実行性が制限されています。通常、 CLI コマンドを最大 4 つ同時に実行できます。

CLI

493

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

dags backfill Apache エアフロー CLI コマンドが失敗した原因は？ 回避策はあり
ますか?
Note
以下は Apache Airflow v2.0.2 の環境にのみ適用されます。

他の Apache Airflow CLI コマンドと同様に、backfill コマンドはすべての DAGs を処理する前に、CLI 操作がどの DAGs に適用されているかに関係なく、すべての DAGs をローカルに解決します。Apache Airflow v2.0.2 を使用する Amazon MWAA 環境では、CLI コマンドの実行時にプラグインと要件がウェブサーバにインストールされていないため、解決操作が失敗し、backfill 操作が呼び出されません。環境に要件やプラグインがない場合、backfill 操作は成功します。
backfill CLI コマンドを実行できるようにするには、bash 演算子で呼び出すことをお勧めします。bash オペレータでは、backfill はワーカーから起動されます。これにより、必要な要件とプラグインがすべて使用可能になり、インストール後、 DAG が正常に解析できるようになります。次の例は、BashOperator を実行するための backfill 付き DAG を作成する方法を示しています。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago
with DAG(dag_id="backfill_dag", schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
cli_command = BashOperator(
task_id="bash_command",bash_command="airflow dags backfill my_dag_id")

演算子
次のトピックでは、Operators を使用するときに受け取る可能性のあるエラーについて説明します。

S3-Transform オペレータの使用中に PermissionError: [Errno 13]
Permission denied エラーが発生しました。
S3Transform オペレータを使用してシェルスクリプトを実行しようとして PermissionError:[Errno 13] Permission denied エラーが発生する場合は、次の手順を実行することをお勧
演算子

494

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

めします。次のステップは、既存の plugins.zip ファイルがあることを前提としています。新しいplugins.zip を作成する場合は、「カスタムプラグインのインストール」 を参照してください。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

「変換」スクリプトを作成します。
#!/bin/bash
cp $1 $2

3.

(オプション) macOS と Linux ユーザーは、次のコマンドを実行して、スクリプトが実行可能であることを確認しなければならないことがあります。
chmod 777 transform_test.sh4.

スクリプトを plugins.zip に追加します。
zip plugins.zip transform_test.sh5.

「plugins.zip を Amazon S3 にアップロードする」 のステップに従ってください。

6.

「Amazon MWAA コンソールのplugins.zip バージョンの指定」 のステップに従ってください。

7.

以下の DAG を作成します。
from airflow import DAG
from airflow.providers.amazon.aws.operators.s3_file_transform import
S3FileTransformOperator
from airflow.utils.dates import days_ago
import os
DAG_ID = os.path.basename(__file__).replace(".py", "")with DAG (dag_id=DAG_ID, schedule_interval=None, catchup=False,start_date=days_ago(1)) as dag:
file_transform = S3FileTransformOperator(
task_id='file_transform',transform_script='/usr/local/airflow/plugins/transform_test.sh',source_s3_key='s3://YOUR_S3_BUCKET/files/input.txt',
dest_s3_key='s3://YOUR_S3_BUCKET/files/output.txt'
)

8.
演算子

「Amazon S3 への DAG コードのアップロード」 のステップに従ってください。
495

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

トラブルシューティング:Apache Airflow v1 の DAGs、オペレー
タ、接続、およびその他の問題
このページのトピックには、Amazon Managed Workflows for Apache Airflow環境で遭遇する可能性があるApache Airflow v1.10.12のPython依存関係、カスタムプラグイン、DAG、オペレータ、接続、タスク、およびウェブサーバーの問題に対する解決策が含まれています。
目次• requirements.txt の更新• apache-airflow-providers-amazon を追加すると、環境が失敗します。
• Broken DAG• Amazon DynamoDB オペレーターを使用しているときに「DAG が壊れました」というエラーが表示されました• 「壊れた DAG：psycopg2 という名前のモジュールはありません」というエラーが表示されました。
• Slack オペレータを使用しているときに「DAG が壊れました」というエラーが表示されました。
• Google/GCP/BigQuery のインストール中に、さまざまなエラーが発生しました。
• 「DAG が壊れました：Cython という名前のモジュールはありません」というエラーが表示され
ました。
• 演算子
• BigQuery オペレータの使用中にエラーが発生しました。
• 接続• Snowflake に接続できません。
• Secrets Manager に接続できません。
• 「<DB-identifier-name>.cluster-id.rds.amazonaws.com」 の MySQL サーバに接続できません。
• ウェブサーバ• BigQueryOperator を使用しており、そのせいで web サーバーがクラッシュした。
• ウェブサーバーにアクセスすると、5xx エラーが表示されます。
• 「スケジューラーは実行されていないようです」というエラー表示があります。
• タスク• タスクが行き詰まっいるか、完了していません。

Apache Airflow v1

496

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• CLI• CLI で DAG をトリガーすると「503」エラーが表示されます

requirements.txt の更新
以下のトピックでは、requirements.txt を更新する際に受け取る可能性のあるエラーについて説明しています。

apache-airflow-providers-amazon を追加すると、環境が失敗します。
apache-airflow-providers-xyz はApache Airflow v2とのみ互換性があり、apacheairflow-backport-providers-xyz はApache Airflow 1.10.12と互換性があります。

Broken DAG
次のトピックでは、DAGs の実行時に発生する可能性があるエラーについて説明します。

Amazon DynamoDB オペレーターを使用しているときに「DAG が壊れました」というエラーが表示されました
次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

以下のパッケージを requirements.txt に追加します。
boto

3.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

「壊れた DAG：psycopg2 という名前のモジュールはありません」というエラーが表示されました。
次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

requirements.txt Apache Airflowのバージョンに次の項目を追加します。例:

requirements.txt の更新

497

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

apache-airflow[postgres]==1.10.12

3.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

Slack オペレータを使用しているときに「DAG が壊れました」というエラーが表示されました。
次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

以下のパッケージを requirements.txt に追加し、Apache Airflowのバージョンを指定してください。例:
apache-airflow[slack]==1.10.12

3.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

Google/GCP/BigQuery のインストール中に、さまざまなエラーが発生しました。
Amazon MWAA は Amazon Linux を使用しているため、特定のバージョンの Cython と暗号化ライブ
ラリが必要です。次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

以下のパッケージを requirements.txt に追加します。
grpcio==1.27.2
cython==0.29.21
pandas-gbq==0.13.3
cryptography==3.3.2
apache-airflow-backport-providers-amazon[google]

3.

リバース・ポート・プロバイダを使用しない場合は、次の機能を使用できます：
grpcio==1.27.2

Broken DAG

498

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

cython==0.29.21
pandas-gbq==0.13.3
cryptography==3.3.2
apache-airflow[gcp]==1.10.12

4.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

「DAG が壊れました：Cython という名前のモジュールはありません」というエラーが表示されました。
Amazon MWAA は、特定のバージョンの Cython を必要とする Amazon Linux を使用しています。次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

以下のパッケージを requirements.txt に追加します。
cython==0.29.21

3.

Cython ライブラリには、必要なさまざまな pip 依存バージョンがあります。例えば、awswrangler==2.4.0 を使用するためには pyarrow<3.1.0,>=2.0.0 が必要ですので、pip3が pyarrow==3.0.0 をインストールしようとして Broken DAG エラーが発生します。許容できる、最も古いバージョンを明示的に指定することをおすすめします。例えば、最小値 pyarrow==2.0.0 を awswrangler==2.4.0 よりも前に指定すると、エラーは解消され、requirements.txt が正しくインストールされます。最終的な要件は、以下のようになります。
cython==0.29.21
pyarrow==2.0.0
awswrangler==2.4.0

4.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

演算子
次のトピックでは、Operators を使用するときに受け取る可能性のあるエラーについて説明します。
演算子

499

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

BigQuery オペレータの使用中にエラーが発生しました。
Amazon MWAA は UI 拡張機能があるオペレータをサポートしていません。次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

回避策は、問題のオペレータをインポートした後に <operator
name>.operator_extra_links = None を設定するために、DAGに行を追加して拡張機能を上書きすることです。例:
from airflow.contrib.operators.bigquery_operator import BigQueryOperator
BigQueryOperator.operator_extra_links = None3.

上記をプラグインに追加することで、このアプローチをすべての DAG に使用できます。例については、「the section called “パッチするカスタムプラグイン PythonVirtualenvOperator ”」を参照してください。

接続
以下のトピックでは、Apache Airflow の接続を使用する際や別の AWS データベースを使用する際に受け取る可能性のあるエラーについて説明しています。

Snowflake に接続できません。
次のステップを推奨します。
1.

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

2.

ご使用の環境に適した requirements.txt に次のエントリを追加します。
asn1crypto == 0.24.0
snowflake-connector-python == 1.7.2

3.

以下のインポートを DAG に追加する：
from airflow.contrib.hooks.snowflake_hook import SnowflakeHookfrom airflow.contrib.operators.snowflake_operator import SnowflakeOperator

接続

500

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Apache Airflow 接続オブジェクトに、次のキーバリューのペアが含まれていることを確認します。
1.

接続 ID: snowflake_conn2.

コーンタイプ: スノーフレーク

3.

ホスト： <my account> <my region if not us-west-2>.snowflakecomputing.com

4.

スキーマ: <my schema>

5.

ログイン： <my user name>6.

パスワード： ********

7.

ポート: <port, if any>

8.

エキストラ：{"account": "<my account>","warehouse": "<my warehouse>","database": "<my database>","region": "<my region if not using us-west-2 otherwise omit this line>"}

例:>>> import json>>> from airflow.models.connection import Connection>>> myconn = Connection(...
conn_id='snowflake_conn',...
conn_type='Snowflake',...
host='YOUR_ACCOUNT.YOUR_REGION.snowflakecomputing.com',...
schema='YOUR_SCHEMA'...
login='YOUR_USERNAME',...
password='YOUR_PASSWORD',...
port='YOUR_PORT'...
extra=json.dumps(dict(account='YOUR_ACCOUNT', warehouse='YOUR_WAREHOUSE',
database='YOUR_DB_OPTION', region='YOUR_REGION')),... )Secrets Manager に接続できません。
次のステップを推奨します。
接続

501

Amazon Managed Workflows for Apache Airflow

1.

ユーザーガイド

Apache Airflow 接続と変数のシークレットキーを作成する方法を「the section called “Secrets
Manager の設定”」 で学習できます。

2.

test-variable で ApacheAirflow 変数 (Apache Airflow 変数 AWS Secrets Manager の でのシークレットキーの使用) のシークレットキーを使用する方法を学習します。

3.

Apache Airflow 接続 AWS Secrets Manager に でシークレットキーを使用する で ApacheAirflow
接続 (myconn) のシークレットキーを使用する方法を学習します。

「<DB-identifier-name>.cluster-id.rds.amazonaws.com」 の MySQL サーバに接続できません。
Amazon MWAA のセキュリティグループと RDS セキュリティグループには、トラフィックが相互に行き交うことを可能にする入口が必要です。次のステップを推奨します。
1.

Amazon MWAA の VPC セキュリティグループからのトラフィックをすべて許可するように
RDS セキュリティグループを変更します。

2.

Amazon MWAA の VPC セキュリティグループを変更し、RDS セキュリティグループからのすべてのトラフィックを許可します。

3.

タスクを再実行し、CloudWatch Logs の Apache Airflow ログをチェックして、 SQL クエリが成功したかどうかを確認します。

ウェブサーバ
次のトピックでは、Amazon MWAA 上の Apache Airflow ウェブサーバーで発生する可能性のあるエラーについて説明します。

BigQueryOperator を使用しており、そのせいで web サーバーがクラッシュした。
次のステップを推奨します。
1.

BigQueryOperator や QuboleOperator などの operator_extra_links を含む Apache
Airflow オペレータを使用すると、Apache Airflow ウェブサーバーがクラッシュすることがあります。これらのオペレータは Web サーバにコードをロードしようとしますが、これはセキュ
リティ上の理由から許可されていません。インポートステートメント後に次のコードを追加して、DAG 内のオペレータにパッチを適用することをお勧めします。
BigQueryOperator.operator_extra_links = None

ウェブサーバ502

Amazon Managed Workflows for Apache Airflow

2.

ユーザーガイド

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

ウェブサーバーにアクセスすると、5xx エラーが表示されます。
次のステップを推奨します。
1.

Apache Airflow 構成オプションを確認してください。Apache Airflow 構成オプションとして指定したキーと値のペア（例： AWS Secrets Manager ）が正しく設定されていることを確認してください。詳細については、「the section called “Secrets Manager に接続できません。”」を参照
してください。

2.

requirements.txt をチェックしてください。Apache Airflow バージョンと互換性のある、requirements.txt にリストされている Airflow の「extras」パッケージおよびその他のライブラリを確認してください。

3.

requirements.txt ファイルに Python の依存関係を指定する方法については、「requirements.txt での Python 依存関係の管理」を参照してください。

「スケジューラーは実行されていないようです」というエラー表示があります。
スケジューラが実行されていないように見える場合や、最後の「ハートビート」が数時間前に受信された場合は、DAGs が Apache Airflow に表示されず、新しいタスクがスケジューリングされない可能性があります。
次のステップを推奨します。
1.

VPC セキュリティグループがポート 5432 へのインバウンドアクセスを許可していることを確認します。これは、ご使用の環境の Amazon Aurora PostgreSQL メタデータデータベースに接続するために必要のポートです。このルールを追加したら、 Amazon MWAA を数分間待つとエラーは消えるはずです。詳細については、「the section called “VPC におけるセキュリティ”」を参照してください。
Note• Aurora PostgreSQL メタデータベースは 「Amazon MWAAサービスアーキテクチャ」の一部であり、AWS アカウント では表示されません。

ウェブサーバ503

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• データベース関連のエラーは通常、スケジューラー障害の症状であり、根本的な原因ではありません。
2.

スケジューラーが動作していない場合は、「依存関係のインストールの失敗」 や 「スケジュー
ラーの過負荷」 など、さまざまな要因が原因である可能性があります。CloudWatch Logs で対応するロググループを表示して、DAGs、プラグイン、および要件が正しく機能していることを確認します。詳細については、「モニタリングおよびメトリクス」を参照してください。

タスク
次のトピックでは、Apache Airflow ログを表示した際に発生する可能性があるエラーについて説明します。

タスクが行き詰まっいるか、完了していません。
Apache Airflow タスクが「行き詰まっている」か、完了していない場合は、次のステップを実行することをお勧めします。
1.

多数の DAG が定義されている可能性があります。DAG の数を減らし、環境の更新 (ログレベルの変更など) を実行して強制的にリセットしてください。
a.

Airflow は DAG が有効かどうかに関係なく解析します。環境の 50% を超える容量を使用していると、Apache Airflow スケジューラに負荷がかかり始める可能性があります。これにより、CloudWatch メトリクスの合計解析時間が長くなったり、CloudWatCloudWatch Logsの DAG 処理時間が長くることがあります。Apache Airflow の設定を最適化する方法は他にもありますが、このガイドの対象範囲には含まれていません。

b.

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。

2.

キューには、多数のタスクがある可能性があります。これは通常、「なし」状態のタスクが多数発生しているか、CloudWatch でキューに入れられたタスクや保留中のタスクが多数発生している場合に発生します。これは以下のような原因で起こりうる：a.

タスク

実行するタスクの数が環境の実行能力を超えている場合や、自動スケーリング前にキューに入れられたタスクの数が多い場合は、タスクを検出して追加のワーカー.をデプロイする時間があります。

504

Amazon Managed Workflows for Apache Airflowb.

ユーザーガイド

実行するタスクの数が、実行可能な環境よりも多い場合は、DAG が同時に実行するタスクの数を減らすか、Apache Airflow ワーカーの最小数を増やすことをお勧めします。

c.

自動スケーリングで追加のワーカーを検出してデプロイする時間ができる前に、大量のタス
クがキューに入れられている場合は、タスクの配備をずらすか、最小 Apache Airflow ワー
カスレッドを増やすことをお勧めします。

d.

AWS Command Line Interface (AWS CLI) の 「update-environment」 コマンドを使用して、環境で実行されるワーカーの最小数または最大数を変更できます。
aws mwaa update-environment --name MyEnvironmentName --min-workers 2 --maxworkers 10

e.

3.

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。

タスクログとして表示され、それ以上の指示なしに Apache Airflow で停止したタスクが、実行中に削除された可能性があります。これは以下のような原因で起こりうる：a.

もし、1）現在のタスクが現在の環境のキャパシティを超え、2）数分間、タスクが実行されなかったり、キューに入れられなかったりした後、3）新しいタスクがキューに入れられたりする瞬間があります。

b.

Amazon MWAA 自動スケーリングは、最初のシナリオに応じてワーカーを追加します。2
番目のシナリオでは、追加のワーカーが削除されます。キューに入っているタスクの中には、ワーカーが削除される過程にあり、コンテナが削除された時点で終了するものもあります。

c.

環境内の最小ワーカー数を増やすことをお勧めします。もう 1 つの選択肢は、DAG とタス
クの時間を調整して、これらの状況が発生しないようにすることですd.

また、最小ワーカー数を環境内の最大ワーカー数と同じようにに設定して、オートスケー
リングを効果的に無効にすることもできます。AWS Command Line Interface (AWS CLI) の「update-environment」 コマンドを使用して、ワーカーの最小数と最大数を同じに設定して自動スケーリングを無効にします。
aws mwaa update-environment --name MyEnvironmentName --min-workers 5 --maxworkers 5

e.

タスク

ご使用の環境のパフォーマンスを調整するために推奨するベスト・プラクティスの詳細については、「the section called “Apache Airflow のパフォーマンス調整”」 を参照してください。
505

Amazon Managed Workflows for Apache Airflow

4.

ユーザーガイド

タスクが「実行中」状態のままになっている場合は、タスクをクリアしたり、成功または失敗のマークを付けることもできます。これにより、環境の自動スケーリングコンポーネントは、環境で実行されているワーカー数をスケールダウンできます。次の図は、取り残されたタスクの例です。

•

取り残されたタスクの円を選択し、「クリア」を選択します（図を参照）。これによりAmazon MWAA はワーカーをスケールダウンできます。そうしない場合、Amazon MWAA
はどの DAG が有効か無効かを判断できず、キューにタスクが残っている場合はスケールダ
ウンできません。

5.

タスク

Apache Airflow タスクライフサイクルの詳細については、Apache Airflow リファレンスガイドの「概念」 を参照してください。

506

Amazon Managed Workflows for Apache Airflow

ユーザーガイドCLI
次のトピックでは、AWS Command Line Interface で Airflow CLI コマンドを実行したときに発生する可能性があるエラーについて説明します。

CLI で DAG をトリガーすると「503」エラーが表示されます
Airflow CLI は Apache Airflow ウェブサーバー上でで実行され、同時実行性が制限されています。通常、 CLI コマンドを最大 4 つ同時に実行できます。

トラブルシューティング: Amazon MWAA環境の作成と更新
このページのトピックでは、Amazon Managed Workflows for Apache Airflow 環境を作成および更新する際に発生する可能性のあるエラーと、これらのエラーの解決方法を記載しています。
目次• requirements.txt の更新• 新しいバージョンを指定しましたが、requirements.txt 環境の更新に 20 分以上かかります。
• プラグイン• Amazon はカスタム UI の実装MWAAをサポートしていますか？
• プラグインを使用して Amazon MWAA Local Runner にカスタム UI の変更を実装できますが、Amazon で同じ操作を実行しようとするとMWAA、変更やエラーは表示されません。この問題が発生する理由• バケットを作成する• S3 のパブリックアクセスのブロック設定を選択できない• 環境を作成する• 環境を作成しようとしましたが、「作成中」の状態のままです。
• 環境を作成しようとしましたが、ステータスが「Create failed」と表示されます。
• を選択しようとVPCして「ネットワーク障害」というエラーが表示されました• 環境を作成したときに、サービス、パーティション、またはリソースに「渡さなければなりません」というエラーが表示されました。
• 環境を作成しようとしたところ、ステータスが「使用可能」と表示されているのに、Airflow UIにアクセスしようとすると、「サーバーからの返信が空です」または「502 Bad ゲートウェイ」というエラーが表示されます。
• ユーザー名がランダムな文字名の集まりになっている環境を作成しようとしました
CLI

507

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• update-environment• 環境クラスを変更しようとしましたが、更新に失敗しました• アクセス環境• Apache Airflow UI にアクセスできません

requirements.txt の更新
以下のトピックでは、requirements.txt を更新する際に受け取る可能性のあるエラーについて説明しています。

新しいバージョンを指定しましたが、requirements.txt 環境の更新に 20 分以上かかります。
環境がrequirements.txtファイルの新しいバージョンをインストールするのに 20 分以上かかる
場合、環境の更新は失敗し、Amazon MWAAはコンテナイメージの最後の安定バージョンにロールバックしています。
1.

パッケージのバージョンを確認します。requirements.txt 内の Python 依存関係には、常に特定のバージョン (==) または最上位バージョン (<=) を指定することをお勧めします。

2.

Apache Airflow のログを確認してください。Apache Airflow ログを有効にした場合は、CloudWatch コンソールのロググループページでロググループが正常に作成されたことを確認します。ログが空白の場合、最も一般的な原因は、ログが書き込まれる CloudWatch またはAmazon S3 の実行ロールに許可がないことです。詳細については、「実行ロール」を参照して
ください。

3.

Apache Airflow 構成オプションを確認してください。Secrets Manager を使用している場合
は、Apache Airflow 構成オプションとして指定したキーと値のペアが正しく設定されていることを確認してください。詳細については、「the section called “Secrets Manager の設定”」を参照
してください。

4.

VPC ネットワーク設定を確認します。詳細については、「the section called “環境スタック”」を参照してください。

5.

実行ロールの権限を確認します。実行ロールは、ユーザーに代わって他の AWS サービス AWS
Identity and Access Management (Amazon S3、Amazon CloudWatch、Amazon などIAM) のリソースを呼び出すMWAAアクセス許可を Amazon に付与するアクセス許可ポリシーを持つ(ECR) SQSロールです。顧客管理キー または AWS 所有キー にもアクセスを許可する必要があります。詳細については、「実行ロール」を参照してください。

requirements.txt の更新

508

Amazon Managed Workflows for Apache Airflow

6.

ユーザーガイド

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定をチェックするトラブ
ルシューティングスクリプトを実行するには、「 AWS のサポートツール」の「環境の検証」ス
クリプトを参照してください GitHub。

プラグイン
次のトピックでは、Apache Airflow プラグインを設定または更新する際に発生する可能性のある問題
について説明します。

Amazon はカスタム UI の実装MWAAをサポートしていますか？
Apache Airflow v2.2.2 以降、Amazon MWAAは Apache Airflow ウェブサーバーへのプラグインのインストールとカスタム UI の実装をサポートしています。Amazon MWAA環境が Apache Airflow
v2.0.2 以前を実行している場合、カスタム UI を実装することはできません。
バージョン管理と既存環境のアップグレードの詳細については、「バージョン」を参照してください。

プラグインを使用して Amazon MWAA Local Runner にカスタム UI の変更を実装でき
ますが、Amazon で同じ操作を実行しようとするとMWAA、変更やエラーは表示されません。この問題が発生する理由
Amazon MWAA ローカルランナーには、すべての Apache Airflow コンポーネントが 1 つのイメージにバンドルされているため、カスタム UI プラグインの変更を適用できます。

バケットを作成する
次のトピックでは、Amazon S3 バケットを作成する時に発生する可能性があるエラーについて説明します。

S3 のパブリックアクセスのブロック設定を選択できない
Amazon MWAA環境の実行ロールには、バケットがパブリックアクセスをブロックしたことを確認するために、Amazon S3 バケットの GetBucketPublicAccessBlockアクションに対するアクセス許可が必要です。次のステップを推奨します。
1.

手順に従って、実行ロール にJSONポリシーをアタッチします。

2.

次のJSONポリシーをアタッチします。
{

プラグイン

509

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"Effect":"Allow","Action":["s3:GetObject*","s3:GetBucket*","s3:List*"],"Resource":["arn:aws:s3:::YOUR_S3_BUCKET_NAME","arn:aws:s3:::YOUR_S3_BUCKET_NAME/*"]}のサンプルプレースホルダーを置き換える YOUR_S3_BUCKET_NAME などの Amazon S3 バケッ
ト名を使用する my-mwaa-unique-s3-bucket-name.
3.

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定を確認するトラブル
シューティングスクリプトを実行するには、 AWS のサポートツールの「環境の検証」スクリプ
トを参照してください GitHub。

環境を作成する
次のトピックでは、環境を作成する時に発生する可能性があるエラーについて説明します。

環境を作成しようとしましたが、「作成中」の状態のままです。
次のステップを推奨します。
1.

パブリックルーティングでVPCネットワークを確認します。インターネットアクセスVPCで
Amazon を使用している場合は、以下を確認してください。
•

2.

で定義されているように、Amazon MWAA環境で使用されるさまざまな AWS リソース間のネットワークトラフィックを許可するように Amazon VPCが設定されていることthesection called “ネットワークについて”。例えば、VPCセキュリティグループは自己参照
ルールですべてのトラフィックを許可するか、オプションでポート範囲 443 とHTTPSポート範囲 5432 TCP を指定する必要があります。

プライベートルーティングでVPCネットワークを確認します。インターネットにアクセスVPC
できない Amazon を使用している場合は、以下を確認してください。
•

で定義されているように、Amazon MWAA環境のさまざまな AWS リソース間のネットワー
クトラフィックを許可するように Amazon VPCが設定されていることthe section called

環境を作成する

510

Amazon Managed Workflows for Apache Airflow

ユーザーガイド“ネットワークについて”。例えば、2 つのプライベートサブネットには、NATゲートウェイ(またはNATインスタンス) へのルートテーブルやインターネットゲートウェイがあってはな
りません。
3.

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定をチェックするトラブ
ルシューティングスクリプトを実行するには、「 AWS のサポートツール」の「環境の検証」ス
クリプトを参照してください GitHub。

環境を作成しようとしましたが、ステータスが「Create failed」と表示されます。
次のステップを推奨します。
1.

VPC ネットワーク設定を確認します。詳細については、「the section called “環境スタック”」を参照してください。

2.

ユーザー権限を確認してください。Amazon は、環境を作成する前に、ユーザーの認証情報に対してドライランMWAAを実行します。 AWS アカウントには、 AWS Identity and Access
Management （IAM) で環境のリソースの一部を作成するアクセス許可がない場合があります。
例えば、プライベートネットワーク Apache Airflow アクセスモードを選択した場合、 AWS ア
カウントには、管理者から環境の A アクセスmazonMWAAFullConsoleAccessコントロールポリ
シーへのアクセス権が付与されている必要があります。これにより、アカウントはVPCエンド
ポイントを作成できます。

3.

実行ロールの権限を確認します。実行ロールは、ユーザーに代わって他の AWS サービス AWS
Identity and Access Management (Amazon S3、Amazon CloudWatch、Amazon などIAM) のリソースを呼び出すMWAAアクセス許可を Amazon に付与するアクセス許可ポリシーを持つ(ECR) SQSロールです。顧客管理キー または AWS 所有キー にもアクセスを許可する必要があります。詳細については、「実行ロール」を参照してください。

4.

Apache Airflow のログを確認してください。Apache Airflow ログを有効にした場合は、CloudWatch コンソールのロググループページでロググループが正常に作成されたことを確認します。ログが空白の場合、最も一般的な原因は、ログが書き込まれる CloudWatch またはAmazon S3 の実行ロールに許可がないことです。詳細については、「実行ロール」を参照して
ください。

5.

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定をチェックするトラブ
ルシューティングスクリプトを実行するには、「 AWS のサポートツール」の「環境の検証」ス
クリプトを参照してください GitHub。

6.

インターネットにアクセスVPCせずに Amazon を使用している場合は、Amazon S3 ゲートウェ
イエンドポイントを作成し、Amazon S3 にアクセスECRするために必要な最小限のアクセス許環境を作成する

511

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

可を Amazon S3に付与していることを確認してください。Amazon S3 ゲートウェイエンドポイ
ントの作成についての詳細は、以下を参照してください。
• インターネットアクセスのない Amazon VPCネットワークの作成• Amazon Elastic Container Registry ユーザーガイドの「Amazon S3 ゲートウェイのエンドポ
イントの作成」

を選択しようとVPCして「ネットワーク障害」というエラーが表示されました
次のステップを推奨します。
•

環境の作成時に Amazon を選択しようとVPCしたときに「ネットワーク障害」エラーが表示された場合は、実行中のブラウザ内プロキシをオフにしてから、もう一度試してください。

環境を作成したときに、サービス、パーティション、またはリソースに「渡さなければなりません」というエラーが表示されました。
次のステップを推奨します。
•

Amazon S3 バケットにURI指定した に の末尾に「/」が含まれているため、このエラーが表示されることがありますURI。パスの '/' を削除することをお勧めします。値は以下のフォーマットでなければならない：s3://your-bucket-name

環境を作成しようとしたところ、ステータスが「使用可能」と表示されているのに、Airflow UI にアクセスしようとすると、「サーバーからの返信が空です」または「502 Bad ゲートウェイ」というエラーが表示されます。
次のステップを推奨します。
1.

VPC セキュリティグループの設定を確認します。詳細については、「the section called “環境スタック”」を参照してください。

2.

にリストした Apache Airflow パッケージが、Amazon で実行している Apache Airflow バージョンrequirements.txtに対応していることを確認しますMWAA。詳細については、「Python
依存関係のインストール」を参照してください。

環境を作成する

512

Amazon Managed Workflows for Apache Airflow

3.

ユーザーガイド

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定を確認するトラブル
シューティングスクリプトを実行するには、 AWS のサポートツールの「環境の検証」スクリプ
トを参照してください GitHub。

ユーザー名がランダムな文字名の集まりになっている環境を作成しようとしました•

Apache Airflow のユーザ名は最大 64 文字です。 AWS Identity and Access Management （IAM)
ロールがこの長さを超えると、ハッシュアルゴリズムを使用してその長さを小さくしますが、一意のままです。

update-environment
以下のトピックでは、環境を更新する際に受け取る可能性のあるエラーについて説明します。

環境クラスを変更しようとしましたが、更新に失敗しました
環境を別の環境カテゴリ（mw1.medium を mw1.small に変更するなど）に更新し、環境の更新リ
クエストに失敗した場合、環境の状態は UPDATE_FAILED 状態になり、以前の安定したバージョンの環境にロールバックされ、そのバージョンに応じて課金されます。
次のステップを推奨します。
1.

の を使用してDAGs、、カスタムプラグイン、Python の依存関係をローカルaws-mwaa-localrunnerでテストします GitHub。

2.

Amazon MWAA環境の Amazon VPCネットワークのセットアップと設定をチェックするトラブ
ルシューティングスクリプトを実行するには、「 AWS のサポートツール」の「環境の検証」ス
クリプトを参照してください GitHub。

アクセス環境以下のトピックでは、環境にアクセスする際に受け取る可能性のあるエラーについて説明します。

Apache Airflow UI にアクセスできません
次のステップを推奨します。

update-environment

513

Amazon Managed Workflows for Apache Airflow

1.

ユーザーガイド

ユーザー権限を確認してください。Apache Airflow UI を表示できるアクセス権ポリシーの権限が与えられていない可能性があります。詳細については、「the section called “Amazon MWAA
環境へのアクセス”」を参照してください。

2.

ネットワークアクセスを確認してください。[プライベートネットワーク] アク
セスモードを選択したことが原因と考えられます。Apache Airflow UI URLのが次の形式の場合387fbcn-8dh4-9hfj-0dnd-834jhdfb-vpce.c10.uswest-2.airflow.amazonaws.com、Apache Airflow ウェブサーバー にプライベートルー
ティングを使用していることを意味します。Apache Airflow アクセスモードをパブリックネット
ワークアクセスモードに更新するか、Apache Airflow ウェブサーバー のVPCエンドポイントにアクセスするメカニズムを作成できます。詳細については、「the section called “VPC エンドポ
イントへのアクセスの管理”」を参照してください。

トラブルシューティング:CloudWatch ログ記録と CloudTrail のエラー
このページのトピックには、Apache Airflow 用 Amazon マネージドワークフロー環境で発生する可能性のある Amazon CloudWatch Logs と AWS CloudTrail エラーの解決策が含まれています。
目次• ログ• タスクログが表示されないか、「Cloudwatch log_group からリモートログを読み取っています」というエラーが表示されます。
• ログなしでタスクが失敗しました• CloudTrail に「リソースはすでに存在している例外」というエラーが表示されます• CloudTrail に「リクエストが無効です」というエラーが表示されます。
• Apache Airflow ログに「64 ビット Oracle クライアントライブラリが見つかりませんでした:「libclntsh.so: 共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません」と表示されます。
• ディスパッチャのログに psycopg2 「サーバが接続を誤って閉じました」とあります。
• 「タスクインスタンス%sが完了したとExecutorから報告されました(%s)。ただし、タスクはDAG処理ログに%s表示されています。」が表示されました。
• 「log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log からリモートログを読み込めませんでした」と表示されました。自分のタスクログ
CloudWatch ログ とCloudTrail

514

Amazon Managed Workflows for Apache Airflow

ユーザーガイドログ
次のトピックでは、Apache Airflow ログを表示する際に発生する可能性があるエラーについて説明します。

タスクログが表示されないか、「Cloudwatch log_group からリモートログを読み取っています」というエラーが表示されます。
Amazon MWAA は、Amazon CloudWatch Logs との間で直接ログを読み書きするように Apache
Airflow を設定しています。ワーカーがタスクの開始に失敗したり、ログの書き込みに失敗したりすると、エラーが表示される：*** Reading remote log from Cloudwatch log_group: airflow-environmentName-Task
log_stream: DAG_ID/TASK_ID/timestamp/n.log.Could not read remote logs from log_group:
airflow-environmentName-Task log_stream: DAG_ID/TASK_ID/time/n.log.

•

次のステップを推奨します。
a.

環境の INFO レベルでタスクログを有効にしていることを確認します。詳細については、「Amazon での Airflow ログの表示 CloudWatch」を参照してください。

b.

環境 「実行ロール」 に正しい権限ポリシーがあることを確認します。

c.

オペレータまたはタスクが正しく動作していること、DAG を解析するのに十分なリソースがあること、ロードする適切な Python ライブラリがあることを確認します。正しい依存関係があることを確認するには、問題の原因となっているインポートが見つかるまで、インポートを削除してみます。「Amazon MWAA ローカルランナーツール」 を使用して Pythonの依存関係をテストすることをお勧めします。

ログなしでタスクが失敗しました
ワークフロー内のタスクが失敗し、失敗したタスクのログが見つからない場合は、次に示すように、
デフォルトパラメータに queue パラメータが設定されていることを確認してください。
from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from airflow.utils.dates import days_ago# Setting queue argument to default.
default_args = {"start_date": days_ago(1),ログ

515

Amazon Managed Workflows for Apache Airflow

ユーザーガイド"queue": "default"}
with DAG(dag_id="any_command_dag", schedule_interval=None, catchup=False,
default_args=default_args) as dag:
cli_command = BashOperator(
task_id="bash_command",bash_command="{{ dag_run.conf['command'] }}")問題を解決するには、コードから queue を削除し、DAG を再実行してください。

CloudTrail に「リソースはすでに存在している例外」というエラーが表示されます"errorCode": "ResourceAlreadyExistsException","errorMessage": "The specified log stream already exists","requestParameters": {"logGroupName": "airflow-MyAirflowEnvironment-DAGProcessing","logStreamName": "scheduler_cross-account-eks.py.log"}

特定の Python 要件、例えば Amazon MWAA が CloudWatch と通信するために使用する
watchtower ライブラリを以前のバージョンに戻す apache-airflow-backport-providersamazon があるかもしれません。次のステップを推奨します。
•

以下のライブラリを requirements.txt に追加する
watchtower==1.0.6

CloudTrail に「リクエストが無効です」というエラーが表示されます。
Invalid request provided: Provided role does not have sufficient permissions for s3
location airflow-xxx-xxx/dags

同じDXテンプレートを使用してAmazon AWS CloudFormation 環境とAmazon S3バケットを作成している場合は、AWS CloudFormation テンプレートに DependsOn セクションを追加する必要があります。この2つのリソース（MWAA 環境とMWAA 実行ポリシー）は、AWS CloudFormation 内で依存関係にあります。次のステップを推奨します。
•
ログ

AWS CloudFormation のテンプレートに以下の DependsOn 文を追加してください。
516

Amazon Managed Workflows for Apache Airflow

ユーザーガイド...
MaxWorkers: 5
NetworkConfiguration:
SecurityGroupIds:- !GetAtt SecurityGroup.GroupId
SubnetIds: !Ref subnetIds
WebserverAccessMode: PUBLIC_ONLY
DependsOn: MwaaExecutionPolicy
MwaaExecutionPolicy:
Type: AWS::IAM::ManagedPolicy
Properties:
Roles:- !Ref MwaaExecutionRole
PolicyDocument:
Version: 2012-10-17
Statement:- Effect: Allow
Action: airflow:PublishMetrics
Resource:...

例については、「Amazon Managed Workflows for Apache Airflow のクイックスタートチュートリアル」を参照してください。

Apache Airflow ログに「64 ビット Oracle クライアントライブラリが見つかりません
でした:「libclntsh.so: 共有オブジェクトファイルを開くことができません:そのようなファイルまたはディレクトリはありません」と表示されます。
•

次のステップを推奨します。
•

ログ

Apache Airflow v2 を使用している場合、core.lazy_load_plugins : False を
Apache Airflow の構成オプションとして追加してください。詳細については、「2 の設定オ
プションによるプラグインの読み込み」を参照してください。

517

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

ディスパッチャのログに psycopg2 「サーバが接続を誤って閉じました」とあります。
次のようなエラーが表示される場合は、Apache Airflow スケジューラリソースが不足している可能性があります。
2021-06-14T10:20:24.581-05:00

sqlalchemy.exc.OperationalError:(psycopg2.OperationalError) server closed the connection unexpectedly
2021-06-14T10:20:24.633-05:00
This probably means the server terminated abnormally
2021-06-14T10:20:24.686-05:00
before or while processing the request.

次のステップを推奨します。
•

最大 5 つのスケジューラを指定できる Apache Airflow v2.0.2 へのアップグレードを検討してください。

「タスクインスタンス%sが完了したとExecutorから報告されました(%s)。ただし、タスクはDAG処理ログに%s表示されています。」が表示されました。
次のようなエラーが表示される場合は、長時間タスクの実行が Amazon MWAA のタスク時間制限に達している可能性があります。Amazon MWAAでは、どの Airflow タスクにも12時間の制限があり、タスクがキューに詰まったり、自動スケーリングなどのアクティビティをブロックしたりすることができないようになっています
Executor reports task instance %s finished (%s) although the task says its %s. (Info:%s) Was the task killed externally

次のステップを推奨します。
•

ログ

タスクを実行時間の短い複数のタスクに分解することを考慮してください。Airflow には通常、オペレーターが非同期になるというモデルがあります。外部システム上のアクティビティを呼び出し、Apache Airflow センサーがポーリングを行って処理が完了したことを確認します。セン
サーに障害が発生しても、オペレーターの機能に影響を与えることなく、安全に再試行できます。

518

Amazon Managed Workflows for Apache Airflow

ユーザーガイド「log_group: airflow-*{*environmentName}-Task log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log からリモートログを読み込めませんでした」と表示されました。自分のタスクログ
次のようなエラーが表示される場合、ご使用の環境の実行ロールに、タスクログのログストリームを作成するためのアクセス権限ポリシーが含まれていない可能性があります。
Could not read remote logs from log_group: airflow-*{*environmentName}-Task
log_stream:* {*DAG_ID}/*{*TASK_ID}/*{*time}/*{*n}.log.

次のステップを推奨します。
•「the section called “実行ロール”」 にあるサンプルポリシーのいずれかを使用して、環境の実行
ロールを変更します。

requirements.txt ファイルでApache Airflowバージョンと互換性のないプロバイダパッケージを指定している場合もあります。たとえば、Apache Airflow v2.0.2 を使用している場合、apacheairflow-providers-databricks パッケージのように、Airflow 2.1+とのみ互換性のあるパッケージを指定している可能性があります。
次のステップを推奨します。
1.

Apache Airflow v2.0.2 を使用している場合は、requirements.txt ファイルを変更してapache-airflow[databricks] を追加します。これにより、Apache Airflow v2.0.2 と互換性のある正しいバージョンの Databricks パッケージがインストールされます。

2.

ログ

GitHub の「aws-mwaa-local-runner」を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。

519

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Amazon MWAA のドキュメント履歴
次の表は、2020 年 11 月以降の Amazon MWAAサービスのドキュメントへの重要な追加項目をまとめたものです。このドキュメントの更新に関する通知については、「RSS フィード」を参照してく
ださい。
変更

説明

日付

Amazon MWAA がカスタム
ウェブサーバードメイン名の設定をサポート

Amazon MWAA は、インター
ネットアクセスのないプライ
ベート環境のカスタムウェブ
サーバードメイン名の設定をサポートしています。この更新には、新しいカスタムドメ
インの設定について説明する
以下の新しいトピックが含まれています。

2024 年 6 月 18 日

• the section called “カスタムドメインのセットアップ”
Amazon MWAA がウェブサー
バーの自動スケーリングとApache Airflow REST API をサポート

Amazon MWAA は、ウェブサーバーの自動スケーリングと、Apache Airflow REST APIにアクセスして使用する機能をサポートするようになりました。

2024 年 5 月 16 日

• the section called “ウェブサーバーのオートスケーリ
ングの設定”• the section called “Apache
Airflow の使用 REST API”
自動スケーリング動作の説明を改善

ワーカーが新しいタスクを
Fargate ワーカーのダウンスケールとして受け取るときの2024 年 5 月 10 日

520

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

新しい Amazon MWAA 自動ス
ケーリング動作を反映するた
めに、次のトピックを更新しました。
• the section called “ワーカーの自動スケーリングの設定”より大きなインスタンスサイズのサポートAmazon MWAA は、より大きなワークロードに対して

2024 年 4 月 16 日

mw1.xlarge 、 の 2 つのより大きなインスタンスサイズ
オプションをサポートするよ
うになりました。 mw1.2xlar
ge• the section called “環境機能”
Apache Airflow の新しいバー
ジョン

Amazon MWAA が Apache
Airflow v2.8.1 をサポートするようになりました。この更新には、更新されたプロバ
イダーパッケージに関する情報と、Amazon MWAA でのApache Airflow v2.8.1 の使用に関する詳細が含まれています。

2024 年 2 月 22 日

• バージョン
• the section called “Apache
Airflow v2.8.1 接続用のプロバイダーパッケージ”

521

Amazon Managed Workflows for Apache Airflow

Amazon VPC のサポート

ユーザーガイド

Amazon MWAA は、Amazon
OpenSearch Service を使用して、所有者アカウント内の中央共有 Amazon VPC を使用して Amazon MWAA リソースを管理する組織のクロスアカウ
ント環境の作成をサポートしています。このリリースの一環として、Amazon MWAA では独自の Amazon VPC エンド
ポイントを作成して管理する
ことを選択できます。

2023 年 11 月 15 日

• the section called “独自のAmazon VPC エンドポイン
トの管理”
Apache Airflow の新しいバー
ジョン

Amazon MWAA は Apache
Airflow v2.7.2 をサポートするようになりました。このアップデートには、更新されたプ
ロバイダーパッケージに関する情報と、Amazon MWAA での Apache Airflow v2.7.2 の使用に関する詳細が含まれています。

2023 年 11 月 6 日• バージョン
• the section called “Apache
Airflow v2.7.2 接続用のプロバイダーパッケージ”

522

Amazon Managed Workflows for Apache Airflow

Apache Airflow の新しいバージョン

ユーザーガイド

Amazon MWAA は Apache
Airflow v2.6.3 をサポートするようになりました。このアップデートには、更新されたプ
ロバイダーパッケージに関する情報と、Amazon MWAA での Apache Airflow v2.6.3 の使用に関する詳細が含まれています。

2023 年 8 月 9 日• バージョン
• the section called “Apache
Airflow v2.6.3 接続用のプロバイダーパッケージ”
バージョン廃止情報

バージョン廃止に関するト
ピックを更新し、Apache
Airflow v2.0.2 と Apache
Airflow v2.2.2 の廃止に関する通知とタイムラインが追加されました。

2023 年 7 月 31 日

• the section called “Apache
Airflow の非推奨バージョン”

523

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

Amazon MWAA はマイナーバージョンアップグレードをサポートしています。この更新には、環境をアップグレー
ドし、ワークフローリソース
がアップグレード先の Apache
Airflow のバージョンと互換性があることを確認する方法を説明する次の新しいトピックが含まれています。

2023 年 6 月 5 日• the section called “エンジンバージョンのアップグレー
ド”トピックの更新

Amazon MWAA へのユーザーの完全なコンソールおよびAPIアクセスを付与するための顧客管理型IAMポリシーが更新されました。この更新
では、Amazon MWAA に役割を渡すためにユーザーに2023 年 4 月 12 日

iam:PassRole の権限を付与する必要がある理由について説明しています。Amazon
MWAA はこれらの権限を使用
してユーザーに代わってアクションを実行します。
• the section called “Amazon
MWAA環境へのアクセス”524

Amazon Managed Workflows for Apache Airflow

新しいガイダンス

ユーザーガイド

Amazon MWAA のバックエン
ド AWS Secrets Manager としての の設定に関するトピックを更新し、ルックアップ
パターンの使用に関するガイダンスを提供しました。ルックアップパターンを使用すると、Apache Airflow が検索するシークレットが絞り込まれ、Amazon MWAA が接続と変数を取得するために Secrets
Manager に対して行う API 呼
び出しの数が減ります。これにより、Secrets Manager を

2023 年 4 月 12 日

バックエンドとして使用することに伴うコストが削減されます。
• Secrets Manager のバックエンドを Apache Airflow 構
成オプションとして作成する
Apache Airflow の新しいバー
ジョン

Amazon MWAA は、Apache
Airflow v2.5.1 をサポートするようになりました。このアップデートには、更新されたプ
ロバイダーパッケージに関する情報と、Amazon MWAA での Apache Airflow v2.5.1 の使用に関する詳細が含まれています。

2023 年 4 月 11 日

• バージョン
• the section called “Apache
Airflow v2.5.1 接続用のプロバイダーパッケージ”
525

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

Amazon MWAA 環境でのス
タートアップスクリプトの使用に関する新しいトピックが追加されました。このトピッ
クでは、既存の環境用のス
タートアップスクリプトの設定、そのスタートアップスク
リプトによる Linux ランタイ
ムのインストール、および環
境変数の設定について説明します。

2023 年 4 月 3 日• the section called “スタート
アップスクリプトの使用”
プライベート Web サーバーへのアクセスに関して更新されたセクション

プライベート Web サーバー
アクセスに関する次のトピックが更新されました。この更新により、プライベート Web
サーバーにアクセスできる環
境では、Python wheel archive

2023 年 2 月 24 日(.whl) を使用して依存関係をパッケージ化およびインストールする必要があることが明確になりました。
• プライベート Web サーバー
アクセスモード

526

Amazon Managed Workflows for Apache Airflow

非推奨の Apache Airflow バー
ジョンに関して追加された情報

ユーザーガイドバージョントピックを新しい情報で更新し、Amazon
MWAA がApache Airflow のバージョンを廃止する方法に関する情報が追加されました。Apache Airflow の新しいバージョンへのアップ
グレードに関するセクショ
ンと、Apache Airflow v1 とApache Airflow v2 の間の変更
点を説明するセクションが削除されました。Apache Airflowの新しいバージョンへの移行に関する詳細については、

2023 年 2 月 17 日

「Amazon MWAA 移行ガイド」を参照してください。
• the section called “Apache
Airflow の非推奨バージョン”• the section called “Apache
Airflow のバージョンサポー
トとよくある質問”

527

Amazon Managed Workflows for Apache Airflow

Amazon MWAA コンテナメト
リクスの修正点

ユーザーガイド

コンテナメトリックスのト2023 年 1 月 20 日

ピックを更新し、Cluster
ディメンションの下に存在しなかった一連の誤ったメ
トリックスが削除されました。特定の時点で環境が利用している追加のワーカーの数を評価する方法について説明している追加のセクションが追加されました。これは、CPUUtilization または MemoryUtilization
メトリックを Additiona
lWorker コンポーネントに対してグラフ化し、統計タイ
プを Sample Count に設定することで行います。
• the section called “追加のワーカーコンテナとウェブ
サーバーコンテナの数を評
価する”

528

Amazon Managed Workflows for Apache Airflow

Apache Airflow の新しいバージョン

ユーザーガイド

Amazon MWAA は Apache
Airflow v2.4.3 をサポートするようになりました。このアップデートには、アップ
デートされたプロバイダパッ
ケージに関する情報、Amazon
MWAA で Apache Airflow
v2.4.3を使用する方法の詳細、および Amazon MWAA で各
Apache Airflow バージョンでサポートされている機能に関する情報が含まれています。

2023 年 1 月 5 日• バージョン
• the section called “Apache
Airflow v2.4.3 接続用のプロバイダーパッケージ”
サービスにリンクされたロールに関して更新されたトピック

Amazon MWAA がユーザーに代わって AWS リソースを作成および管理するために使用するサービスにリンクされたロールに関する情報を更新しました。これには、不要になったサービスにリンクされたロールを削除する方法に関する情報が含まれます。これ2022 年 11 月 18 日には、Amazon MWAA がAWS/MWAA名前空間の下に追加のCloudWatch メトリクスを発行できるようにする、更新されたサービスにリンクされたロールのアクセス許可ポリシーが含まれます。
• the section called “サービス
リンクロール”
529

Amazon Managed Workflows for Apache Airflow

サービスメトリックスに関する新しいトピック

ユーザーガイド

Amazon MWAA が AWS/MWAA
名前空間の下で発行するサー
ビスメトリクスに関する新2022 年 11 月 18 日

しいトピックが追加されました。これには、Amazon ECS
クラスターメトリクスのス
ケジューラ、ワーカー、および Webサーバー、Amazon
MWAA がスケジューラとワーカーを分離するためのキューの Amazon SQS メトリクス、およびメタデータデータベー
スの Amazon RDSメトリクスが含まれています。
• the section called “コンテナ、キュー、データベース
メトリクス”
新しいトピック

Amazon MWAA 環境で使用するプロバイダーパッケージの新しいバージョンを指定するための制約ファイルの変更に関する新しいガイダンスが追加されました。

2022 年 11 月 18 日

• the section called “新しいプロバイダーパッケージの指定”
FAQ エントリが更新されました。

Amazon MWAA の HIPAA 資格に関する情報が更新されました。

2022 年 11 月 15 日

• the section called “HIPAA コ
ンプライアンス”

530Amazon Managed Workflows for Apache Airflow

新しいトピック

ユーザーガイド

Amazon MWAA の実行ロール

2022 年 10 月 21 日

信頼ポリシーで aws:Sourc
eArn と aws:Sourc
eAccount のグローバル条
件コンテキストキーを使用して、クロスサービスの混乱したディピュティを防ぐための新しいトピックが追加されました。
• the section called “サービス間での不分別な代理処理の防止”
新しいサンプルコードにカスタム OS レベルのメ
トリクスを書き込む手順とDAG コード例を更新しました
CloudWatch。

2022 年 9 月 13 日

• the section called “を使用したカスタムメトリクスのDA
G書き込み”
新しいサンプルコード

Apache Airflow CLI トークンを取得し、指定された
Amazon MWAA 環境で DAGを呼び出すための更新された
手順と新しい AWS Lambda
Python コード例を追加しました。

2022 年 9 月 12 日

• the section called “Lambda
DAGsを使用した呼び出し”

531

Amazon Managed Workflows for Apache Airflow

新しいアーキテクチャ図

ユーザーガイドパブリックウェブサーバーとプライベートウェブサーバーを備えた Amazon MWAA 環境を示す新しいアーキテクチャ
図が追加されました。

2022 年 9 月 12 日

• the section called “Apache
Airflow のアクセスモード”
新しいサンプルコード更新された手順と、Apache
Airflow CLI トークンを取得
し、別の Amazon MWAA 環境
で別の DAG を呼び出す新しいDAG コード例が追加されました。

2022 年 8 月 16 日

• the section called “DAGs 異なる環境での呼び出し”
新しいサンプルコード

環境の Aurora PostgreSQL に
メタデータ情報をクエリし、結果を CSV ファイルに書き込
み、ファイルを Amazon S3 に保存する手順が更新され、新しい DAG が追加されました。

2022 年 8 月 12 日

• the section called “Amazon
S3 への環境のメタデータのエクスポート”

532

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

実行時に AWS CodeArtifact
トークンを更新し、その結果を Amazon S3 に保存する更新された手順と新しい DAG を追加しました。

2022 年 8 月 3 日• the section called “実行時にAWS CodeArtifact トークンを更新する”
新しいサンプルコード

Amazon MWAA ECSOperat2022 年 7 月 26 日

or でを使用するための最新の手順と DAG コードサンプルが追加されました。
• the section called“ECSOperator の使用”
新しいサンプルコード

Amazon MWAA SSHOperat2022 年 7 月 15 日

or でを使用するための最新の手順と DAG コードサンプルが追加されました。
• the section called“SSHOperator の使用”
新しいサンプルコード

Amazon MWAA で dbt
Postgres を使用するための新しい手順と DAG コードサンプ
ルが追加されました。

2022 年 6 月 17 日

• the section called “Amazon
での dbt の使用 MWAA”

533

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイドパブリックアクセスとプラ
イベートアクセスがある
Amazon MWAA 環境に Python
ホイールファイルを使用して依存関係をインストールするための新しい手順と DAG コー
ドサンプルが追加されました。

2022 年 5 月 13 日

• Python ホイールを使った依存関係の管理新しいトピックとユースケース

Amazon MWAA が に送信する
Apache Airflow メトリクスの選択に関する新しいガイダンスを追加しました CloudWatch。

2022 年 4 月 19 日

• どの Apache Airflow メトリ
クスをレポートするかを選択する
新しいガイドAmazon MWAA では、Apache
Airflow ワークフローを自己管理型のデプロイや既存のAmazon MWAA 環境から移行するための移行ガイドを提供
しています。

2022 年 3 月 7 日• Amazon MWAA 移行ガイド

534

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

Apache Airflow のユーザー権限の変更を検出するソリュー
ションなど、Apache Airflowと連携するための新しいセキュリティのベストプラク
ティスが追加されました。

2022 年 2 月 18 日

• the section called “Apache
Airflow でのセキュリティのベストプラクティス”
新しいサンプルコード

Pendulum を使用してタイムゾーン対応の DAG を作成する新しいコードサンプルを追加し、カスタムプラグインを使用して Apache Airflow ログが作成されるタイムゾーンを変更する方法を明確にしました。

2022 年 2 月 11 日

• the section called “DAGのタ
イムゾーンの変更”

535

Amazon Managed Workflows for Apache Airflow

Apache Airflow v2.2.2 の発売

ユーザーガイド

Amazon Managed Workflows
for Apache Airflow が Apache
Airflow v2.2.2 をサポートするようになりました。v2.2 以降、Amazon MWAA は Python
パッケージとカスタムプラグ
インを Apache Airflow ウェブ
サーバーに直接インストール
するようになり、環境をより柔軟に管理できるようになりました。詳細については、以下を参照してください。

2022 年 1 月 27 日

• Apache Airflow 用 Amazon
マネージドワークフロー上の Apache Airflow のバージョン.
• the section called “Apache
Airflow v2.2.2 接続用のプロバイダーパッケージ”.
• Apache Airflow v2.2.2 の変更履歴は、Apache Airflow
ドキュメンテーションウェ
ブサイトにあります。

536

Amazon Managed Workflows for Apache Airflow

新規チュートリアル

ユーザーガイド

新しいチュートリアルが追加されました。このチュートリアルでは、新しいカス
タムApache Airflow ロールを作成し、IAMからマップされたApache Airflow ユーザーにそのロールを割り当て、ユー
ザーのアクセスを特定の DAGのサブセットに制限する方法を示しています。

2021 年 12 月 8 日• the section called “チュートリアル:ユーザーを DAG のサブセットに制限する”

537

Amazon Managed Workflows for Apache Airflow

修正内容

ユーザーガイドscheduler.min_file

2021 年 11 月 22 日

_process_interval の値を設定するための最適な手法の推奨内容が修正され、CPU の使用が最適化されまし
た。実行ロールの Secrets
Manager リソースへのアクセスを許可する IAM ポリシーの例が追加されました。Secrets
Manager の条件キーの使用に関するトラブルシューティ
ングトピックが追加されました。
• スケジューラーが DAG を解析する方法のパフォーマン
スチューニング• Amazon MWAA にSecrets
Manager のシークレット
キーにアクセスする権限を付与する• Secrets Manager のAmazon MWAA 実行ロール
での条件キーの設定

538

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

以下は、カスタムプラグイ
ンを使用して DAG が処理されるタイムゾーンを変更するための新しいコードサン
プルと、bashオペレータか2021 年 11 月 1 日

ら dags backfill Apache
Airflow CLI コマンドを呼び出す際のトラブルシューティ
ングトピックが追加されました。
• the section called “DAGのタ
イムゾーンの変更”• bash 演算子を使用した CLI
コマンドのバックフィル
修正内容

Amazon ECS オペレータコー
ドサンプルの問題を修正し、環境が CloudWatch Logs のAmazon ECS タスクロググ
ループにアクセスできるようにするために Amazon MWAA
実行ロールに必要な追加のアクセス許可を明確にしました。

2021 年 10 月 26 日

• Amazon ECS オペレーターのアクセス許可。

539

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

新しいコードサンプルが追加されました。このサンプル
は、Aurora PostgreSQL デー
タベースからDAG実行に関連する情報をクエリし、結果を2021 年 10 月 1 日

Amazon S3 に保存された CSV
ファイルに書き込みます。
• the section called “Amazon
S3 への環境のメタデータのエクスポート”.
修正内容

Amazon MWAA が新しいオブジェクトや変更された
オブジェクトをターゲット
Amazon S3 バケットからスケ
ジューラとワーカーに自動的に同期する方法に関する情報を修正しました。

2021 年 10 月 1 日• DAG フォルダーの仕組み。
現在サポート中

Amazon MWAA は Apache
Airflow 2.0 以降のプロバイ
ダーパッケージを追加でサポートするようになりました。サポートされているパッ
ケージの詳細については、次を参照してください。

2021 年 9 月 24 日

• the section called “Apache
Airflow v2.0.2 接続用のプロバイダーパッケージ”.

540

Amazon Managed Workflows for Apache Airflow

新しいコマンドとプロシー
ジャユーザーガイド

インターネットにアクセスせずに Amazon VPC を使用する場合に Amazon S3 ゲート
ウェイエンドポイントを作成するための追加のガイダンスと AWS CLI コマンド例を追加しました。

2021 年 9 月 24 日

• インターネットにアクセス
せずに Amazon VPC ネット
ワークを作成する。
新しいトピックとユースケース

次の変更が追加されました。

2021 年 9 月 19 日

• the section called“ECSOperator の使用” でAmazon Elastic Container
Service オペレータを使用する新しいコードサンプルが追加されました。
• the section called “プラグイン” で Apache Airflow プ
ラグインを設定する際の問題に関する新しいトラブル
シューティングトピックが追加されました。

541

Amazon Managed Workflows for Apache Airflow

新しくサポートされるリージョン

ユーザーガイド

Amazon MWAA は、以下のリージョンでご利用いただけるようになりました。

2021 年 8 月 31 日

• アジアパシフィック (ムンバイ) ap-south-1• アジアパシフィック (ソウル) ap-northeast-2• 欧州 (ロンドン) eu-west-2• 欧州 (パリ) eu-west-3• カナダ (中部) ca-central-1• 南米 (サンパウロ) sa-east-1
リージョンの利用可能性とエンドポイントについては、以下を参照してください。
• AWS 全般のリファレンスの「Amazon CloudWatch エン
ドポイントとクォータ」
新しいトピックとユースケース

次の変更が追加されました。

2021 年 8 月 27 日

• Amazon MWAA がアカウン
トレベルの Amazon S3 設定(s3:GetAccountPubli
cAccessBlock ) を
Amazon MWAA 実行ロールで取得できるようにサンプ
ルポリシーが更新されました。

542

Amazon Managed Workflows for Apache Airflow

修正内容

ユーザーガイド

次の変更が追加されました。

2021 年 8 月 27 日

• のセキュリティグループの自己参照インバウンドルー
ルを使用するように AWS
CloudFormation テンプレー
トを修正しましたVPC ネッ
トワークを作成する。
• のセキュリティグループに
自己参照インバウンドルー
ルを使用するように AWS
CloudFormation テンプレー
トを修正しましたAmazon
Managed Workflows for
Apache Airflow のクイック
スタートチュートリアル。
新しいトピックとユースケース

次の変更が追加されました。

2021 年 8 月 20 日

• Apache Airflow v2.0.2
Apache Airflow 用 Amazon
マネージドワークフロー上の Apache Airflow のバー
ジョン でサポートされているもののリストに DAG デ
コレーターが追加されました。

543

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 8 月 13 日

• celery.sync_parall
elism ユースケース
が Amazon での Apache
Airflow のパフォーマンスチューニング MWAA に追加されました。
• クォータページにサー
ビスエンドポイントが追加され、名前が Amazon
Managed Workflows for
Apache Airflow のサービス
エンドポイントとクォータに変更されました。
• Amazon Managed
Workflows for Apache
Airflowを使い始める でのユーザーからのフィードバックに基づいて、ネット
ワークの前提条件が明確化されました。
• Apache Airflow CLI コマン
ドリファレンス でサポートされていない Airflow CLI
コマンドに dags listruns および dags nextexecution が移動されま
した。

544

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 8 月 13 日

• Apache Airflow CLI コマン
ドリファレンス で Apache
Airflow v2.0.2 変数を設定、取得、または削除するための bash の例が追加されました。
• Apache Airflow v2.0.2 の依存関係とエアフロー
接続例が Amazon RDS
for Microsoft SQL Server
MWAAでの Amazon の使用に追加されました。
修正内容

次の変更が追加されました。

2021 年 8 月 13 日

• を使用したSSH接続の作成
SSHOperator でのユー
ザーフィードバックに基づ
く Python コードサンプルを修正しました。

545

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 8 月 6 日• variables setでサポートされている Airflow CLI
コマンドが Apache Airflow
CLI コマンドリファレンスに移動されました。
• ユーザーフィードバックに基づいて、Airflow バージョ
ンページから v2.0.2での変更点の概要が Python 依存関
係のインストール に追加されました。
• ユーザーフィードバックに基づいて、Airflow バー
ジョンページから v2.0.2での変更点の概要が Apache
Airflow CLI コマンドリファ
レンス に追加されました。
• ユーザーフィードバックに基づいて、Airflow バージョ
ンページから v2.0.2での変更点の概要が 接続タイプの
概要 に追加されました。
• ユーザーフィードバックに基づいて、Airflow バージョ
ンページから v2.0.2での変更点の概要が カスタムプラ
グインのインストール に追加されました。
• ユーザーフィードバックに基づいて、Airflow バージョ
ンページから v2.0.2での変更点の概要が DAG の追加と更新 に追加されました。

546

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 8 月 6 日• Apache Airflow v2.0.2 のサンプルコードが DAG を使用
して に変数をインポートす
る CLI に追加されました。
• Apache Airflow v2.0.2 のサンプルコードが Lambda 関
数DAGsを使用した呼び出しに追加されました。
新しいトピックとユースケース

次の変更が追加されました。

2021 年 7 月 29 日

• 「Airflow UI に接続が表示されない」のトラブ
ルシューティングトピッ
クが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• Amazon MWAA がサポートするAmazon VPC のリスト
が Amazon でのネットワー
クについて MWAA に追加さ
れました。

547

Amazon Managed Workflows for Apache Airflow

修正内容

ユーザーガイド

次の変更が追加されました。

2021 年 7 月 29 日

• Apache Airflow ウェブサー
バーアクセストークンを作成する でのユーザー
フィードバックに基づいて、Python コードサンプルを修正し、Web ログイントー
クンを表示するようにしました。
• ユーザーフィードバックに基づいて、Snowflake
接続のトピックを修正
し、Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング で倉庫パラメータにシングルクォートを使用するようにしました。
削除または移動されたトピック

次の変更が追加されました。

2021 年 7 月 23 日

• 既存のページを再構築して、すべての監視およびメトリクスのドキュメント
ページが Amazon Managed
Workflows for Apache
Airflow のモニタリングとメトリクス に含められました。
• の Apache Airflow v2 環境メ
トリクス CloudWatchを監視およびメトリクスのナビ
ゲーションメニューに移動されました。

548

Amazon Managed Workflows for Apache Airflow

新しいガイド

ユーザーガイド

次の変更が追加されました。

2021 年 7 月 23 日

• Amazon MWAA 環境にインストールされている Apache
エアフロープロバイダー
パッケージ が作成されました。
• Amazon のモニタリングの概要 MWAA が作成されました。
• での監査ログの表示 AWS
CloudTrail が作成されました。
• Amazon での Airflow ログの表示 CloudWatch が作成さ
れました。
修正内容

次の変更が追加されました。

2021 年 7 月 23 日

• ユーザーフィードバックに基づく Python コードサン
プルが修正され Airflow 接続
文字列を正しい順序で生成
し、AWS Secrets Manager
シークレットを使用した
Apache Airflow 接続の設定にポートパラメータが追加されました。
• ユーザーフィードバックに基づいて、Oracle でのカスタムプラグインの作成に
ローカルにunzipパッケージをインストールする手順が追加されました。

549

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021年7月16日• AWS DMS Operators のト
ピックが に追加されましたAmazon MWAA のよくある質問。
• リモートログエラーのト
ラブルシューティングト
ピックが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• Apache Airflow CLI コマン
ドリファレンス でサポートされていないAirflow CLI コ
マンドが variables setに移動されました。

550

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 7 月 9 日• Python 依存関係のインストール でのユーザー
フィードバックに基づいて
requirements.txt ファイルを作成する一連の手順が追加されました。
• カスタムプラグインのイ
ンストール でのユーザー
フィードバックに基づいて
plugins.zip ファイルを作成する一連の手順が追加されました。
• ユーザーガイド全体に、Amazon Managed
Workflows for Apache
Airflow API リファレンスガ
イドの API リファレンスガ
イドの相互参照リンクが追加されました。
• Amazon MWAA のよくある質問 での [Airflow 2.0 管理]> [プラグイン] メニューにプ
ラグインが表示されない理由についてのトピックが追加されました。

新しいガイド

次の変更が追加されました。

2021 年 7 月 9 日• Amazon S3 でファイルの削除 が作成されました。

551

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 7 月 2 日• 暗号化のためのカスタマー
マネージドキーの使用 でサポートされている値のリス
トが追加されました。
• ユーザーフィードバックに基づいて、requirements.txt
での Python 依存関係の管理内でプライベートリポジト
リ URL の例が更新され、明確化されました。

新しいサンプルコード

次の変更が追加されました。

2021 年 7 月 2 日• Apache Airflow v1.10.12 サンプルコードを追加し、の SSH 接続 AWS Secrets
Manager に のプライベート
キーを使用するようにしましたを使用したSSH接続の作成 SSHOperator 。
新しいトピックとユースケース

次の変更が追加されました。

新しいサンプルコード

次の変更が追加されました。

2021 年 6 月 25 日

• に StartedTaskInstances お
よび FinishedTaskInstances
メトリクスを追加しましたの Apache Airflow v2 環境
メトリクス CloudWatch。
2021 年 6 月 25 日

• Apache Airflow v2.0.2 のサンプルコードが Amazon
MWAAでの Amazon の使用
EKS に追加されました。

552

Amazon Managed Workflows for Apache Airflow

新しいガイド

ユーザーガイド

次の変更が追加されました。

2021 年 6 月 25 日

• Amazon での Apache
Airflow のパフォーマンスチューニング MWAA が作成さ
れました。

553

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 6 月 18 日

• Apache Airflow CLI コマ
ンドリファレンス でサポートされている Apache
Airflow v2.0.2 CLI コマン
ドに connections add
および connections
delete が追加されました。
• で利用可能な最新バー
ジョン AWS CloudForm
ation が の Apache Airflow
v2.0.2 であることを追加しましたAmazon Managed
Workflows for Apache
Airflow のクイックスタート
チュートリアル。
• Apache Airflow ワーカーに一時データを保存するための質問が Amazon MWAA のよくある質問 に追加されました。
• 「Executor がタスクイン
スタンス %s を終了したと報告します」エラーのトピ
ックが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• 「サーバーが接続を予期せず終了しました」ロ
グのトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル

554

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

シューティング に追加されました。
• 踏み台ホストへの SSH ト
ンネルで CLI コマンドを実行する例が Apache Airflow
CLI トークンの作成 に追加されました。
• ランダムに生成された
ユーザー名のトピック
が Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• CLI で DAG を実行する
場合の 503 エラーに関するトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加されました。
• 各 Airflow プロセスの開始時にプラグインをロードしてバージョンのデフォルト
設定を上書きして Amazon
MWAA での Apache Airflow
構成オプションの使用 にする core.lazy_load_plu
gins : False のAirflow
設定オプションを必要とす
る、Apache Airflow v2.0.2のカスタムプラグインに関するトピックをが追加されました。
• Apache Hive と Hadoop を使ったカスタムプラグイン

555

Amazon Managed Workflows for Apache Airflow

ユーザーガイドの作成 での Apache Airflow
v2.0.2 プラグインのサンプ
ルコード用 Airflow 設定オプ
ションステップが追加されました。
• ランタイム環境変数を生成するカスタムプラグインを作成します での Apache
Airflow v2.0.2 プラグインのサンプルコード用 Airflow 設
定オプションステップが追加されました。
• Apache Airflow 用のカス
タムプラグインの作成
PythonVirtualenvOperator
での Apache Airflow v2.0.2
プラグインのサンプルコー
ド用 Airflow 設定オプショ
ンステップが追加されました。
• Oracle でのカスタムプラ
グインの作成 での Apache
Airflow v2.0.2 プラグインのサンプルコード用 Airflow 設
定オプションステップが追加されました。
新しいサンプルコード

次の変更が追加されました。

2021 年 6 月 18 日

• Apache Airflow Snowflake
接続のサンプルコードがApache Airflow Snowflake
接続 AWS Secrets Managerに でシークレットキーを使用する に追加されました。

556

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 6 月 2 日• サーバー側の暗号化ガイダ
ンスが Amazon MWAA 用のAmazon S3 バケットの作成に追加されました。
• Apache Airflow v2.0.2 のシークレットバックエンド
が AWS Secrets Manager
シークレットを使用した
Apache Airflow 接続の設定に追加されました。
• Apache Airflow ワーカーのクォータ増加リクエストに関する質問が Amazon
MWAA のよくある質問 に追加されました。
• Apache Airflow Workers をスケールするかどうかの決定にどのメトリックが使用されるのかという質問がAmazon MWAA のよくある
質問 に追加されました。
• でカスタムメトリクスを作成するための質問がCloudWatch に追加されましたAmazon MWAA のよくある質問。
• プライベートルーティングを使用する VPC の Amazon
S3 VPC インターフェイス
エンドポイントのプライ
ベート IP アドレスを有効にする手順をプライベート
ルーティングVPCを使用し

557

Amazon Managed Workflows for Apache Airflow

ユーザーガイドて Amazon で必要なVPC
サービスエンドポイントを作成する に追加されました。
• チュートリアル: Linux 踏み台ホストを使用したプライ
ベートネットワークアクセスの設定 でローカルポート
フォワーディングを使用して SSH トンネルをセットアップするには新しいサンプルコード

次の変更が追加されました。

2021 年 6 月 2 日• Amazon Aurora PostgreSQ
L メタデータデータベース
をクエリし、カスタムメ
トリクスを CloudWatch でAmazon に発行する DAG の
サンプルコードを追加しましたDAG を使用した でのカ
スタムメトリクスの書き込
み CloudWatch。
新しいガイド

次の変更が追加されました。

2021 年 6 月 2 日• 接続タイプの概要 のApache Airflow UI で接続テンプレートを互換的に使用する方法に関するガイドを作成しました。

558

Amazon Managed Workflows for Apache Airflow

修正内容

ユーザーガイド

次の変更が追加されました。

2021 年 6 月 2 日• オプション 3: へのインター
ネットアクセスのない VPC
ネットワークの作成で AWS
CloudFormation 、テンプ
レートに Apache Airflow
VPC エンドポイントを追加しましたVPC ネットワーク
を作成する。

559

Amazon Managed Workflows for Apache Airflow

Apache Airflow v2.0.2 をス
タートアップ

ユーザーガイド

Apache Airflow v2.0.2 の一般提供開始

2021 年 5 月 26 日

• Apache Airflow 用 Amazon
マネージドワークフロー上の Apache Airflow のバー
ジョン が作成されました。
• の Apache Airflow v2 環境メ
トリクス CloudWatch が作成されました。
• Apache Airflow v2.0.2 のバージョン固有のリンク
が Amazon MWAA でのApache Airflow 構成オプ
ションの使用 に追加されました。
• Apache Airflow v2.0.2 バー
ジョン固有のガイダンスがPython 依存関係のインスト
ール に追加されました。
• Apache Airflow v2.0.2 バー
ジョン固有のガイダンス
が requirements.txt でのPython 依存関係の管理 に追加されました。
• Apache Airflow v2.0.2 のサンプルプラグインが カスタ
ムプラグインのインストー
ル に追加されました。
• Apache Airflow v2.0.2 のサンプルコードが Amazon
MWAA環境での Aurora
PostgreSQL データベースのクリーンアップ に追加され
ました。

560

Amazon Managed Workflows for Apache Airflow

ユーザーガイド• Apache Airflow v2.0.2 のサンプルコードが Apache
Airflow 接続 AWS Secrets
Manager に でシークレット
キーを使用する に追加されました。
• Apache Airflow v2.0.2 のサンプルコードが Apache
Airflow 用のカスタムプラ
グインの作成 PythonVirtualenvOperator に追加されました。
• Apache Airflow v2.0.2 コマ
ンドが Apache Airflow CLI
コマンドリファレンス に追加されました。
• Apache Airflow v2.0.2 スク
リプトが Apache Airflow
CLI トークンの作成 に追加されました。
• Amazon MWAA はデフォル
トで最新の Apache Airflow
バージョンを使用するという注記が Amazon MWAA環
境を作成する に追加されま
した。

561

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

新しいトピックとユースケース

次の変更が追加されました。

修正内容

次の変更が追加されました。

2021 年 5 月 14 日

• Airflow タスクが行き詰まっている、または実行されない場合のトラブルシュー
ティングに関するガイダ
ンスが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
2021 年 5 月 12 日

• Apache Hive と Hadoopを使ったカスタムプラグ
インの作成 の最新の Java
バージョンを使用するようにサンプルプラグイン
コードが 更新されました。以前は、os.enviro
n["JAVA_HOME"]="/u
sr/lib/jvm/jre-1.8.0-openjdk-1.8.0.2
72.b10-1.amzn2.0.1.x86_64" でした。
削除または移動されたトピック

次の変更が追加されました。

2021 年 5 月 10 日

• Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング のトピックがカテゴ
リごとに新しいページに移動されました。

562

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

新しいトピックとユースケース

次の変更が追加されました。

削除または移動されたトピック

次の変更が追加されました。

2021 年 5 月 10 日

• Amazon S3 バケットの概要が Amazon MWAA での
DAG の取り扱い に追加されました。
2021 年 5 月 7 日• Apache Airflow へのアク
セス がトップレベルのナビゲーションに移動され、Apache Airflow ウェブ
サーバーアクセストークンを作成する、Apache Airflow
CLI トークンの作成、および Apache Airflow CLI コマ
ンドリファレンス のページが追加されました。

563

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 5 月 7 日• Apache Airflow CLI コマン
ドリファレンス でサポートされている、またはサポートされていないすべてのAirflow CLI コマンドに関する Apache Airflow リファレ
ンスガイドにバージョン固有のリンクが追加されました。
• Amazon MWAA でのApache Airflow 構成オプ
ションの使用 のすべての設定オプションに関する
Apache Airflow リファレン
スガイドにバージョン固有のリンクが追加されました。
• Amazon MWAA CLI ユー
ティリティが requireme
nts.txt での Python 依存関係の管理 に追加されました。

564

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 30 日

• カスタムプラグインのインストール で、plugins.zip を構造化する方法のフラットおよびネストされた例が追加されました。
• DAG の追加と更新、カスタ
ムプラグインのインストー
ルとPython 依存関係のインストールページに Amazon
MWAA CLI ユーティリティが追加されました。
• カスタムプラグインのインストール および Python 依
存関係のインストール ページでのユーザーフィード
バックに基づいて、コンテ
ンツを概要に再構成し、Amazon S3 にアップロー
ドし、Amazon MWAA セク
ションにインストールしました。
• Amazon でのネットワーク
について MWAA でインター
ネットにアクセスせずに、必要な VPC エンドポイントを作成して既存の Amazon
VPC にアタッチするユースケースの例が追加されました。

565

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 30 日

• Apache Airflow 変数 AWS
Secrets Manager の でのシークレットキーの使用
でApache Airflow の変数にSecrets Managerでのシークレットキーを使用するサン
プルコードが追加されました。
新しいガイド

次の変更が追加されました。

2021 年 4 月 30 日

• プライベートルーティング
VPCを使用して Amazon で必要なVPCサービスエンド
ポイントを作成する が作成されました。
修正内容

次の変更が追加されました。

2021 年 4 月 30 日

• おっと! Amazon MWAA
での Apache Airflow 構
成オプションの使用 でcore.default_ui_ti
mezone が webserver.default_ui_timezo
ne にアップデートされま
した。

566

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 23 日

• チュートリアル: Linux 踏み台ホストを使用したプライ
ベートネットワークアクセスの設定への SSH トンネル
用の Windows (PuTTY) ス
テップが追加されました。
• Apache Airflow 2.0とのみ互換性のある apache-ai
rflow-providersamazon のためのトピッ
クが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。

新しいサンプルコード

次の変更が追加されました。

2021 年 4 月 23 日

• Apache Airflow 接続 AWSSecrets Manager に でシー
クレットキーを使用する
で Apache Airflow 接続に
Secrets Manager のシークレットキーを使用するサン
プルコードが追加されました。

567

Amazon Managed Workflows for Apache Airflow

新しいガイド

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 23 日

• Amazon でのネットワーク
について MWAA が作成されました。
• Amazon MWAA の VPC のセキュリティ が作成されました。
• Amazon MWAA のサービス
固有の Amazon VPC エンド
ポイントへのアクセスの管理 が作成されました。

568

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 16 日

• でインターネットにアクセ
スせずに Amazon VPC ネッ
トワークを作成するための新しい AWS CloudForm
ation テンプレートを追加しましたVPC ネットワークを作成する。
• で を作成するための新しいチュートリアルを追加 AWS
Client VPN しましたチュー
トリアル: AWS Client VPNを使用したプライベート
ネットワークアクセスの設定。
• ユーザーからのフィードバックに基づいて、ネッ
トワークアクセスページの名前を Apache Airflow
アクセスモードに変更され、Apache Airflow のアクセスモード のドキュメントが効率化されました。
• ユーザーフィードバックに基づいて、Amazon VPC の入門情報とテンプレートのみを含むように VPC ネット
ワークを作成する のドキュメントが 簡素化されました。
• BigQuery オペレーターの回避策を に追加しま
したAmazon Managed
Workflows for Apache

569

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

Airflow のトラブルシューテ
ィング。
• Apache Airflow v1.10.12 制
約ファイルのベストプラク
ティスが Python 依存関係のインストール に追加されました。
新しいサンプルコード

次の変更が追加されました。

2021 年 4 月 16 日

• Oracle でのカスタムプラグ
インの作成 で Oracleを使用してカスタムプラグインを作成するためのサンプルコードが追加されました。
• ランタイム環境変数を生成するカスタムプラグインを作成します でランタイム環
境変数を生成するカスタム
プラグインを作成するサン
プルコードが追加されまし
た。
•

570

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 9 日• VPC セキュリティグループ
の自己参照ルール要件のトピックが Amazon MWAA のよくある質問 に追加されました。
• カスタムプラグインディレ
クトリとサイズ制限が カ
スタムプラグインのインス
トール に追加されました。
• 要件ディレクトリとサイズ制限が Python 依存関係のイ
ンストール に追加されました。
• requirements.txt でのPython 依存関係の管理 で foo.pass および
foo.user の Apache
Airflow 構成オプションが明確にされました。
• 設定オプションの概要
が Amazon MWAA でのApache Airflow 構成オプ
ションの使用 に追加されま
した。

571

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 4 月 9 日• で を使用してカスタムプ
ラグインを作成するためのサンプルコードを追加
PythonVirtualenvOperator
しましたApache Airflow 用のカスタムプラグインの作成 PythonVirtualenvOp
erator。
• Apache Hive と Hadoop を使ったカスタムプラグインの作成 で Apache Hive とHadoop を使用してカスタ
ムプラグインを作成するためのサンプルコードが追加されました。
修正内容

次の変更が追加されました。

2021 年 3 月 31 日

• おっと! Python 依存関係のインストール で requireme
nts.txt のフォーマットを更新し、Apache Airflow
v1.10.12 と互換性のあるサンプルが追加されました。

572

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 26 日

• Amazon MWAA のよくある質問にrequirements.txt
や plugins.zip を削除するための回避策が追加されました。
• 環境上の SSH 用の bash 回
避策が Amazon MWAA のよ
くある質問 に追加されました。
• エラーのトピック CloudTrail ResourceAlreadyExi
stsException が に追加されましたAmazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング。

573

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 19 日

• AWS で使用されるサービスのリストを追加しましたAmazon MWAA 実行ロー
ル。
• AWS で使用されるサービスのリストを追加しましたAmazon のサービスにリンクされたロール MWAA。
• Amazon MWAA 用の Python
3.7 バージョンに関する質問
が Amazon MWAA のよくある質問 に追加されました。
• に に関する質問を追加
PythonVirtualenvOperator
しましたAmazon MWAA のよくある質問。
• Amazon Managed
Workflows for Apache
Airflow のトラブルシュー
ティング での VPC と環境設定に関連するすべてのト
ピックについて、次のステップとしてトラブルシュー
ティングスクリプトが追加されました。
• Linux bastion は チュートリ
アル: Linux 踏み台ホストを使用したプライベートネッ
トワークアクセスの設定 の環境と同じリージョンにある必要があるというドキュメントを明確にしました。

574

Amazon Managed Workflows for Apache Airflow

新しいガイド

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 19 日

• で 用の Apache Airflow 接続
ガイドを作成 AWS Secrets
Manager しましたAWS
Secrets Manager シーク
レットを使用した Apache
Airflow 接続の設定。
• テンプレートを使用して、で Amazon VPC インフラストラクチャ、Amazon S3
バケット、および Amazon
MWAA 環境を作成 AWS
CloudFormation するためのクイックスタート
チュートリアルを作成しましたAmazon Managed
Workflows for Apache
Airflow のクイックスタート
チュートリアル。
新しいトピックとユースケース

次の変更が追加されました。

2021 年 3 月 12 日

• Amazon S3 バケット作
成のトラブルシューティ
ングトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加されました。
• JSON ポリシーを作成してにアタッチする手順がAmazon MWAA 実行ロールに追加されました。

575

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 12 日

• DAG をトリガーする際に構成を追加するサンプルコー
ドが Apache Airflow へのア
クセス に追加されました。
新しいガイド

次の変更が追加されました。

2021 年 3 月 12 日

• ベストプラクティスガイ
ドが requirements.txt でのPython 依存関係の管理 で作成されました。

576

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 5 日• Google/GCP/BigQuery ト
ラブルシューティングのトピックを に追加しま
したAmazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング。
• Cython のトラブルシューティングトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加されました。
• MySQL のトラブルシューティングトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加されました。
• 5xx Web サーバーエラーのトラブルシューティ
ングトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加され
ました。

577

Amazon Managed Workflows for Apache Airflow

現在サポート中

ユーザーガイド

次の変更が追加されました。

2021 年 3 月 4 日• 以前は、 backend_k
wargs は でサポートされておらず、Secrets
Manager 関数呼び出しを上書きするための回避策 AWS
Secrets Manager が必要でした。現在、backend_k
wargs はサポートされています。の AWS Secrets
Manager トラブルシュー
ティングトピックを参照してくださいAmazon
Managed Workflows for
Apache Airflow のトラブル
シューティング。
修正内容

次の変更が追加されました。

2021 年 3 月 4 日• おっと! Amazon MWAA環境
クラスの設定 で各環境クラスのサイズを実際のギガバ
イトに反映するように更新
しました。

578

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 2 月 26 日

• VPC エンドポイントポリ
シーを使用したプライベー
トネットワークアクセスがApache Airflow のアクセス
モード に追加されました。
• 環境を作成する際のトラブルシューティング
トピックに追加のチェッ
クが Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• requirements.txt のログを表示する手順が Python
依存関係のインストール に追加されました。

579

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 2 月 25 日

• Apache Hive のユースケー
スが Python 依存関係のイ
ンストール に追加されました。
• requirements.txt のPython 依存関係のインス
トール ファイルに Apache
Airflow パッケージの必要な依存関係を含める必要があ
ることがドキュメントで明確にされました。
• requirements.txt の更新に関するトラブルシューティ
ングのトピックが Amazon
Managed Workflows for
Apache Airflow のトラブル
シューティング に追加されました。

新規チュートリアル

次の変更が追加されました。

2021 年 2 月 22 日

• プライベートネットワークのチュートリアルが チュー
トリアル: Linux 踏み台ホストを使用したプライベート
ネットワークアクセスの設
定 に追加されました。

580

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 2 月 22 日

• プライベートネットワー
ク構成とパブリックネッ
トワーク構成が Apache
Airflow のアクセスモード に追加されました。
• 開発グループのユースケー
スとユーザーシナリオがAmazon MWAA 実行ロールに追加されました。

新しいサンプルコード

次の変更が追加されました。

2021 年 2 月 22 日

• Web ログイントークンと CLI トークンのサンプ
ル Python スクリプトがApache Airflow へのアクセ
ス に追加されました。
• 別の環境で DAG をトリガーするサンプルコー
ドが Amazon Managed
Workflows for Apache
Airflow に追加されました。
• Lambda 関数を使用してDAG をトリガーするサン
プルコードが Lambda 関数
DAGsを使用した呼び出しに追加されました。
新しいコマンドとプロシー
ジャ

次の変更が追加されました。

2021 年 2 月 22 日

• Apache Airflow へのアクセ
ス でのすべてのスクリプトに手順が段階的に追加され
ました。

581

Amazon Managed Workflows for Apache Airflow

新しいサンプルコード

ユーザーガイド

次の変更が追加されました。

2021 年 2 月 17 日

• Apache Airflow へのアクセ
ス での Web ログイントークンのためのcurlの例が更新されました。
• Amazon RDS Microsoft SQL
Server に接続するためのサンプルコードが Amazon
RDS for Microsoft SQL
Server MWAAでの Amazonの使用 に追加されました。
新しいコマンドとプロシー
ジャ

次の変更が追加されました。

2021 年 2 月 17 日

• Amazon MWAA での DAGの取り扱い ページに AWS
CLI コマンドを追加しました。
• Apache Airflow は CLI コ
マンドでのシリアル化された DAG をサポートしていません。CLI は、セキュリティ上の理由からプラ
グインや要件がないウェ
ブサーバー上で実行されるため、plugins.zip または requirements.txt を使用
する MWAA 環境ではこれらのコマンドはサポートされません。Apache Airflow
list_dags と backfill
コマンドが、Apache Airflow
へのアクセス でサポートされていないコマンドに移動されました。

582

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

GitHub 起動

ユーザーガイドドキュメント
が でオープンソースになりました GitHub。任意のページの「このページの編集 GitHub」
を選択します。

2021 年 2 月 17 日

新しいトピックとユースケース

次の変更が追加されました。

2021 年 2 月 12 日

• Step Functions と Amazon
MWAA ユースケースに関する質問が Amazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング に追加されました。
• CLI アクセスポリシーがAmazon MWAA環境へのア
クセス に追加されました。
• 任意のサポートされている Apache Airflow 構成オプションが Amazon MWAA での Apache Airflow 構成オプ
ションの使用 で指定できることがドキュメントで明確にされました。
• VPC ネットワークを作成する で Fargate コンテナが1つのアベイラビリティゾーンで失敗した場合、MWAA
は異なるアベイラビリティ
ゾーンの他のコンテナに切り替わることがドキュメン
トで明確にされました。

新しいトピックとユースケース

次の変更が追加されました。

2021 年 2 月 5 日• Amazon MWAA環境クラスの設定 が追加されました。
583

Amazon Managed Workflows for Apache Airflow

削除または移動されたトピッ
ク

ユーザーガイド

次の変更が追加されました。

2021 年 2 月 4 日• Amazon Managed
Workflows for Apache
Airflowを使い始める において、Amazon S3 バケット名が airflow- で始まる必要がないように要件が削除されました。
• Amazon MWAA環境へのア
クセス と Amazon MWAA
実行ロールが Amazon
MWAA環境へのアクセスの管理 に移動されました。

Amazon MWAA CloudForm
ation

パラメータを更新して、Amazon MWAA
CloudFormationで環境を作成します。

2021 年 2 月 4 日• を削除します SubnetList。
• を削除します TagList。
• を追加します NetworkCo
nfiguration。
• を追加します TagMap。
• 環境作成リクエストの例が追加されました。

584

Amazon Managed Workflows for Apache Airflow

新しいトピックとユースケース

ユーザーガイド

次の変更が追加されました。

2021 年 1 月 29 日

• メール設定の例が Amazon
MWAA での Apache Airflow
構成オプションの使用 に追加されました。
• PostgresHook トラブル
シューティングトピックを に追加しましたAmazon
Managed Workflows for
Apache Airflow のトラブル
シューティング。
• AWS Secrets Manager
トラブルシューティング
トピックを に追加しま
したAmazon Managed
Workflows for Apache
Airflow のトラブルシューテ
ィング。
• 高性能ユースケースがAmazon MWAA ワーカーの
自動スケーリングの設定 に追加されました。

Amazon MWAA のローンチ

Amazon Managed Workflows
for Apache Airflow の一般提供が開始されました。

2020 年 11 月 24 日

• ユーザーガイドのドキュメ
ント• AWS CloudFormation ド
キュメント

585

Amazon Managed Workflows for Apache Airflow

ユーザーガイド

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

dlxxxvi