翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Python 依存関係のインストール
Python 依存関係とは、Amazon Managed Workflows for Apache Airflow 環境の Apache Airflow バージョンの Apache Airflow ベースインストールに含まれていないパッケージまたはディストリビューションです。このトピックでは、Amazon S3 バケット内の requirements.txt
ファイルを使用して Amazon MWAA 環境に Apache Airflow Python 依存関係をインストールする手順について説明します。
目次
前提条件
このページのステップを完了するには、以下のものが必要です。
-
アクセス許可 — AWS アカウントには、管理者から環境の AmazonMWAAFullConsoleAccess アクセスコントロールポリシーへのアクセスが付与されている必要があります。さらに、Amazon MWAA 環境が使用する AWS リソースにアクセスするには、実行ロールによって Amazon MWAA 環境が許可されている必要があります。
-
アクセス — 依存関係をウェブサーバーに直接インストールするためにパブリックリポジトリにアクセスする必要がある場合は、パブリックネットワークのウェブサーバーアクセスが環境に設定されている必要があります。詳細については、「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-local-runner
」を参照してください。
ステップ 2: requirements.txt
を作成する
次のセクションでは、requirements.txt
ファイルの Python Package インデックス
requirements.txt
を Amazon S3 にアップロードします。
Amazon S3 コンソールまたは AWS Command Line Interface (AWS CLI) を使用して、requirements.txt
ファイルを Amazon S3 バケットにアップロードできます。
の使用 AWS CLI
AWS Command Line Interface (AWS CLI) は、コマンドラインシェルのコマンドを使用して AWS サービスを操作できるオープンソースツールです。このページのステップを完了するには、以下のものが必要です。
-
AWS CLI – バージョン 2 をインストールします。
を使用してアップロードするには 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://
YOUR_S3_BUCKET_NAME
/requirements.txt
Amazon S3 コンソールの使用
Amazon S3 コンソールは、Amazon S3 バケット内のリソースを作成および管理できるウェブベースのユーザーインターフェイスです。
Amazon S3 コンソールを使ってアップロードするには
-
Amazon MWAA コンソールで、環境ページ
を開きます。 -
環境を選択します。
-
Amazon S3 コンソールの [DAG コード in S3] ペインで DAG コード内の [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-local-runner
を使用して、DAG、カスタムプラグイン、Python の依存関係をローカルでテストします。