I'd like to call lambda function using a state machine with passing path and method (as in usual HTTP sense). Current serverless template to achieve that is the following:
functions:
myfunction:
handler: bin/myfunction
events:
- http:
path: setup
method: POST
stepFunctions:
validate: true
stateMachines:
myMachine:
name: myMachine
definition:
StartAt: Setup
States:
Setup:
Type: Task
Resource:
Fn::GetAtt: [myfunction, Arn]
Parameters:
InvocationType: Event
Payload:
path: "/setup"
httpMethod: "POST"
body: ""
End: true
However, the actual call that arrives to myfunction is a GET request with path /. Fields that I used as a payload are from lambda:InvokeFunction API where one can set body, path and httpMethod as a json in Payload property of lambda.InvokeInput and get everything called correctly.
How to replicate the same with my example?
CodePudding user response:
path and httpMethod are for invoking an API Gateway route, not a Lambda function.
A Lambda function invocation (mostly) takes a function name, invocation type & a payload.
If you must go via API Gateway, take a look at the official 'Call API Gateway with Step Functions' guide on how to do this otherwise just invoke your Lambda manually.
