用于覆盖文件的 CodeDeploy 配置

pka*_*mol 5 amazon-web-services aws-code-deploy aws-codepipeline

我正在通过CodeDeploy.logstash 配置在目标实例中进行部署/etc/logstash/

这是 3 阶段的最后一步CodePipeline

但是它失败并显示消息

部署失败,因为此位置已存在指定文件:/etc/logstash/pipelines.yml

如何指示CodeDeploy覆盖文件?

not*_*rby 6

2022 年 3 月更新:以下是有关如何处理文件存在行为的文档:AppSpec“文件”部分

2021 年 7 月更新:看来 AWS 终于承认了这一缺陷 - 请在此处查找所有相关更新。

2020 年 8 月答案:我发现覆盖文件的唯一方法是在创建新部署时选择覆盖或保留,如此处所示。在其他地方您不会看到这些设置。如果我没记错的话,这是唯一的方法,因为 CLI 不支持它。


Sas*_*shi 0

添加覆盖选项的问题已在GitHub上公开 ,并且已经存在很长一段时间了。我通过在 BeforeInstallation 挂钩中添加自定义脚本解决了这个问题,该脚本将在复制新部署之前删除所有现有文件。

这就是我的 appspec.yml 文件的样子

version: 0.0
os: linux
files:
  - source: /
    destination: /path/to/destination
hooks:
  BeforeInstall:
    - location: DeploymentScripts/CleanupScript.sh
  AfterInstall:
    - location: DeploymentScripts/InstallScript.sh
      timeout: 600
  ApplicationStart:
    - location: DeploymentScripts/RestartScript.sh
      timeout: 3600
Run Code Online (Sandbox Code Playgroud)