Python 依存関係のインストール
Python 依存関係とは、Amazon Managed Workflows for Apache Airflow 環境の Apache Airflow バージョンの Apache Airflow ベースインストールに含まれていないパッケージまたはディストリビューションです。このトピックでは、Amazon S3 バケット内の requirements.txt ファイルを使用して Apache Airflow Python の依存関係を Amazon MWAA 環境にインストールする手順について説明します。
目次
前提条件
このページのステップを完了するには、以下のものが必要です。
-
アクセス許可 — AWS アカウント には、管理者から、ご使用の環境の AmazonMWAAFullConsoleAccess アクセスコントロールポリシーへのアクセス権限が付与されている必要があります。さらに、Amazon MWAA 環境には、その環境で使用される AWS のリソースへのアクセスを 実行ロール で許可されている必要があります。
-
アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワーク のウェブサーバーアクセスが環境に設定されている必要があります。詳細については、Apache Airflow のアクセスモード を参照してください。
-
Amazon S3 設定 —
plugins.zipで DAG、カスタムプラグイン、およびrequirements.txtで Python の依存関係を保存するために使用される Amazon S3 バケット は、Public Access Blocked と Versioning Enabled で構成する必要があります。
仕組み
Amazon MWAA では、Python の依存関係はすべて、requirements.txt ファイルを Amazon S3 バケットにアップロードし、ファイルを更新するたびに Amazon MWAA コンソールでファイルのバージョンを指定することでインストールされます。Amazon MWAA は pip3 install -r requirements.txt を実行して、Python の依存関係を Apache Airflowスケジューラおよび各ワーカーにインストールします。
Python の依存関係をお使いの環境で実行するには、次の 3 つのことを行う必要があります。
-
requirements.txtファイルをローカルに作成します。 -
ローカルの
requirements.txtを Amazon S3 バケットにアップロードします。 -
Amazon MWAA コンソールの 要件ファイル フィールドに、このファイルのバージョンを指定します。
注記
これが初めて requirements.txt を作成してAmazon S3 バケットにアップロードする場合、Amazon MWAA コンソールでファイルへのパスも指定する必要があります。1 回だけこのステップを行ってください。
Python の依存関係の概要
Apache Airflow エクストラやその他の Python 依存関係は、Python Package インデックス (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 MWAA CLI ユーティリティを使用して Python の依存関係をテストする
-
コマンドラインインターフェイス (CLI) ユーティリティは、Amazon Managed Workflows for Apache Airflow 環境をローカルに複製します。
-
CLI は、Amazon MWAA のプロダクションイメージに似た Docker コンテナイメージをローカルでビルドします。これを使用すると、Amazon MWAA にデプロイする前に、ローカルの Apache Airflow 環境を実行して DAG、カスタムプラグイン、依存関係を開発およびテストできます。
-
CLI を実行するには、GitHub の aws-mwaa-docker-images
を参照してください。
ステップ 2: requirements.txt を作成する
次のセクションでは、requirements.txt ファイルの Python Package インデックス
requirements.txt を Amazon S3 にアップロードします。
Amazon S3 コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、Amazon S3 バケットに requirements.txt ファイルをアップロードできます。
AWS CLI の使用
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルでコマンドを使用して AWS サービスとやり取りできるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
AWS CLI を使用してアップロードするには
-
以下のコマンドを使って、Amazon S3 バケットをすべてリストアップします
aws s3 ls -
以下のコマンドを使用して、ご使用の環境の Amazon S3 バケット内のファイルとフォルダを一覧表示します。
aws s3 ls s3://YOUR_S3_BUCKET_NAME -
以下のコマンドにより、
requirements.txtファイルが Amazon S3 にアップロードされます。aws s3 cp requirements.txt s3://amzn-s3-demo-bucket/requirements.txt
Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理するために使用できるウェブベースのユーザーインターフェイスです。
Amazon S3 コンソールを使ってアップロードするには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
コンソールの DAG コード in S3 ペインで S3 バケット リンクを選択して、ストレージバケットを開きます。
-
アップロード を選択します。
-
ファイルの追加 を選択します。
-
requirements.txtのローカルコピーを選択し、アップロード を選択します。
環境への Python 依存関係のインストール
このセクションでは、requirements.txt ファイルへのパスを指定し、更新されるたびに requirements.txt ファイルのバージョンを指定することで、Amazon S3 バケットにアップロードした依存関係をインストールする方法について説明します。
Amazon MWAA コンソールで requirements.txt へのパスを指定する(初回)
これが初めて requirements.txt を作成してAmazon S3 バケットにアップロードする場合、Amazon MWAA コンソールでファイルへのパスも指定する必要があります。1 回だけこのステップを行ってください。
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
編集 を選択します。
-
Amazon S3 ペインの DAG コード で、要件ファイル - オプション フィールドに隣接する S3 の参照 を選択します。
-
Amazon S3 バケット上の
requirements.txtファイルを選択します。 -
選択 を選択します。
-
次へ → 環境の更新 を選択します。
環境の更新が完了した直後に、新しいパッケージの使用を開始できます。
Amazon MWAA コンソールでrequirements.txtのバージョンを指定する。
新しいバージョンの requirements.txt を Amazon S3 バケットにアップロードするたびに、Amazon MWAA コンソールで requirements.txt ファイルのバージョンを指定する必要があります。
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
編集 を選択します。
-
Amazon S3 の DAG コードペインで、ドロップダウンリストから
requirements.txtのバージョンを選択します。 -
次へ → 環境の更新 を選択します。
環境の更新が完了した直後に、新しいパッケージの使用を開始できます。
requirements.txt のログにアクセスする
ワークフローのスケジュール設定と dags フォルダーの解析を行うスケジューラーの Apache Airflow ログを表示できます。次のステップでは、Amazon MWAA コンソールでスケジューラーのロググループを開き、CloudWatch Logs コンソールで Apache Airflow ログにアクセスする方法について説明します。
requirements.txt のログにアクセスするには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
モニタリング ペインで Airflow スケジューラーロググループ を選択します。
-
ログストリーム の
requirements_install_ipログを選択します。 -
環境にインストールされたパッケージのリストについては、
/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)) -
パッケージのリストを確認し、インストール中にエラーが発生したパッケージがないか確認してください。何か問題が発生した場合、次のようなエラーが表示されます。
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))
次のステップ
GitHub の aws-mwaa-docker-images