如何通过CloudFormation,Api Gateway与Step Functions进行集成

时间:2018-03-08 14:13:36

标签: amazon-web-services aws-api-gateway amazon-cloudformation aws-step-functions

我正在为我正在开发的平台创建CloudFormation模板。我需要集成Api网关和步骤功能,以通过调用Api网关方法来执行我的一个步骤功能。

我没有找到任何关于此的文件。我很难找到Integration / Uri,应该是

arn:aws:apigateway:${region}:states:action/StartExecution

但现在我不确定在RequestTemplates中写什么。我想我实际上可以把它留空,让它像代理一样,但如果你能给我任何进一步的信息我真的很感激。

谢谢

1 个答案:

答案 0 :(得分:1)

显然我无法将RequestTemplates留空,因为它包含有关调用StateMachine的信息。 URI本身并不包含该信息,但它只指向State Machine API的入口点。

正确的方法来自this documentation's page

State Machine API公开了各种方法。执行步骤功能的是" StartExecution"。对于那个入口点,必须传递这样形成的物体

{
"input": "string",
"name": "string",
"stateMachineArn": "string"
}

所以,在Cloud Formation中:

"Integration": {
    "Type": "AWS",
    "IntegrationHttpMethod": "POST",
    "Uri": {
        "Fn::Join": ["",
            ["arn:aws:apigateway:",
            {
            "Ref": "AWS::Region"
            },
            ":states:action/StartExecution"]]
        },
    "RequestTemplates": {
        "application/json": {
            "Fn::Sub": ["{\"input\": \"$util.escapeJavaScript($input.json('$'))\",\"stateMachineArn\": \"${arn}\"}",
            {
            "arn": {
                "Ref": "[StepMachineResourceName]"
                }
            }]
        }
    }
}