如何使用平台挂钩自定义我的 Elastic Beanstalk 环境?

如何使用平台挂钩自定义我的 Elastic Beanstalk 环境?

我想使用平台挂钩自定义我的 Amazon Elastic Beanstalk 环境,以创建自定义脚本或其他可执行文件。我想将它们部署在该环境中运行的 Amazon Elastic Compute Cloud (Amazon EC2) 实例上。
如何使用平台挂钩自定义我的 Elastic Beanstalk 环境? 2023-08-25 07:40:31
如何使用平台挂钩自定义我的 Elastic Beanstalk 环境? 0
如何使用平台挂钩自定义我的 Elastic Beanstalk 环境?
## 简短描述 您可以使用平台挂钩扩展 Elastic Beanstalk 环境的功能,以运行自定义脚本和可执行文件。Elastic Beanstalk 还可以在不同的实例配置阶段运行这些挂钩。 **注意**:Amazon Linux AMI 平台版本(**Amazon Linux 2** 之前的版本)不支持平台挂钩。 平台挂钩有两种类型: * 当您提供新的源包进行部署时,**应用程序部署平台挂钩**会在应用程序部署期间运行。当您进行需要终止和重新创建所有环境实例的配置更改时,它们也会运行。 * 当您进行仅更新环境实例而不重新创建环境实例的配置更改时,**配置部署平台挂钩**会在配置部署期间运行。 ## 解决方法 ### 设置您的 .platform 目录 1.    在应用程序包的根目录中,分别为应用程序部署和配置部署平台挂钩创建名为“**.platform/hooks**”或“**.platform/confighooks**”的隐藏目录。 2.    根据运行时的实例配置阶段,您必须将挂钩文件放在以下子目录之一: * “**prebuild**” * “**predeploy**” * “**postdeploy**” 要确定您的用例所需的子目录,请参阅[扩展 Elastic Beanstalk Linux 平台](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/platforms-linux-extend.html?trk=cndc-detail)。 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 环境?](https://repost.aws/zh-Hans/knowledge-center/elastic-beanstalk-configuration-files?trk=cndc-detail) ### 将平台挂钩应用于您的应用程序 1.    [创建包含前述平台挂钩和配置文件的应用程序源包](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/applications-sourcebundle.html?trk=cndc-detail)。 **注意**:文件浏览器可以隐藏以句点开头的文件夹,例如 **.platform** 和 **.ebextensions**。要确保这些文件夹可见,请在创建应用程序源包时在应用程序包的根目录中包括这些文件夹。 2.    [部署已更新的 Elastic Beanstalk 应用程序](https://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.deploy-existing-version.html?trk=cndc-detail)。