Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 環境に plugins.zip を使用してカスタムパッケージをインストールしたいと考えています。
簡単な説明
requirements.txt ファイルと plugins.zip ファイルを使用して Amazon MWAA に Python ライブラリをインストールします。requirements.txt ファイルを使用してパッケージをインストールする場合、パッケージはデフォルトで Python Package Index (PyPI ウェブサイト) からインストールされます。コンパイルされたアーティファクトを含むライブラリ (.whl ファイル) を配布する場合は、plugins.zip ファイルを使用してこれらの Python ホイールをインストールしてください。
plugins.zip ファイルを使用して、カスタム Apache Airflow オペレータ、フック、センサー、またはインターフェイスをインストールします。このファイルは、バックエンドの Amazon ECS Fargate コンテナの /usr/local/airflow/plugins/ に書き込まれています。プラグインは、環境変数や、.crt や .yaml などの認証ファイルや設定ファイルのエクスポートにも使用できます。
解決策
Python ホイールを使用してライブラリをインストールします
Python ホイールは、コンパイルされたアーティファクトを含むパッケージファイルです。このパッケージをインストールするには、(.whl) ファイルを plugins.zip に配置し、requirements.txt でこのファイルを参照してください。.whl ファイルを plugins.zip に追加した後で環境を更新すると、.whl は /usr/local/airflow/plugins/ という場所に配布されます。この場所は、基盤となる Amazon Elastic Container Service (Amazon ECS) Fargate コンテナにあります。
Python ホイールを使用してライブラリをインストールするには、「Amazon MWAA 環境にライブラリをインストールする方法を教えてください」を参照してください。
カスタムオペレーター、フック、センサー、またはインターフェイスをインストールする
Amazon MWAA は、Apache Airflow の組み込みプラグインマネージャをサポートしています。これにより、カスタム Apache Airflow オペレーター、フック、センサー、またはインターフェイスを使用できます。これらのカスタムプラグインは、フラットなディレクトリ構造とネストされたディレクトリ構造の両方で plugins.zip ファイルに配置できます。カスタムプラグインの例については、「カスタムプラグインの例」を参照してください。
ランタイム環境変数を生成するカスタムプラグインを作成する
Amazon MWAA 環境で実行時に環境変数を生成するカスタムプラグインを作成することもできます。次に、これらの環境変数を有向非巡回グラフ (DAG) コードで使用できます。詳細については、「ランタイム環境変数を生成するカスタムプラグインの作成」を参照してください。
PEM、.crt、および設定ファイルをエクスポートする
環境の実行時に特定のファイルを継続的に更新する必要がない場合は、plugins.zip を使用してこれらのファイルを配布してください。また、DAG を作成するユーザーにアクセス権を付与する必要のないファイルを配置することもできます。これらのファイルには、証明書 (.crt) ファイル、PEM ファイル、設定 YAML ファイルが含まれます。ファイルを plugins.zip に圧縮したら、plugins.zip を S3 にアップロードします。次に、環境を更新します。ファイルは /usr/local/airflow/plugins にアクセスするために必要な権限で複製されます。
カスタム CA 証明書を plugins.zip ファイルに圧縮するには、以下のコマンドを実行します。
$ zip plugins.zip ca-certificates.crt
これでファイルは /usr/local/airflow/plugins/ca-certificates.crt に配置されました。kube\ _config.yaml を plugins.zip ファイルに圧縮するには、以下のコマンドを実行します。
$ zip plugins.zip kube_config.yaml
これで、ファイルは /usr/local/airflow/plugins/kube_config.yaml に配置されました。
インストールプロセスのトラブルシューティング
これらのパッケージのインストールに問題が発生した場合は、aws-mwaa-local-runner を使用して DAG、カスタムプラグイン、または Python 依存関係をローカルでテストできます。
plugins.zip ファイルによる Python パッケージのインストールに関する問題をトラブルシューティングするには、Apache Airflow Worker ロググループまたはスケジューラーロググループのいずれかのログファイル (requirements_install_ip) を表示できます。
重要:Amazon MWAA 環境にパッケージまたは plugins.zip ファイルをインストールする前に、Amazon MWAA CLI ユーティリティ](https://docs.aws.amazon.com/mwaa/latest/userguide/working-dags-dependencies.html#working-dags-dependencies-cli-utility) (aws-mwaa-local-runner) を使用して Python の依存関係と plugins.zip ファイルをテストすることが ベストプラクティスです [。
関連情報
プラグイン