如何通过CloudFormation模板在CodeDeploy中配置内容覆盖功能
解决方案
1. CloudFormation模板修改(添加内容覆盖功能)
在Deployment属性下新增FileExistsBehavior: OVERWRITE配置即可对应控制台的「Overwrite the content」功能,指定目标路径文件已存在时直接覆盖,无需人工删除。修改后完整模板段如下:
Group: Type: AWS::CodeDeploy::DeploymentGroup Properties: ApplicationName: !ImportValue DeployName Deployment: IgnoreApplicationStopFailures: true Description: 'Code Deploy to Train' FileExistsBehavior: OVERWRITE # 新增的内容覆盖配置 Revision: RevisionType: S3 S3Location: Bucket: '<sample>' BundleType: 'zip' Key: '<test>.zip' Ec2TagFilters: - Key: 'Type' Value: 'Train' Type: 'KEY_AND_VALUE' ServiceRoleArn: !GetAtt [PipeRole, Arn]
2. 配套报错修复
2.1 「文件已存在」报错根因修复
你当前app_stop.sh中删除/opt/codedeploy-agent/deployment-root/*的操作会破坏CodeDeploy代理的本地部署状态记录,是即使提前删除目标文件夹仍报错的核心原因,必须移除该路径的删除逻辑。
2.2 「app_stop.sh执行失败」报错修复
脚本判断逻辑存在兼容性问题,且root用户运行时无需额外加sudo,修改后脚本如下:
if [ -d /var/www/html/scripts ]; then rm -Rf /var/www/html/* fi if systemctl is-active --quiet httpd; then systemctl stop httpd fi
内容的提问来源于stack exchange,提问作者Shourya Sharma
相关产品推荐
相关产品推荐

