如何使用平台挂钩自定义我的 Elastic Beanstalk 环境?
上次更新日期:2023 年 1 月 24 日
我想使用平台挂钩自定义我的 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"
将平台挂钩应用于您的应用程序
注意:文件浏览器可以隐藏以句点开头的文件夹,例如 .platform 和 .ebextensions。要确保这些文件夹可见,请在创建应用程序源包时在应用程序包的根目录中包括这些文件夹。