Не удалось вызвать пошаговую функцию с использованием бессерверной платформы («stepf» не является допустимой подкомандой) - PullRequest
0 голосов
/ 14 июля 2020

После установки плагина бессерверной пошаговой функции

npm install -g serverless
npm install -g serverless-step-functions

... и успешно развернуть пошаговую функцию через

serverless deploy

... Затем я пытаюсь запустить: serverless invoke stepf

serverless invoke stepf --name ${sf} --data '${OUTPUT}' 

  Serverless Error ---------------------------------------
 
  "stepf" is not a valid sub command. Run "serverless invoke" to see a more helpful error message for this command.

... И я получаю «stepf» не является допустимой подкомандой

Почему нельзя использовать функциональность плагина serverless-step-functions для вызова пошаговой функции?

Команда invoke описана на странице serverless-step-functions git -hub: https://github.com/serverless-operations/serverless-step-functions#invoke

Используемая версия плагина serverless-step-functions - 2.21.1

Edit

Важная информация: команда invoke была выполняется из папки, в которой не было файла serverless.yml

1 Ответ

0 голосов
/ 15 июля 2020

Команда invoke была выполнена из каталога, в котором не было файла serverless.yml.

Добавление этого минимального файла yaml активировало плагин

service: some-step-function
provider:
  name: aws
  region: eu-north-1
  runtime: java11
  timeout: 30

plugins:
  - serverless-step-functions

Но для запуска:

serverless invoke stepf --name ${sf} --data '${input}' 

... параметр name в invoke должен быть именем, описанным в файле serverless.yml.

В приведенном ниже примере правильным значением параметра name является aStateMachine. Сначала я сделал неисправленное предположение, что имя было таким же, как параметр имени в конечном автомате.

service: some-step-function
provider:
  name: aws
  region: eu-north-1
  runtime: java11
  timeout: 30

...

stepFunctions:
  stateMachines:
    aStateMachine:
      name: thisIsNotTheName

plugins:
  - serverless-step-functions

Забавно, что вы находитесь в том же каталоге, что и указанный выше файл serverless.yml. Рабочий вызов пошаговой функции может выглядеть примерно так:

serverless invoke stepf --name aStateMachine --data '{}' 

В приведенном выше примере объясняется сообщение об ошибке в вопросе. Однако гораздо удобнее создать решение, в котором команда invoke выполняется из каталога, в котором находится файл serverless.yml.

...