如何在我的 Amazon MWAA 環境中安裝程式庫?

3 分的閱讀內容
0

我想在我的 Amazon Managed Workflows for Apache Airflow (Amazon MWAA) 環境中安裝程式庫。

簡短說明

使用 requirements.txt 和 plugins.zip 檔案在 Amazon MWAA 中安裝 Python 程式庫。如果您使用 requirements.txt 檔案安裝套件,預設情況下,會從 Python 套件索引 (來自 PyPI 網站) 安裝套件。如果您交付具有已編譯成品的程式庫 (.whl 檔案),則可以使用 plugins.zip 檔案來安裝 Python Wheel。

對於 Amazon MWAA 2.2.2 和 2.4.3 版,私人網頁伺服器選項無法提供傳出網際網路存取。Amazon MWAA 在 Amazon MWAA 服務虛擬私有雲端 (VPC) 的網頁伺服器上安裝需求和外掛程式。這些需求包括具有傳出網際網路存取的 NAT 閘道。但是,對於舊版 Amazon MWAA (2.0.2 和 1.10.12),預設情況下不會在網頁伺服器上安裝需求和外掛程式。

對於 Amazon MWAA 2.2.2 和 2.4.3 版,Amazon MWAA 本機執行器提供命令列公用程式,可在 plugins.zip 檔案中下載並封裝 Python 依賴套件 (.whl) 和需求。

對於所有版本的 Amazon MWAA,您可以使用 plugins.zip 檔案安裝自訂的 Apache Airflow 運算、勾點、感應器或介面。外掛程式會匯出環境變數、身分驗證和組態檔,例如 .crt 和 .yaml。

解決方法

在具有私人網頁伺服器的環境 (Amazon MWAA 2.2.2 和 2.4.3 版) 中使用 .whl 安裝程式庫

設定您的 Amazon MWAA 本機環境

  1. 建立 Docker 映像檔並設定 Amazon MWAA 本機環境 (從 GitHub 網站)。MWAA 儲存庫提供命令列界面 (CLI) 公用程式,可在本機複寫 Amazon MWAA 環境。

  2. 將 Python 程式庫和依賴套件新增至 requirements.txt 檔案。

  3. 使用下列指令碼來測試 requirements.txt 檔案:

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

輸出看起來類似於以下內容:

 Installing requirements.txt
Collecting 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

從 requirements.txt 檔案組建 .whl 檔案

執行下列 package-requirements local-runner 命令,從 requirements.txt 檔案組建 .whl 檔案:

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

該命令會將所有 .whl 檔案下載至資料夾:aws-mwaa-local-runner/plugin

建立包含 .whl 檔案和 Amazon MWAA 限制條件的 plugins.zip 檔案

下載並複製 constraints.txt 至外掛程式目錄。然後,執行下列命令以建立 plugins.zip 檔案:

#aws-mwaa-local-runner % curl -o plugins/constraints.txt "https://raw.githubusercontent.com/apache/airflow/constraints-2.2.2/constraints-3.7.txt"
#aws-mwaa-local-runner % zip -j dags/plugins.zip plugins/constraints.txt

建立新的 requirements.txt 檔案,該檔案指向已封裝在 plugins.zip 檔案中的 .whl 檔案

1.建立新的 requirements.txt 檔案。在您選擇的文字工具中,使用類似下列內容的格式:

=========new requirements.txt==========

--find-links /usr/local/airflow/plugins

--no-index

--constraint “/usr/local/airflow/plugins/constraints.txt”

aws-batch==0.6
====================================

2.將 plugins.zip 檔案和 requirements.txt 檔案上傳至 MWAA 叢集的 Amazon Simple Storage Service (Amazon S3) 儲存貯體。然後,更新環境。

使用 Python Wheel 安裝自訂程式庫

Python Wheel 是具有已編譯成品的套件檔案。若要安裝此套件,請將 .whl 檔案放置在 plugins.zip 檔案中。然後在 requirements.txt 檔案中參考此檔案。當您將 .whl 檔案新增至 plugins.zip 之後,請更新環境。該 .whl 檔案會交付至 Amazon Elastic Container Service (Amazon ECS) Fargate 容器的位置:/usr/local/airflow/plugins/

安裝 Python Wheel

  1. 建立 plugins.zip 檔案。執行下列命令,在您的系統上建立本機 Amazon MWAA 外掛程式目錄:
$ mkdir plugins
  1. 將 .whl 檔案複製到您建立的外掛程式目錄。執行下列命令,將目錄變更為指向您的本機 Airflow 外掛程式目錄:
$ cd plugins

執行下列命令以確認內容具有可執行許可:

plugins$ chmod -R 755

執行下列命令,在您的外掛程式資料夾中壓縮內容:

plugins$ zip -r plugins.zip .
  1. 將 .whl 檔案的路徑納入 requirements.txt 檔案 (範例:/usr/local/airflow/plugins/example_wheel.whl)。

注意: 請務必為您的 Amazon S3 儲存貯體開啟版本控制。

  1. 將 plugins.zip 和 requirements.txt 檔案上傳至 Amazon S3 儲存貯體 (範例:s3://example-bucket/plugins.zip)。

  2. 在 Amazon MWAA 主控台上指定 plugins.zip 版本

安裝自訂運算子、勾點、感應器或介面

Amazon MWAA 支援 Apache Airflow 的內建外掛程式管理員。該外掛程式管理員可讓您使用自訂 Apache Airflow 運算子、勾點、感應器或界面。您可以使用平面或巢狀目錄結構,將這些自訂外掛程式放置在 plugins.zip 檔案中。檔案內容被寫入後端 Amazon ECS Fargate 容器,位於:/usr/local/airflow/plugins/。如需詳細資訊,請參閱自訂外掛程式的範例

建立自訂外掛程式以產生執行期環境變數

建立自訂外掛程式,該外掛程式會在您的 Amazon MWAA 環境上產生執行期的環境變數。然後,您可以在您的有向無環圖 (DAG) 程式碼中使用這些環境變數。如需詳細資訊,請參閱建立會產生執行期環境變數的自訂外掛程式

匯出 PEM、.crt 和組態檔 (.yaml)

如果您在環境執行期間不需要持續更新特定檔案,可以使用 plugins.zip 檔案來分配這些檔案。您也可以建立 DAG,並將 plugins.zip 用於不需要使用者存取權的檔案 (例如憑證、PEM 和組態 YAML 檔案)。

下列範例命令會將 ca-certificates.crt 檔案壓縮至 plugins.zip 檔案:

$ zip plugins.zip ca-certificates.crt

在您使用此 plugins.zip 檔案更新環境後,該 .crt 檔案會同步至每個工作者容器上的 /usr/local/airflow/plugins/ca-certificates.crt 路徑。然後,您的 DAG 會存取此檔案。對於其他檔案類型,請遵循相同程序。

安裝自訂外掛程式和二進位檔

您可以使用 Oracle 為 Amazon MWAA 建立自訂外掛程式,並將其與 plugins.zip 檔案中的其他自訂外掛程式和二進位檔結合使用。這包括非 Python 套件。如需詳細資訊,請參閱使用 Oracle 建立自訂外掛程式

若要將二進位檔新增至您的容器,或設定和修改環境變數,請參閱使用 Apache Hive 和 Hadoop 建立自訂外掛程式

對套件安裝進行疑難排解

使用 aws-mwaa-local-runner (從 GitHub 網站) 測試 DAG、自訂外掛程式和 Python 依賴套件。

檢視日誌檔案。您可以從 Apache Airflow 工作者或排程器日誌群組檢視檔案。

重要事項: 最佳做法是 先使用 Amazon MWAA CLI 公用程式測試 Python 依賴套件和 plugins.zip 檔案,然後再安裝套件或 plugins.zip 檔案。

相關資訊

外掛程式

AWS 官方
AWS 官方已更新 10 個月前