スキップしてコンテンツを表示

Amazon MWAA 環境に Python ライブラリをインストールする方法を教えてください。

所要時間2分
0

Amazon Managed Workflows for an Apache Airflow (Amazon MWAA) 環境に Python ライブラリをインストールしようとしています。

簡単な説明

Amazon MWAA は、パブリックネットワークとプライベートネットワークのウェブサーバーアクセスモードを提供します。

プライベートウェブサーバーを含む Amazon MWAA 環境に Python の依存関係をインストールするには、Python wheels (.whl ファイル) を使用してください。

Python ライブラリを Amazon MWAA 環境にインストールするには、requirements.txt または plugins.zip を使用してください。requirements.txt を使用すると、pip はデフォルトでは、Python Package Index (PyPI) に掲載されたパッケージをインストールします。コンパイルされたアーティファクトを含むカスタムライブラリまたはパッケージを .whl ファイルとしてインストールする場合は、plugins.zip ファイルを使用してください。カスタム Amazon MWAA の操作、フック、センサー、またはインターフェイスをインストールする際には、plugins.zip ファイルを使用する必要があります。このプラグインは、環境変数、認証、および設定ファイル (例: .crt、.yaml) をエクスポートします。

解決策

注: AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI で発生したエラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用していることを確認してください。

開始する前に、前提条件を満たしていることを確認してください。

Amazon MWAA のローカル環境を設定する

次の手順を実行します。

  1. AWS CLI を使用して Docker イメージを構築した後、Amazon MWAA のローカル環境を設定します。

    注: Amazon MWAA リポジトリは AWS CLI ユーティリティを提供し、Amazon MWAA 環境をローカルで複製します。詳細については、GitHub のウェブサイトで「aws-mwaa-local-runner」を参照してください。

  2. Python ライブラリと依存関係を requirements.txt ファイルに追加します。
    注: プラグインをダウンロードした後、requirements.txt ファイルに制約が含まれていることを確認してください。

  3. 次のスクリプトを使用して requirements.txt ファイルをテストします。

    #aws-mwaa-local-runner % ./mwaa-local-env test-requirements

    想定される出力:

    Installing requirements.txtCollecting aws-batch (from -r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/5d/11/3aedc6e150d2df6f3d422d7107ac9eba5b50261cf57ab813bb00d8299a34/aws_batch-0.6.tar.gz  
    Collecting awscli (from aws-batch->-r /usr/local/airflow/dags/requirements.txt (line 1))  
      Downloading https://files.pythonhosted.org/packages/07/4a/d054884c2ef4eb3c237e1f4007d3ece5c46e286e4258288f0116724af009/awscli-1.19.21-py2.py3-none-any.whl (3.6MB)  
        100% |████████████████████████████████| 3.6MB 365kB/s   
    ...  
    ...  
    ...  
    Installing collected packages: botocore, docutils, pyasn1, rsa, awscli, aws-batch  
      Running setup.py install for aws-batch ... done  
    Successfully installed aws-batch-0.6 awscli-1.19.21 botocore-1.20.21 docutils-0.15.2 pyasn1-0.4.8 rsa-4.7.2

詳細については、「PyPi.org の要件ファイル形式を使用して Python の依存関係をインストールする」を参照してください。

requirements.txt ファイルから .whl ファイルをビルドする

次の手順を実行します。

  1. package-requirements に対し、次の local-runner コマンドを実行します。

    #aws-mwaa-local-runner % ./mwaa-local-env package-requirements

    注: このコマンドでは、すべての .whl ファイルを aws-mwaa-local-runner/plugin というフォルダにダウンロードします。package-requirements コマンドを実行すると、plugins.zip、新しい packaged_requirements.txt および constraints.txt がアプリケーションの requirement/ ディレクトリに作成されます。

  2. plugins.zip と、新しい packaged_requirements.txt および constraints.txt ファイルをダウンロードします。

  3. 新しい packaged_requirements.txt ファイルを変更し、パブリック制約ではなく、/usr/local/airflow/dags/constraints.txt を指すようにします。

constraints.txt ファイルをアップロードする

contraints.txt ファイルは、Amazon Simple Storage Service (Amazon S3) バケットの dag/ ディレクトリにアップロードするか、plugins ファイルに含めることができます。contraints.txt ファイルを Amazon S3 バケットの dag/ ディレクトリにアップロードする場合は、Amazon S3 は requirements.txt ファイルをデプロイに応じて変更します。ただし、constraints.txt ファイルを plugins ファイルに含める場合は、packaged_requirements.txt はパブリック制約ではなく、/usr/local/airflow/dags/constraints.txt を指していることを確認してください。

constraints.txt ファイルを plug-ins にアップロードする場合は、次のコマンドを使用してください。

#aws-mwaa-local-runner % zip -j requirements/plugins.zip constraints.txt

plugins.zip ファイルにパッケージ化された .whl ファイルを指す、新しい requirements.txt ファイルを作成する

次の手順を実行します。

  1. 新しい packaged_requirements.txt ファイルを変更します。ファイルを Amazon S3 の dags ディレクトリにアップロードした場合は、次の例で {OPTION}dags に置き換えてください。または、このファイルを plugins.zip ファイルに追加した場合は、{OPTION}plugins に置き換えてください。

    --find-links /usr/local/airflow/plugins  
    --no-index  
    --constraint "/usr/local/airflow/{OPTION}/constraints.txt"   
    ....snip.....
  2. plugins.zip ファイルと requirements.txt ファイルを Amazon MWAA クラスターの Amazon S3 バケットにアップロードします。

  3. 環境を更新します。

パッケージのインストールに関するトラブルシューティング

aws-mwaa-local-runner を使用して DAG、カスタムプラグイン、および Python の依存関係をテストしてください。Amazon MWAA Worker またはスケジューラーロググループのログファイルを確認します。

重要: パッケージまたは plugins.zip ファイルをインストールする前に、Amazon MWAA CLI ユーティリティを使用して Python の依存関係と plugins.zip ファイルをテストしてください。

関連情報

Python 依存関係の管理オプション 2: Python wheels (.whl)

プラグイン

AWS公式更新しました 9ヶ月前
コメントはありません

関連するコンテンツ