如何使用API​​ Gateway POST请求以及该步骤的请求的JSON有效负载来调用AWS Step Function?

最佳答案

1.创建您的步进功能

很明显。我想如果您正在阅读本文,您就会知道该怎么做。

否则,您可以在这里查看文档:What is AWS Step Functions?

2.为您的API创建IAM角色

它既可以用于所有步骤功能,也可以仅用于此功能。我们将仅讨论第一种情况,如Amazon教程Creating an API Using API Gateway中所述。



3.设定

3.a如果没有JSON负载

如Ka Hou Ieong在How can i call AWS Step Functions by API Gateway?中所述,您可以通过API Gateway Console创建AWS Service集成,如下所示:

  • 集成类型: AWS服务
  • AWS服务:步骤功能
  • HTTP方法: POST
  • 操作类型:使用操作名称
  • 操作: StartExecution
  • 执行角色:角色,开始执行(我们刚刚创建的角色。只需将其粘贴为ARN)
  • header :

    X-Amz-Target->'AWSStepFunctions.StartExecution'
    内容类型->'application/x-amz-json-1.0'
  • body 映射模板/请求有效载荷:
    {
        "input": "string" (optional),
        "name": "string" (optional),
        "stateMachineArn": "string"
    }
    


  • 3.b如果您确实有要传递的JSON有效负载作为输入

    除了主体映射模板之外,其他所有内容均与2.a中的相同。您要做的就是将其制成字符串。例如,使用$ util.escapeJavascript()。它将整个请求的内容作为步函数的输入传递
        #set($data = $util.escapeJavaScript($input.json('$')))
        {
            "input": "$data",
            "name": "string" (optional),
            "stateMachineArn": "string" (required)
        }
    

    笔记
  • stateMachineArn:如果您不想将stateMachineArn作为对API网关的请求的一部分进行传递,则只需将其硬编码在人体映射模板中即可(请参见AWS API Gateway with Step Function)
  • name:省略name属性将使API Gateway在每次执行时为您生成不同的名称。

  • 现在,这是我的第一个“回答您自己的问题”,所以也许这不是怎么做的,但是我确实花了很多时间试图了解我的映射模板出了什么问题。希望这将有助于节省其他人的头发和时间。

    关于amazon-web-services - 如何使用API​​网关调用AWS Step Function,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42914487/

    10-11 10:20