Amazon Managed Workflows for Apache Airflow (MWAA) のセットアップ

# Amazon Managed Workflows for Apache Airflowとは

Amazon Managed Workflows for Apache Airflow (以下MWAAと呼びます) は、ワークフロー制御ツールであるApache AirflowのAWSマネージドサービスです。  
マネージドサービスのため、デプロイの簡易化、オートスケーリング、AWSサービスのプラグインのインテグレーションを行うことができるのが特徴になります。

# MWAAのセットアップ方法

## 事前準備

MWAAのセットアップを行うには事前にMWAAの情報の格納を行うS3のバケットを作成しておく必要があります。
ここでは、`airflow-${AWS_ACCOUNT_ID}-${AWS_REGION}-bucket`というバケットを作成して、以下の３つのフォルダも作成しておきます。
- dags
- in0
- out0

![mwaa-handson-s3-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/0b38902e-6d44-24d5-61c3-9d09d9c162c0.png)

## MWAAセットアップ

MWAAのサービスに移動しセットアップを行なっていきます。

- 「環境を作成」をクリックします。
   ![mwaa-handson-env-2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/e37b5ec8-73b1-fa0e-8b45-9ed9e96e8b2f.png)

- `ステップ１ 詳細を指定`では以下の内容を指定し「次へ」をクリックします。ここでは基本的にはデフォルト値ですが、S3バケット関連は事前に作成したものを指定するようにします。
    | カテゴリ                                       | 入力項目                                  | 値                                                           |
    | ---------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------ |
    | 環境の詳細                             | 名前                  | 任意の名称                                                   |
    |                                  |Airflowバージョン                      | 2.2.2(最新) (デフォルト値) |
    |                                  | Weekly maintenance window start(UTC) | 任意の時間 (デフォルト値)                                  | 
    | Amazon S3 の DAG コード                                      | S3バケット                    | `s3://airflow-${AWS_ACCOUNT_ID}-${AWS_REGION}-bucket`
    |          | DAGフォルダ                    | `s3://airflow-${AWS_ACCOUNT_ID}-${AWS_REGION}-bucket/dags`                                                  |
    |          | プラグインファイル - オプション                    | 指定なし (デフォルト)                                                  |
    |          | 要件ファイル - オプション                    | 指定なし (デフォルト)                                                  |                                

    ![mwaa-handson-env-3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/3403e237-250c-eb7e-86e5-f73eae054907.png)
    ![mwaa-handson-env-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/72a7a629-fa1b-0464-e886-4c407ca1834d.png)


- `ステップ2 詳細設定を構成`ではまず始めにMWAA用のVPCを作成します。「MWAA VPCを作成」をクリックします。

  ![mwaa-handson-env-5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/308099f9-6401-c182-a51a-c5fff6530fc3.png)

  :::note info
  MWAAは既存のVPC上に構築することも可能ですが、VPCの構成についてMWAAが定めるいくつかの要件があります。詳細については[AWSドキュメント](https://docs.aws.amazon.com/mwaa/latest/userguide/networking-about.html)を参照ください。
  :::

- CloudFormationの画面が開くので以下の値を指定して「スタックの作成」をクリックします。

    | カテゴリ                                       | 入力項目                                  | 値                                                           |
    | ---------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------ |
    | スタックの名前                             | スタックの名前                  | MWAA-VPC (デフォルト)                                                   |
    | パラメータ                                 |EnvironmentName                      | MWAAEnvironment  (デフォルト)|
    |                                  |PrivateSubnet1CIDR                      | 10.192.20.0/24  (デフォルト)|
    |                                  |PrivateSubnet2CIDR                      | 10.192.21.0/24  (デフォルト)|
    |                                  |PublicSubnet1CIDR                      | 10.192.10.0/24  (デフォルト)|
    |                                  |PublicSubnet2CIDR                      | 10.192.11.0/24  (デフォルト)|
    |                                  |VpcCIDR                      | 10.192.0.0/16  (デフォルト)|

- `MWAA-VPC`スタックのステータスが `CREATE_COMPLETE` になるまで待機します。（完了まで５分程度かかります）

  ![mwaa-handson-env-6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/6ea303c2-b060-3822-1d02-22cdde5ae215.png)

- `MWAA-VPC`スタックの出力でVPCの値をメモしておきます。

  ![mwaa-handson-env-7.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/43b4f99b-746a-5c2b-6b7e-41e0ff1fe206.png)

- `ステップ2 詳細設定を構成`に戻り、以下の内容を指定し「次へ」をクリックします。

    | カテゴリ                                       | 入力項目                                  | 値                                                           |
    | ---------------------------------------------- | ----------------------------------------- | ------------------------------------------------------------ |
    | ネットワーク                             | Virtual Private Cloud (VPC)                  | `MWAA-VPC`スタックで作成されたVPCの値                                                   |
    |                                  |サブネット1                      | `MWAA-VPC`スタックで作成されたプライベートサブネットの値 (自動で選択されます)|
    |                                  |サブネット2                      | `MWAA-VPC`スタックで作成されたプライベートサブネットの値 (自動で選択されます)|
    |                                  |ウェブサーバーのアクセス                      | `公開ネットワーク (追加の設定は不要です)`を選択|
    |                                  |セキュリティグループ                      | `新しいセキュリティグループを作成`をチェック (デフォルト)|
    |                                  |Existing security group(s)                      | 指定なし (デフォルト)|
    |環境クラス                                  |インスタンスタイプ                      | mw1.small (デフォルト)|
    |                                  |最大ワーカー数                      | 10 (デフォルト)|
    |                                  |最小ワーカー数                      | 1 (デフォルト)|
    |                                  |スケジューラ数                      | 2 (デフォルト)|
    |暗号化                                  |                      | `暗号化設定をカスタマイズする (高度)`をチェックしない (デフォルト)|
    |モニタリング                                  | Airflowログ設定                     | AirflowタスクログのみONにする (デフォルト)|
    |Airflow 設定オプション - オプション                                  |                      | 指定しない (デフォルト)|
    |タグ - オプション                                  |                      | 指定しない (デフォルト)|
    |アクセス許可                                  | 実行ロール                     | `新しい実行ロールを作成`を選択 (デフォルト)|
    |                                  | ロール名                     | AmazonMWAA-[MWAA名]-[ランダム文字列] (デフォルト)|




  ![mwaa-handson-env-9.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/3bfce778-c0a9-4c24-67f8-892e2da057a6.png)
  ![mwaa-handson-env-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/e79d0f3b-7586-7d66-a38a-f597631fb0b4.png)
  ![mwaa-handson-env-11.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/32b697e1-a8cd-2776-a260-fc68529b9c23.png)
  ![mwaa-handson-env-14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/ea50b7af-00e2-7b78-7737-6f894fd45252.png)

- `ステップ3 確認して作成`で指定値を確認し「環境を作成」をクリックします。
- 以下の画面に遷移し`作成中`の状態になります。作成が完了するまでは約20分から30分程度かかります。
  ![mwaa-handson-env-13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/d7ee2bd9-a849-ea51-20d0-99d3a29a6a0f.png)
- 状態が利用可能になればMWAAの構築完了です。
  ![mwaa-handson-env-1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/76bb3eda-c898-b40d-f839-09c4fad81999.png)

# MWAAへのアクセス

MWAAはAirflow UI上で各種ワークフローの管理や設定を行なっていきます。

- 作成した環境の「Airflow UIを開く」をクリックすると、Airflow UIが表示されます。
  ![mwaa-handson-job-4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/276167/4b4481b8-50f1-3c7e-bc30-1956db3a876a.png)