1

安装 serverless step 功能插件后

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

...并通过成功部署 step 功能

serverless deploy

...然后我尝试运行:无服务器调用 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 插件中的功能来调用 step 函数?

在 serverless-step-functions git-hub 页面上描述了调用命令: https ://github.com/serverless-operations/serverless-step-functions#invoke

插件 serverless-step-functions 使用的版本是 2.21.1

编辑

一条重要信息是调用命令是从不包含 serverless.yml 文件的文件夹中执行的

4

1 回答 1

2

调用命令是从没有 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}' 

... invoke 中的 name 参数必须是 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 文件位于同一目录中。对 step 函数的有效调用可能类似于:

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

上面的例子解释了问题中的错误信息。然而,构建一个解决方案要方便得多,在该解决方案中,从您拥有 serverless.yml 文件的目录执行调用命令。

于 2020-07-15T11:35:48.440 回答