我想使用平台钩子创建自定义脚本或其他可执行文件以自定义我的 AWS Elastic Beanstalk 环境。我想将它们部署到在该环境中运行的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上。
解决方案
**注意:**早于 Amazon Linux 2 的 Amazon Linux 亚马逊机器映像 (AMI) 平台版本不支持平台钩子。Elastic Beanstalk 自动为 Amazon AL2023 和 Amazon Linux 2 的所有平台钩子脚本授予执行权限。
设置您的 .platform 目录
完成以下步骤:
- 在应用程序捆绑包的根目录中,为应用程序部署平台钩子创建名为 .platform/hooks 的隐藏目录,或为配置部署平台钩子创建名为 .platform/confighooks 的隐藏目录。
- 根据平台钩子文件运行时的实例预调配阶段,必须将钩子文件放在 prebuild(预构建)、predeploy(预部署)或 postdeploy(后部署)子目录中。
有关每个子目录的详细信息,请参阅应用程序部署平台钩子。
- 您的应用程序源捆绑包必须与以下捆绑包类似:
~/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'
有关详细信息,请参阅如何使用 .ebextensions 自定义我的 Elastic Beanstalk 环境?
将平台钩子应用到您的应用程序
完成以下步骤:
- 创建包含上述平台钩子和配置文件的应用程序源捆绑包。
**注意:**文件浏览器可以隐藏以句点开头的文件夹,例如 .platform 和 .ebextensions。要使这些文件夹保持可见,请在创建应用程序源捆绑包时在应用程序捆绑包的根目录中加入这些文件夹。
- 部署更新后的 Elastic Beanstalk 应用程序。