Добавьте исполняемый файл в Windows PATH из .ebextensions и затем вызовите исполняемый файл в следующей команде - PullRequest
1 голос
/ 26 марта 2019

У меня есть экземпляр Windows Elastic Beanstalk. У меня есть commands.config в моем проекте .ebextensions

commands:
  00-install-choco:
    command: |
        powershell -NoProfile -ExecutionPolicy Bypass -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))"
  01-set-choco-path:
    command: |
        SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin

Эти две команды работают. Тем не менее, у меня также есть файл container-commands.config, который должен вызывать choco, но он продолжает отказывать из-за 'choco' is not recognized as an internal or external command

container_commands:
  01-install nssm:
    command: |
        choco install nssm -y

Как получить последующие команды для получения обновленного PATH? Есть ли более подходящий подход к установке двоичных файлов и установке для них значения PATH в Windows при создании экземпляра ESB?

Я пытался следовать https://aws.amazon.com/blogs/developer/using-nuget-and-chocolatey-package-managers-in-aws-cloudformation-and-aws-elastic-beanstalk/

files:
  c:/tools/ewmp.cmd:
    content: |
      @ECHO OFF
      FOR /F "tokens=3,*" %%a IN ('REG QUERY "HKLMSystemCurrentControlSetControlSession ManagerEnvironment" /v PATH') DO PATH %%a%%b
      %*
commands:
  01-install-choco:
    command: powershell -NoProfile -ExecutionPolicy unrestricted -Command "Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
    waitAfterCompletion: 0
  02-install-nssm:
    command: c:/tools/ewmp choco install nssm -y
    waitAfterCompletion: 0

Но даже это дает мне похожие ошибки.

-----------------------Command Output-----------------------
ERROR: Invalid key name.
Type "REG QUERY /?" for usage.
'choco' is not recognized as an internal or external command,
operable program or batch file.
------------------------------------------------------------

1 Ответ

1 голос
/ 27 марта 2019

Я не пользователь Elastic Beanstalk, поэтому я не могу сказать, будет ли это работать или нет, но в соответствии с документацией необходимо предоставить дополнительную команду для обновления переменной PATH что используется:

Установщик Chocolatey и устанавливаемые им пакеты могут изменять переменную среды PATH на компьютере. Это добавляет сложности, поскольку последующие команды после этих установок выполняются в том же сеансе, который не имеет обновленного PATH. Чтобы преодолеть это, мы используем командный файл, чтобы установить PATH сеанса на тот, который указан на машине, прежде чем он выполнит нашу команду.

files:
  c:/tools/ewmp.cmd:
    content: |
      @ECHO OFF
      FOR /F "tokens=3,*" %%a IN ('REG QUERY "HKLMSystemCurrentControlSetControlSession ManagerEnvironment" /v PATH') DO PATH %%a%%b
      %*
commands:
  00-install-choco:
    command: powershell -NoProfile -ExecutionPolicy unrestricted -Command "Invoke-Expression ((New-Object Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))"
container_commands:
  01-install nssm:
    command: |
      c:toolsewmp choco install nssm -y

ПРИМЕЧАНИЕ: Единственное, что мне неясно, основываясь на документации, это использование c:toolsewmp вместо c:/tools/ewmp в разделе команд. Я не знаю, является ли это проблемой в коде, отображаемом в браузере в документации, или это намеренно. Возможно, вам придется поиграть с этим, чтобы увидеть, что работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...