参考文档,
- http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/custom-platform-hooks.html
- http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/customize-containers-ec2.html
假设我有 .ebextension/03_hooks.config,其中有
commands:
create_app_deploy_post_dir:
command: "mkdir -p /opt/elasticbeanstalk/hooks/appdeploy/post"
ignoreErrors: true
files:
"/opt/elasticbeanstalk/hooks/appdeploy/post/99-post-deploy-test.sh":
mode: "000755"
owner: root
group: root
content: |
#!/usr/bin/env bash
eventHelper.py --msg "Successfully executing post deployment hook." --severity INFO
该文件不会在第一次部署时创建和执行,即在环境创建或自动扩展期间添加 EC2 实例时。新实例几乎毫无用处,只有在下一次强制重新部署应用程序或eb deploy
从应用程序版本部署 zip 时才有用。
观察
- 检查文件是否在新添加的 EC2 实例中创建,结果没有。
commands
当我检查 eb 日志时,指令中给出的命令也没有执行。- 这让我感觉这两个指令在新添加的实例中第一次部署时被忽略了。
实际用例:我有钩子脚本,用于在 appdeploy enack 和 post 上编写和启动/重新启动 nginx 和 uwsgi。因此,如果它们不在新实例上执行,则在下一次部署之前会间歇性地返回 502。