指定位置不存在脚本 ||代码部署问题

Script does not exist at specified location || CodeDeploy issue

我正在通过 CodeDeploy 执行示例 powershell 脚本作为部署的一部分。以下是appsec.yml

的内容
version: 0.0
os: windows
files:
  - source: \
    destination: C:\Users\Administrator\testapp
hooks:
  ApplicationStop:
    - location: C:\Users\Administrator\testapp\stop.ps1
      timeout: 300

  BeforeInstall:
    - location: C:\Users\Administrator\testapp\copy.ps1
      timeout: 300

  ApplicationStart:
    - location: C:\Users\Administrator\testapp\start.ps1
      timeout: 300

  ValidateService:
    - location: C:\Users\Administrator\testapp\validate.ps1
      timeout: 300

但是当我开始使用代码部署进行部署时,出现以下错误:

Error code
ScriptMissing
Script name
C:\Users\Administrator\testapp\copy.ps1
Message
Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1
  

当我检查位置 C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive 时,我看到工件是从 S3 存储桶下载的。

工件目录结构:

+ deployment-archive
  + scripts
     - copy.ps1
     - stop.ps1
     - start.ps1
     - validate.ps1
  - appsec.yml

我认为文件没有从部署存档复制到我在 appsec 文件中提到的目标。但为什么它没有被复制,无法理解。 请指导

您的 files 部分完全正确(参见 AppSpec 'files' section),问题出在 hooks 部分的脚本。

在这个官方文档AppSpec 'hooks' section中,它说:

The location of scripts you specify in the 'hooks' section is relative to the root of the application revision bundle.

所以,你需要把绝对路径改成相对路径,比如:

hooks:
  ApplicationStop:
    - location: scripts\stop.ps1
      timeout: 300

你的错误日志也告诉你同样的问题:

Script does not exist at specified location: C:/ProgramData/Amazon/CodeDeploy/85c23e0a-90f5-474e-9675-df3301a3b8f9/d-CODHEXCG5/deployment-archive/C:/Users/Administrator/testapp/copy.ps1