本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
安裝 Python 相依性
Python 相依性是未包含在 Amazon Managed Workflows for Apache Airflow 環境上 Apache Airflow 版本之 Apache Airflow 基本安裝中的任何套件或分佈。此頁面說明使用 Amazon S3 儲存貯體中的requirements.txt
檔案在 Amazon MWAA環境上安裝 Apache Airflow Python 相依性的步驟。
內容
必要條件
您需要下列項目,才能完成此頁面上的步驟。
-
許可 — AWS 您的管理員必須已授予您環境 A mazonMWAAFullConsoleAccess存取控制政策的存取權。此外,您的執行角色必須允許您的 Amazon MWAA環境,才能存取環境所使用的 AWS 資源。
-
存取:如果您需要存取公有儲存庫,才能直接在 Web 伺服器上安裝相依性,您的環境必須設定為公有網路 Web 伺服器存取。如需詳細資訊,請參閱Apache Airflow 存取模式。
-
Amazon S3 組態 — 用於在 中存放 DAGs、自訂外掛程式
plugins.zip
和 Python 相依性的 Amazon S3 儲存貯體requirements.txt
必須設定為 Public Access Blocked and Versioning Enabled 。
運作方式
在 Amazon 上MWAA,您可以將requirements.txt
檔案上傳到 Amazon S3 儲存貯體,然後在每次更新檔案時,在 Amazon MWAA主控台上指定檔案的版本,以安裝所有 Python 相依性。Amazon pip3 install -r requirements.txt
會MWAA執行 在 Apache Airflow 排程器和每個工作者上安裝 Python 相依性。
若要在環境上執行 Python 相依性,您必須執行下列三項操作:
-
在本機建立
requirements.txt
檔案。 -
將本機 上傳至
requirements.txt
您的 Amazon S3 儲存貯體。 -
在 Amazon MWAA主控台的要求檔案欄位中指定此檔案的版本。
注意
如果這是您第一次建立和上傳 requirements.txt
到 Amazon S3 儲存貯體,您也需要在 Amazon MWAA主控台上指定檔案的路徑。您只需完成此步驟一次。
Python 相依性概觀
您可以從 Python 套件索引 (PyPi.org)、Python 輪子 (.whl
) 或託管在環境中私有 PyPi/PEP-503 合規儲存庫上的 Python 相依性,安裝 Apache Airflow 額外項目和其他 Python 相依性。
Python 相依性位置和大小限制
Apache Airflow 排程器和工作者會尋找requirements.txt
檔案中的套件,且套件會安裝在 的環境。 /usr/local/airflow/.local/bin
-
大小限制 。我們建議
requirements.txt
檔案參考合併大小小於 1 GB 的程式庫。Amazon MWAA需要安裝的程式庫越多,環境的啟動時間就越長。雖然 Amazon MWAA不會明確限制已安裝程式庫的大小,但如果無法在十分鐘內安裝相依性,則 Fargate 服務將會逾時,並嘗試將環境復原至穩定狀態。
建立 requirements.txt 檔案
下列步驟說明我們建議在本機建立 requirements.txt 檔案的步驟。
步驟 1:使用 Amazon MWAACLI公用程式測試 Python 相依性
-
命令列介面 (CLI) 公用程式會在本機複寫 Amazon Managed Workflows for Apache Airflow 環境。
-
會在本機CLI建置類似 Amazon MWAA生產映像的 Docker 容器映像。這可讓您執行本機 Apache Airflow 環境,以在部署至 Amazon 之前開發和測試 、DAGs自訂外掛程式和相依性MWAA。
-
若要執行 CLI,請參閱aws-mwaa-local-runner
上的 GitHub。
步驟 2:建立 requirements.txt
下一節說明如何從requirements.txt
檔案中的 Python 套件索引指定 Python
requirements.txt
上傳至 Amazon S3
您可以使用 Amazon S3 主控台或 AWS Command Line Interface (AWS CLI) 將requirements.txt
檔案上傳至您的 Amazon S3 儲存貯體。
使用 AWS CLI
AWS Command Line Interface (AWS CLI) 是一種開放原始碼工具,可讓您使用命令列 Shell 中的命令與 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 主控台是 Web 型使用者介面,可讓您建立和管理 Amazon S3 儲存貯體中的資源。
使用 Amazon S3 主控台上傳
-
在 Amazon MWAA主控台上開啟環境頁面
。 -
選擇環境。
-
在 S3 窗格中的程式碼中選取 S3 儲存貯體連結,以在 Amazon S3 主控台上開啟儲存貯體。 DAG S3
-
選擇上傳。
-
選擇新增檔案 。
-
選取 的本機複本
requirements.txt
,然後選擇上傳 。
在環境中安裝 Python 相依性
本節說明如何安裝您上傳至 Amazon S3 儲存貯體的相依性,方法是指定 requirements.txt 檔案的路徑,並在每次更新時指定 requirements.txt 檔案的版本。
在 Amazon MWAA主控台requirements.txt
上指定 的路徑 (第一次)
如果這是您第一次建立 並將 上傳requirements.txt
到 Amazon S3 儲存貯體,您也需要在 Amazon MWAA主控台上指定檔案的路徑。您只需完成此步驟一次。
-
在 Amazon MWAA主控台上開啟環境頁面
。 -
選擇環境。
-
選擇編輯。
-
在 DAG Amazon S3 窗格中的程式碼上,選擇需求檔案 - 選用欄位旁的瀏覽 S3。
-
選取 Amazon S3 儲存貯體上的
requirements.txt
檔案。 -
選擇 Choose (選擇)。
-
選擇下一個 ,更新環境 。
您可以在環境完成更新後立即開始使用新套件。
在 Amazon MWAA主控台上指定requirements.txt
版本
每次在 Amazon S3 儲存貯requirements.txt
體中上傳新版本的 時,您需要在 Amazon MWAA主控台上指定requirements.txt
檔案的版本。
-
在 Amazon MWAA主控台上開啟環境頁面
。 -
選擇環境。
-
選擇編輯。
-
在 DAG Amazon S3 窗格中的程式碼上,在下拉式清單中選擇
requirements.txt
版本。 -
選擇下一個 ,更新環境 。
您可以在環境完成更新後立即開始使用新套件。
檢視 的日誌 requirements.txt
您可以檢視排程器排程工作流程和剖析dags
資料夾的 Apache Airflow 日誌。下列步驟說明如何在 Amazon MWAA主控台上開啟排程器的日誌群組,以及在 CloudWatch 日誌主控台上檢視 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))
後續步驟?
-
在本機使用 aws-mwaa-local-runner
上的 DAGs測試您的 、自訂外掛程式和 Python 相依性 GitHub。