如何使用AWS Step函数将路径参数传递到AWS api网关?

bor*_*ode 5 amazon-web-services aws-api-gateway aws-step-functions

在aws步骤函数中,我需要使用先前状态值的路径参数来调用api网关端点。 在此输入图像描述

步骤功能代码(Api网关调用)

"API Gateway Request": {
  "Type": "Task",
  "Resource": "arn:aws:states:::apigateway:invoke",
  "Parameters": {
    "ApiEndpoint": "****.amazonaws.com",
    "Method": "GET",
    "Headers": {
      "Accept": [
        "application/json"
      ]
    },
    "Stage": "dev",
    "Path": "/sample/$.id",
    "AuthType": "IAM_ROLE"
  },
  "InputPath": "$.id",
  "Next": "Lambda Invoke",
  "ResultPath": "$.myStateInput"
}
Run Code Online (Sandbox Code Playgroud)

该状态的输入:

{ "id": "1231" }
Run Code Online (Sandbox Code Playgroud)

它不是将“$.id”替换为“1231”,而是像下面这样调用 url 在此输入图像描述 API网关:

在此输入图像描述

请告诉我做错了什么?

Mar*_*cin 5

根据评论,解决方案是使用内部函数

"Path.$": States.Format('/sample/{}', $.id)
Run Code Online (Sandbox Code Playgroud)

州代码

"API Gateway Request": {
  "Type": "Task",
  "Resource": "arn:aws:states:::apigateway:invoke",
  "Parameters": {
    "ApiEndpoint": "**.amazonaws.com",
    "Method": "GET",
    "Headers": {
      "Accept": [
        "application/json"
      ]
    },
    "Stage": "dev",
    "Path.$": "States.Format('/sample/{}', $.id)",
    "AuthType": "IAM_ROLE"
  },
  "Next": "Lambda Invoke",
  "ResultPath": "$.myStateInput"
}
Run Code Online (Sandbox Code Playgroud)