如何基于部署组在AWS CodeDeploy中参数化指定应用部署路径?
如何基于AWS CodeDeploy部署组实现参数化部署路径
方法1:利用部署组的环境变量(推荐方案)
AWS CodeDeploy支持为每个部署组配置自定义环境变量,以此实现不同部署组对应不同的部署路径,步骤如下:
为部署组配置环境变量
- 进入AWS CodeDeploy控制台,找到目标应用下的Staging和Production部署组
- 编辑部署组,在「环境变量」模块添加对应变量:
- Staging部署组:
APP_DEPLOY_PATH=/var/www/staging - Production部署组:
APP_DEPLOY_PATH=/var/www/production
- Staging部署组:
修改appspec.yml引用环境变量
将固定的部署路径替换为环境变量引用,CodeDeploy支持用${ENV_VAR_NAME}的格式读取部署组的环境变量:version: 0.0 os: linux files: - source: / destination: ${APP_DEPLOY_PATH} hooks: ApplicationStop: - location: deploy/application-stop.sh runas: root BeforeInstall: - location: deploy/clean-files.sh runas: root AfterInstall: - location: deploy/install_app.sh runas: root ApplicationStart: - location: deploy/application-start.sh runas: root同步修改部署脚本适配变量
如果你的部署脚本(如clean-files.sh、application-start.sh)涉及路径操作,直接引用该环境变量即可,例如rm -rf ${APP_DEPLOY_PATH}/*,让脚本自动适配不同环境。
方法2:部署时传入参数(不推荐)
早期CodeDeploy支持部署时手动传入参数,在appspec.yml中用{{parameterName}}引用,但这种方式需要每次部署手动指定参数,无法自动适配部署组,效率较低,因此不推荐使用。
注意事项
- 确保EC2实例上的CodeDeploy Agent版本不低于1.5.0,否则无法支持环境变量引用
- 部署组的环境变量会自动传递给EC2实例的部署进程,无需额外配置实例系统环境变量
- 确保EC2实例的IAM角色拥有读取部署组环境变量的权限(默认权限已满足,自定义角色时需注意)
内容的提问来源于stack exchange,提问作者Dimitrios Desyllas
相关产品推荐
相关产品推荐

