amazon-web-servicesaws-step-functionsget-requestaws-api-gateway

Can we use GET method in api-gateway to invoke step function?


I am invoking step function from api-gateway. For POST request it is working fine. Can I use GET request as well? as we we have to pass state-machine ARN in body or mapping template. Is there any work around? Below is my cloud formation template:

"paths": {
    "/individual": {
        "get": {
            "operationId": "GET HTTP",
            "responses": {
                "200": {
                    "description": "200 response"
                }
            },
            "x-amazon-apigateway-integration": {
                "type": "AWS",
                "httpMethod": "GET",
                "uri": "arn:aws:apigateway:eu-west-1:states:action/StartExecution",
                "credentials": {
                    "Fn::GetAtt": [
                        "apiGatewayIamRoleGet",
                        "Arn"
                    ]
                },
                "requestTemplates": {
                    "application/json": {
                        "Fn::Sub": [
                            "#set($body= $input.json('$'))\n    #set($inputRoot='{ \"inputData\" :'+$body+',\"apiInfo\":{\"httpMethod\" :\"'+ $context.httpMethod+'\",\"apiKey\" :\"'+ $context.identity.apiKey+'\"}}')\n    #set($apiData=$util.escapeJavaScript($inputRoot))\n    #set($apiData=$apiData.replaceAll(\"\\'\",\"'\"))\n    {\n      \"input\" :\"$apiData\",\n      \"stateMachineArn\": \"${StepFunctionArn}\"  \n    }",
                            {
                                "StepFunctionArn": {
                                    "Ref": "StepFunctionGet"
                                }
                            }
                        ]
                    }
                },
                "payloadFormatVersion": 1.0,
                "responses": {
                    "default": {
                        "statusCode": "200"
                    }
                }
            }
        }
    }
}

Solution

  • I have sorted out the issue. httpMethod in api-gateway integration needs to be POST I used GET there which causing error.