

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

# 平台勾點
<a name="platforms-linux-extend.hooks"></a>

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

**注意**  
Amazon Linux AMI 平台版本 (前述的 Amazon Linux 2) 不支援平台勾點。

## 應用程式部署平台勾點
<a name="platforms-linux-extend.hooks.appdeploy"></a>

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

若要提供在應用程式部署期間執行的平台勾點，請將檔案放在原始碼套件中的 `.platform/hooks` 目錄下，位於下列其中一個子目錄中。
+ `prebuild` – 此處的檔案會在 Elastic Beanstalk 平台引擎下載並擷取應用程式原始碼套件後執行，以及在完成本身設定並設定應用程式和 Web 伺服器前執行。

  `prebuild` 檔案會在執行任何組態檔案的 [commands](customize-containers-ec2.md#linux-commands) 區段中所發現的命令後執行，以及在執行 `Buildfile` 命令前執行。
+ `predeploy` – 此處的檔案會在 Elastic Beanstalk 平台引擎設定並設定應用程式和 Web 伺服器後執行，以及在將其部署至其最終執行時間位置前執行。

  `predeploy` 檔案會在執行任何組態檔案的 [container\$1commands](customize-containers-ec2.md#linux-container-commands) 區段中所發現的命令後執行，以及在執行 `Procfile` 命令前執行。
+ `postdeploy` – 此處的檔案會在 Elastic Beanstalk 平台引擎部署應用程式和代理伺服器後執行。

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

## 組態部署平台勾點
<a name="platforms-linux-extend.hooks.configdeploy"></a>

當您進行只更新環境執行個體而不重新建立組態變更時，就會發生*組態部署*。下列選項更新會造成組態更新。
+ [環境屬性和平台特定設定](environments-cfg-softwaresettings.md)
+ [靜態檔案](environment-cfg-staticfiles.md)
+ [AWS X-Ray 協助程式](environment-configuration-debugging.md)
+ [日誌儲存與串流](environments-cfg-logging.md)
+ 應用程式連接埠 （如需詳細資訊，請參閱 [反向代理組態](platforms-linux-extend.proxy.md))

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

## 更多關於平台勾點
<a name="platforms-linux-extend.hooks.more"></a>

可執行檔可以是二進位檔案，或開頭為 `#!` 行且包含其解譯器路徑 (例如 `#!/bin/bash`) 的指令碼檔案。所有檔案都必須有執行許可。使用 `chmod +x` 在勾點檔案上設定執行權限。對於在 2022 年 4 月 29 日或之後發佈的所有以 Amazon Linux 2023 和 Amazon Linux 2 為基礎的平台版本，Elastic Beanstalk 會自動授予執行許可給所有平台勾點指令碼。在此情況下，您不需要手動授予執行許可。如需這些平台版本的清單，請參閱 *AWS Elastic Beanstalk 版本備註指南*中的 [2022 年 4 月 29 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-04-29-linux.html#release-2022-04-29-linux.platforms) Linux 平台版本備註。

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

如果平台勾點文字指令碼含有 Windows *回車/換行* (CRLF) 換行符字元，則可能會失敗。如果檔案儲存在 Windows 主機中，然後傳輸到 Linux 伺服器，就可能包含 Windows CRLF 換行符。對於在 [2022 年 12 月 29 日](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2022-12-29-linux.html)或之後發佈的平台，Elastic Beanstalk 會自動將平台勾點文字檔案中的 Windows CRLF 字元轉換為 Linux *換行* (LF) 換行符字元。如果您的應用程式在此日期之前發佈的任何 Amazon Linux 2 平台上執行，則您需要將 Windows CRLF 字元轉換為 Linux LF 字元。完成此操作的一種方法是在 Linux 主機上建立並保存程式碼檔案。也可以在網際網路上找到轉換這些字元的工具。

執行的檔案可存取您已在應用程式選項中定義的所有環境屬性，並可存取 `HOME`、`PATH` 和 `PORT` 這些系統環境變數。

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