平台勾點 - AWS Elastic Beanstalk

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

平台勾點

平台勾點經過專門設計,可擴充環境的平台。這些是您部署為應用程式原始碼一部分的自訂指令碼與其他可執行檔,而 Elastic Beanstalk 會在各個執行個體佈建階段期間執行。

注意

Amazon Linux 平台版本 (之前的 Amazon Linux 2) 不支援AMI平台掛鉤。

應用程式部署平台勾點

當您提供用於應用程式部署的新原始碼套件,或是當您進行需要終止和重新建立所有環境執行個體的組態變更時,就會發生應用程式部署

若要提供在應用程式部署期間執行的平台勾點,請將檔案放在原始碼套件中的 .platform/hooks 目錄下,位於下列其中一個子目錄中。

  • prebuild – 此處的檔案會在 Elastic Beanstalk 平台引擎下載並擷取應用程式原始碼套件後執行,以及在完成本身設定並設定應用程式和 Web 伺服器前執行。

    prebuild 檔案會在執行任何組態檔案的 commands 區段中所發現的命令後執行,以及在執行 Buildfile 命令前執行。

  • predeploy – 此處的檔案會在 Elastic Beanstalk 平台引擎設定並設定應用程式和 Web 伺服器後執行,以及在將其部署至其最終執行時間位置前執行。

    predeploy 檔案會在執行任何組態檔案的 container_commands 區段中所發現的命令後執行,以及在執行 Procfile 命令前執行。

  • postdeploy – 此處的檔案會在 Elastic Beanstalk 平台引擎部署應用程式和代理伺服器後執行。

    這是最後一個部署工作流程步驟。

組態部署平台勾點

當您進行只更新環境執行個體而不重新建立組態變更時,就會發生組態部署。下列選項更新會造成組態更新。

要提供在組態部署期間執行的勾點,請將它們放置在原始碼套件中的 .platform/confighooks 目錄下。與應用程式部署勾點相同的三個子目錄也適用。

更多關於平台勾點

可執行檔可以是二進位檔案,或開頭為 #! 行且包含其解譯器路徑 (例如 #!/bin/bash) 的指令碼檔案。所有檔案都必須有執行許可。使用 chmod +x 在勾點檔案上設定執行權限。對於在 2022 年 4 月 29 日或之後發佈的所有以 Amazon Linux 2023 和 Amazon Linux 2 為基礎的平台版本,Elastic Beanstalk 會自動授予執行許可給所有平台勾點指令碼。在此情況下,您不需要手動授予執行許可。如需這些平台版本的清單請參閱《AWS Elastic Beanstalk 版本說明指南

Elastic Beanstalk 會依照檔案名稱的辭典編纂方式排序,在這些目錄中逐一執行檔案。所有檔案都會以 root 使用者身分執行。平台勾點的目前工作目錄 (cwd) 為應用程式的根目錄。若是 prebuildpredeploy 檔案,這是應用程式暫存目錄,而若是 postdeploy 檔案,則是目前的應用程式目錄。如果其中一個檔案失敗 (以非零結束代碼結束),部署則會中止及失敗。

如果平台掛接文字指令碼包含 Windows 歸位字元/換行字元 (CRLF) 換行字元,可能會失敗。如果文件被保存在 Windows 主機上,然後傳輸到 Linux 服務器,它可能包含 Windows 換CRLF行符。對於 2022 年 12 月 29 日或之後發行的平台,Elastic Beanstalk 會自動將 Windows CRLF 字元轉換為平台掛接文字檔中的 Linux 換行符 (LF) 換行字元。如果您的應用程式在此日期之前發行的任何 Amazon Linux 2 平台上執行,則需要將 Windows CRLF 字元轉換為 Linux LF 字元。完成此操作的一種方法是在 Linux 主機上建立並保存程式碼檔案。也可以在網際網路上找到轉換這些字元的工具。

執行的檔案可存取您已在應用程式選項中定義的所有環境屬性,並可存取 HOMEPATHPORT 這些系統環境變數。

若要將環境變數和其他組態選項的值擷取至您的平台勾點指令碼中,您可以使用在環境執行個體上 Elastic Beanstalk 提供的 get-config 公用程式。如需詳細資訊,請參閱 適用於 Elastic Beanstalk 環境的平台腳本工具