翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
カスタムプラグインのインストール
Amazon Managed Workflows for Apache Airflow は Apache Airflow の組み込みプラグインマネージャーをサポートしているため、カスタム Apache Airflow オペレータ、フック、センサー、またはインターフェイスを使用できます。このページでは、plugins.zip
ファイルを使用して、Amazon MWAA 環境に Apache Airflow カスタムプラグイン
目次
前提条件
このページのステップを完了するには、以下のものが必要です。
-
権限 — AWS アカウントには、管理者から、ご使用の環境の 「AmazonMWAAFullConsoleAccess」 アクセスコントロールポリシーへのアクセス権限が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリソースへのアクセスを「実行ロール」で許可されている必要があります。
-
アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「Apache Airflow のアクセスモード」を参照してください。
-
Amazon S3 設定 —
plugins.zip
で DAG、カスタムプラグイン、およびrequirements.txt
で Python の依存関係を保存するために使用される「Amazon S3 バケット」は、Public Access Blocked と Versioning Enabledで構成する必要があります。
使用方法
カスタムプラグインを環境で実行するには、次の 3 つのことを行う必要があります。
-
plugins.zip
ファイルをローカルに作成します。 -
plugins.zip
のファイルを Amazon S3 のバケットにアップロードしてください。 -
Amazon MWAA コンソールの [プラグインファイル] フィールドに、このファイルのバージョンを指定します。
注記
これが初めて plugins.zip
を Amazon S3 バケットにアップロードする場合、Amazon MWAA コンソールでファイルへのパスも指定する必要があります。1 回だけこのステップを行ってください。
v2 での変更点
-
新規:オペレータ、フック、エグゼキューター。Apache Airflow v1と Apache Airflow v2 の間で、Amazon MWAA の
plugins.zip
に指定する DAG 内のインポート文やカスタムプラグインが変更されています。例えば、Apache Airflow v1のfrom airflow.contrib.hooks.aws_hook import AwsHook
は、Apache Airflow v2 ではfrom airflow.providers.amazon.aws.hooks.base_aws import AwsBaseHook
に変更されています。詳細については、Apache Airflow リファレンスガイドの「Python API リファレンス」を参照してください。 -
新規:プラグインへのインポート。
airflow.{operators,sensors,hooks}.<plugin_name>
を使用して追加されたプラグインのオペレータ、センサー、フックをインポートすることはもはやサポートされていません。これらの拡張モジュールは、通常の Python モジュールとしてインポートする必要があります。v2 以降では、これらを DAG ディレクトリに配置し、.airflowignore ファイルを作成して使用して DAG としての解析から除外する方法が推奨されます。詳細については、Apache Airflow リファレンスガイドの「モジュール管理」と「カスタムオペレータの作成 」を参照してください。
カスタムプラグイン数
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 サービスはタイムアウトし、環境を安定した状態にロールバックしようとします。
注記
Apache Airflow v1.10.12 または Apache Airflow v2.0.2 を使用する環境では、Amazon MWAA は Apache Airflow ウェブサーバー上のアウトバウンドトラフィックを制限し、プラグインや Python の依存関係をウェブサーバーに直接インストールすることを許可していません。Apache Airflow v2.2.2 以降、Amazon MWAA はプラグインと依存関係をウェブサーバーに直接インストールできるようになりました。
カスタムプラグイン数
次のセクションでは、Apache Airflow リファレンスガイドのサンプルコードが 使用して、ローカル開発環境を構築する方法を示します。
plugins.zip でフラットなディレクトリ構造を使用する例
plugins.zip のネストされたディレクトリ構造を使用する例
plugins.zip ファイルの作成
以下の手順では、plugins.zip ファイルをローカルで作成する場合に推奨される手順について説明します。
ステップ 1: Amazon MWAA CLI ユーティリティを使用してカスタムプラグインをテストする
-
コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 環境をローカルに複製します。
-
CLI は、Amazon MWAA のプロダクションイメージに似た Docker コンテナイメージをローカルでビルドします。これにより、Amazon MWAA にデプロイする前に、ローカルの Apache Airflow 環境を実行して DAG、カスタムプラグイン、依存関係を開発およびテストできます。
-
CLI を実行するには、GitHub の「aws-mwaa-local-runner
」を参照してください。
ステップ 2: plugins.zip ファイルを作成する
ビルトインの ZIP アーカイブユーティリティやその他の ZIP ユーティリティ (7zip
注記
Windows OS 用のビルトイン ZIP ユーティリティは、.zip ファイルの作成時にサブフォルダを追加する場合があります。Amazon S3 バケットにアップロードする前に plugins.zip ファイルの内容を確認して、ディレクトリが追加されていないことを確認することをお勧めします。
-
ディレクトリをローカルの Airflow プラグインディレクトリに変更します。例:
myproject$
cd plugins
-
次のコマンドを実行して、コンテンツに実行権限があることを確認します (macOS と Linux のみ)。
plugins$
chmod -R 755 .
-
plugins
フォルダ内のコンテンツを ZIP 圧縮します。plugins$
zip -r plugins.zip .
plugins.zip
を Amazon S3 にアップロードします。
Amazon S3 コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon S3 バケットにplugins.zip
ファイルをアップロードできます。
AWS CLI を使用する場合
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りするためのオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
AWS CLI を使用してアップロードするには
-
コマンドプロンプトで、
plugins.zip
ファイルが保存されているディレクトリに移動します。例:cd plugins
-
以下のコマンドを使って、Amazon S3 バケットをすべてリストアップします
aws s3 ls
-
以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一覧表示します。
aws s3 ls s3://
YOUR_S3_BUCKET_NAME
-
環境の Amazon S3 バケットに
plugins.zip
ファイルをアップロードするには、次のコマンドを使用します。aws s3 cp plugins.zip s3://
YOUR_S3_BUCKET_NAME
/plugins.zip
Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理できるウェブベースのユーザーインターフェイスです。
Amazon S3 コンソールを使ってアップロードするには
-
Amazon MWAA コンソールで「環境ページ
」を開きます。 -
環境を選択します。
-
Amazon S3コンソールの「DAG コード in S3」ペインでDAG コード内のS3バケット リンクを選択して、ストレージバケットを開きます。
-
「アップロード」を選択します。
-
「ファイルの追加」を選択します。
-
plugins.zip
のローカルコピーを選択し、[アップロード] を選択します。
環境へのカスタムプラグインのインストール
このセクションでは、plugins.zip ファイルへのパスを指定し、zip ファイルが更新されるたびに plugins.zip ファイルのバージョンを指定することで、Amazon S3 バケットにアップロードしたカスタムプラグインをインストールする方法について説明します。
Amazon MWAA コンソールで plugins.zip
へのパスを指定する(初回)
これが初めて plugins.zip
を Amazon S3 バケットにアップロードする場合、Amazon MWAA コンソールでファイルへのパスも指定する必要があります。1 回だけこのステップを行ってください。
-
Amazon MWAA コンソールで「環境ページ
」を開きます。 -
環境を選択します。
-
[Edit] (編集) を選択します。
-
「Amazon S3 の DAG コード」ペインで、「プラグインファイル - オプション」フィールドの横にある「S3 を参照」を選択します。
-
Amazon S3 バケットの「
plugins.zip
」ファイルを選択します。 -
[選択] を選択します。
-
「次へ」→「環境の更新」を選択します。
Amazon MWAA コンソールでplugins.zip
のバージョンを指定する。
新しいバージョンの plugins.zip
を Amazon S3 バケットにアップロードするたびに、Amazon MWAA コンソールで plugins.zip
ファイルのバージョンを指定する必要があります。
-
Amazon MWAA コンソールで「環境ページ
」を開きます。 -
環境を選択します。
-
[Edit] (編集) を選択します。
-
「Amazon S3 の DAG コードペイン」で、ドロップダウンリストから
plugins.zip
のバージョンを選択します。 -
[Next] (次へ) を選択します。
plugins.zip のユースケースの例
-
Apache Hive と Hadoop を使ったカスタムプラグイン でカスタムプラグインを作成する方法について学びます。
-
Python 仮想環境オペレータにパッチを適用するカスタムプラグイン でカスタムプラグインを作成する方法について学びます。
-
Oracle によるカスタムプラグイン でカスタムプラグインを作成する方法について学びます。
-
Amazon MWAA での DAG のタイムゾーンの変更 でカスタムプラグインを作成する方法について学びます。
次のステップ
-
GitHub の aws-mwaa-local-runner
を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。