无法使用无服务器框架调用步骤功能("stepf" 不是有效的子命令)

Fail to invoke step function using serverless framework ("stepf" is not a valid sub command)

serverless步骤功能插件安装完成后

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

...并通过

成功部署step函数
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 插件中的功能来调用步骤函数?

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

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

编辑

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

调用命令是从没有 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。我先做了未修正的假设,name与状态机下的name参数相同

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 '{}' 

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