Данные пользователей AWS не работают в Windows server 2019

#node.js #amazon-web-services #amazon-ec2 #amazon-cloudformation #pm2

Вопрос:

Текущая настройка:

Вручную запустил экземпляр Windows server 2019 с приложением nodes в AWS. Приведенные ниже команды отлично работают с этим экземпляром

 Pm2 delete myapp
Pm2 start
 

Вопрос :

Мы создали AMI вышеупомянутого экземпляра и запустили его с шаблоном cloudformation. В данных пользователя шаблона cloudformation мы внесли некоторые изменения в конфигурационный файл nodejs и перезапустили приложение nodes с помощью вышеуказанных команд.

Выход:

файл конфигурации успешно изменен с помощью данных пользователя cloduformation

Ошибка:

Вышеуказанные команды (Pm2 удалить myapp и Pm2 запустить) не удалось выполнить данные пользователя. ниже приведен журнал данных пользователя.

 The errors from user scripts: pm2 : The term 'pm2' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:WindowsTEMPUserScript.ps1:15 char:1
  pm2 delete RenderWorker
  ~~~
      CategoryInfo          : ObjectNotFound: (pm2:String) [], CommandNotFoundException
      FullyQualifiedErrorId : CommandNotFoundException
 
pm2 : The term 'pm2' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the 
spelling of the name, or if a path was included, verify that the path is correct and try again.
At C:WindowsTEMPUserScript.ps1:16 char:1
  pm2 start
  ~~~
      CategoryInfo          : ObjectNotFound: (pm2:String) [], CommandNotFoundException
      FullyQualifiedErrorId : CommandNotFoundException
 

Другие выводы:

Команда Pm2 доступна для недавно запущенного экземпляра ec2.

 C:UsersAdministrator>pm2
usage: pm2 [options] <command>

pm2 -h, --help             all available commands and options
pm2 examples               display pm2 usage examples
pm2 <command> -h           help on a specific command

Access pm2 files in ~/.pm2
 

Данные пользователя в облачном подтверждении:

  UserData:
    Fn::Base64: !Sub |
      <powershell>
      $config = '{
      "MyENV": "${MyENV}",
      "UR1L": "${URL1}",
      "URL2": "${URL2}",
      "BUCKET": "${MyBucket}",
      "PATH": "${Mypath}"
      }'
      echo $config
      $config | Set-Content C:Projectsmyappsettingsconfig.json
      cd 'C:Projectsmyapp'
      pm2 delete RenderWorker
      pm2 start
      </powershell>
      <runAsLocalSystem>true</runAsLocalSystem>
      <persist>true</persist>
 

Ответ №1:

Я сомневаюсь, что вы можете работать pm2 напрямую так, потому что путь к pm2 не существует в СИСТЕМНОМ пути.

Вероятно, вам потребуется указать полный путь к нему следующим образом, чтобы выполнить команду.

Например, вы pm2 проживаете в разделе C:etc , в котором вам нужно указать следующее:

 C:etc.pm2 delete RenderWorker
C:etc.pm2 start
 

или, если вы знакомы с путем, вы можете сделать его переменной среды.

Комментарии:

1. это из-за того, что мой .pm2 находится в каталоге администратора . C:UsersAdministrator.pm2 ?