我想要使用平台勾點來自訂 AWS Elastic Beanstalk 環境,以建立自訂指令碼或其他可執行檔。我想要在環境中執行的 Amazon Elastic Compute Cloud (Amazon EC2) 執行個體上進行部署。
簡短描述
您可以使用平台勾點來擴充 Elastic Beanstalk 環境的功能,以執行自訂指令碼和可執行檔。Elastic Beanstalk 還可以在各種執行個體佈建階段執行這些勾點。
**注意:**Amazon Linux AMI 平台版本 (之前的 Amazon Linux 2) 不支援平台勾點。
平台勾點有兩種類型:
- 當您為部署提供新的來源套件組合時,應用程式部署平台勾點會在應用程式部署期間執行。當您進行組態變更,需要終止和重新建立所有環境執行個體時,其也會執行。
- 當您進行僅更新環境執行個體,而不重新建立其組態變更時,組態部署平台勾點會在組態部署期間執行。
解決方案
設定您的 .platform 目錄
1. 在應用程式套件組合的根目錄中,針對應用程式部署和組態部署平台勾點,建立名稱為 ‘.platform/hooks’或 ‘.platform/confighooks’的隱藏目錄。
2. 視乎執行個體佈建階段,必須將勾點檔案放置在下列其中一個子目錄:
- ‘prebuild’
- ‘predeploy’
- ‘postdeploy’
若要識別使用案例所需的子目錄,請參閱擴充 Elastic Beanstalk Linux 平台。
3. 您的應用程式來源套件組合看起來必須類似下列套件組合:
~/workspace/my-application/
|-- .platform
|--hooks
|--prebuild
|-- custom-prebuild-script.sh
|--predeploy
|-- custom-predeploy-script.sh
|--postdeploy
|-- custom-postdeploy-script.sh
|-- .ebextensions
|-- index.php
`-- styles.css
指定勾點檔案
建立勾點檔案時,請記住下列資訊:
- 勾點檔案可以是以 ‘#!’ 開頭的二進位檔案或指令碼檔案,並且包含其解譯器路徑,如 ‘#!/bin/bash’。如需指令碼檔案 (例如 'custom-postdeploy-script.sh) 內容的範例,請參閱下列檔案:
#!/bin/bash
sudo su
cd /var/app/current
echo "Hello from AWS hook" >> 'test.txt'
- 在本機電腦上使用 “chmod +x” 來設定勾點檔案的執行許可。或者,您可以使用 ‘.ebextensions’ 來提供許可。請參閱下列範例檔案:
container_commands:
01_chmod1:
command: "chmod +x .platform/hooks/postdeploy/custom-postdeploy-script.sh"
如需詳細資訊,請參閱如何使用 .ebextensions 來自訂 Elastic Beanstalk 環境?
將平台勾點套用至您的應用程式
1. 建立包含先前平台勾點和組態檔案的應用程式來源套件組合。
**注意:**檔案瀏覽器可以隱藏以句點開頭的資料夾,例如 .platform 和 .ebextensions。若要保持這些資料夾可見,請在建立應用程式來源套件組合時,將這些資料夾包含在應用程式套件組合的根目錄中。
2. 部署更新的 Elastic Beanstalk 應用程式。