代码之家  ›  专栏  ›  技术社区  ›  balsick

如何通过CloudFormation将Api网关与Step函数集成

  •  1
  • balsick  · 技术社区  · 7 年前

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

    我找不到关于这个的任何文件。我很难找到集成/Uri,应该是

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

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

    非常感谢。

    1 回复  |  直到 7 年前
        1
  •  3
  •   balsick    7 年前

    显然,我不能让RequestTemplates为空,因为它包含关于要调用的状态机的信息。URI本身不包含这些信息,但它只指向状态机API的入口点。

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

    状态机API公开了各种方法。执行Step函数的是“StartExecution”。这样形成的物体必须通过入口点

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

    因此,在云形成中:

    "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]"
                    }
                }]
            }
        }
    }