翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 パッケージインデックス (PyPi.org)、Python wheels (.whl
)、またはプライベート PyPi/PEP-503 準拠リポジトリでホストされている Python 依存関係から環境にインストールできます。
Python 依存関係の場所とサイズ制限
Apache Airflow スケジューラとワーカーは、AWS で管理されるFargateコンテナが /usr/local/airflow/plugins
での環境でスタートアップする際に、カスタムプラグインを探します。
-
サイズ制限。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 (Amazon MWAA) 環境をローカルに複製します。
-
CLI は、Amazon MWAA のプロダクションイメージに似た Docker コンテナイメージをローカルでビルドします。これにより、Amazon MWAA にデプロイする前に、ローカルの Apache Airflow 環境を実行して DAG、カスタムプラグイン、依存関係を開発およびテストできます。
-
CLI を実行するには、「」のaws-mwaa-local-runner
「」を参照してください GitHub。
ステップ 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://
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 コンソールでスケジューラのロググループを開き、Logs コンソールで Apache Airflow CloudWatch ログを表示する方法について説明します。
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))
次のステップ
-
DAGs、カスタムプラグイン、Python の依存関係をローカルaws-mwaa-local-runner
でテストします GitHub。