#python #amazon-web-services #aws-code-deploy
Вопрос:
У меня есть CodeDeploy, который развертывает приложение в экземплярах Windows. У меня есть скрипт на Python, который выполняется как часть ValidateService
крючков. Ниже приведен код, который у меня есть в этом скрипте:
print("hello")
Итак, я удалил все и просто распечатал hello
как часть этого сценария. Когда этот скрипт вызывается CodeDeploy, я получаю ошибку ниже:
Мое appspec.yml
досье:
...
ValidateService:
- location: scripts/verify_deployment.py
timeout: 900
Я попытался получить некоторую помощь в Google, но ничего не получил. Может кто-нибудь, пожалуйста, помочь мне здесь.
Спасибо
Комментарии:
1. Что у
appspec.yml
тебя такое ? Какие экземпляры вы используете? Ubuntu?2. Это экземпляр Windows.
3. Пожалуйста, поделитесь своим файлом appspec.yml в вопросе. По крайней мере, те части, в которых вы настраиваете крючок службы проверки подлинности.
4. @OluwafemiSule Я добавил сейчас, пожалуйста, посмотрите. Спасибо.
5. Где вы обнаружили, что вы можете использовать скрипты python
verify_deployment.py
в CodeDeploy?
Ответ №1:
Как уже ответил Маркин в комментарии, я не думаю, что вы можете просто запускать скрипты python в CodeDeploy. По крайней мере, не по происхождению.
Ошибка, которую вы видите, означает, что Windows не знает, как выполнить предоставленный вами сценарий. AFAIK Windows не может запускать python изначально (как и большинство дистрибутивов Linux).
Я не очень привык к развертыванию кода, но, учитывая пример на https://github.com/aws-samples/aws-codedeploy-samples/tree/master/applications/SampleApp_Windows, Я думаю, что сначала вам нужно установить python.
Комментарии:
1. Я не могу найти никакой документации, в которой прямо указано, что она использует только оболочку, но это подразумевается в приведенных выше примерах, и здесь объясняется, как запускать другие сценарии: docs.aws.amazon.com/codedeploy/latest/userguide/…
2. @thetillhoff У меня уже установлен Python на серверах, и я также установил Python в путь к среде.
3. @GeoffreyBurdett вы правы. В документе говорится: «Вы можете запускать сценарии любого типа, если они поддерживаются операционной системой, работающей на экземплярах», и у меня установлен Python, так что он должен был работать на меня.
Ответ №2:
После стольких исследований я нашел свой ответ. Проблема немного вводит в заблуждение, она не имеет ничего общего с форматом кода или ENOEXEC. Проблема была связана с путем Python. Во время выполнения моего сценария CodeDeploy не смог найти Python (хотя я уже добавил python.exe в переменной окружения path).
Кроме того, я обнаружил, что CodeDeploy не может выполнить файл .py из-за проблемы с путем Python. Итак, я создал скрипт PowerShell и оттуда вызвал скрипт Python. Как показано ниже:
C:Users<username>AppDataLocalProgramsPythonPython37-32python.exe C:Users<username>Documentsverify_deployment.py
Он успешно выполнил скрипт Python и выдал мне результат ниже:
hello