CodeDeploy 因错误 Errno::ENOEXEC 而失败,并显示消息 Exec 格式错误

CodeDeploy failing with error Errno::ENOEXEC with message Exec format error

我有一个 CodeDeploy,它在 Windows 个实例上部署应用程序。我有一个 Python 脚本,它是 运行 作为 ValidateService 挂钩的一部分。下面是我在该脚本中的代码:

print("hello")

所以,我删除了所有内容,只打印 hello 作为此脚本的一部分。当 CodeDeploy 调用此脚本时,出现以下错误:

我的 appspec.yml 文件:

  ...
  ValidateService:
    - location: scripts/verify_deployment.py
      timeout: 900

我尝试在 Google 上寻求帮助,但一无所获。有人可以帮我吗。

谢谢

正如 Marcin 已经在评论中回答的那样,我认为您不能在 CodeDeploy 中简单地 运行 python 脚本。至少不是原生的。

您看到的错误表示Windows不知道如何执行您提供的脚本。 AFAIK Windows 不能 运行 python 本机(就像大多数 linux 发行版一样)。

我不是很习惯CodeDeploy,但鉴于https://github.com/aws-samples/aws-codedeploy-samples/tree/master/applications/SampleApp_Windows的例子,我认为你必须先安装python。

经过大量调查,我找到了答案。这个问题有点误导,与代码格式或 ENOEXEC 无关。问题是由于 Python 路径。在执行我的脚本时,CodeDeploy 无法找到 Python(虽然我已经在环境变量路径中添加了 python.exe)。

此外,我发现由于Python 路径问题,CodeDeploy 无法执行.py 文件。因此,我创建了一个 PowerShell 脚本并从那里调用 Python 脚本。如下图:

C:\Users\<username>\AppData\Local\Programs\Python\Python37-32\python.exe C:\Users\<username>\Documents\verify_deployment.py

它成功执行了 Python 脚本并给出了以下输出:

hello