【问题标题】:CodeDeploy failing with error Errno::ENOEXEC with message Exec format errorCodeDeploy 失败并出现错误 Errno::ENOEXEC 并显示消息 Exec 格式错误
【发布时间】:2021-11-12 00:56:04
【问题描述】:

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

print("hello")

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

我的appspec.yml 文件:

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

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

谢谢

【问题讨论】:

  • 你的appspec.yml 是什么?你用的是什么实例? Ubuntu?
  • 这是一个 Windows 实例。
  • 请在问题中分享您的 appspec.yml 文件。至少,配置 ValidateService 挂钩的部分。
  • @OluwafemiSule 我已经添加了,请看一下。谢谢。
  • 您在哪里发现可以在 CodeDeploy 中使用 python 脚本verify_deployment.py

标签: python amazon-web-services aws-code-deploy


【解决方案1】:

经过这么多的调查,我找到了答案。这个问题有点误导,与代码格式或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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    • 我找不到任何明确声明它只使用 shell 的文档,但上面的示例中隐含了它,并在此处解释了如何运行其他脚本:docs.aws.amazon.com/codedeploy/latest/userguide/…
    • @thetillhoff 我已经在服务器上安装了 Python,并且我也在环境路径中设置了 Python。
    • @GeoffreyBurdett 你是对的。该文档说“只要实例上运行的操作系统支持它,您就可以运行任何类型的脚本”并且我已经安装了 Python,所以它应该对我有用。
    猜你喜欢
    • 1970-01-01
    • 2020-12-22
    • 2019-11-01
    • 2012-11-26
    • 2015-02-02
    • 1970-01-01
    • 2021-07-31
    • 1970-01-01
    • 2015-03-17
    相关资源
    最近更新 更多