VTL 映射模板将编码表单数据转换为 AWS Step Function 的 JSON 对象

问题描述 投票:0回答:1

如何将通过

POST
请求传入 API 网关的 application/x-www-form-urlencoded 数据转换为
JSON
对象,以便您可以将所述对象发送到
Step Functions
,而无需先发送到 Lambda 进行预处理。

(答案包含在下面)

aws-api-gateway aws-step-functions vtl x-www-form-urlencoded
1个回答
0
投票
  1. 在 API 内,转到集成请求 > 编辑集成请求
  2. 向下滚动到映射模板
  3. 将内容类型设置为
    application/x-www-form-urlencoded
  4. 在下面粘贴以下映射模板,请务必适当更新 Step Function ARN,并确保您的 IAM 角色具有
    StartExecution/StartSyncExecution
  5. 的有效权限

映射模板:

#set($data = "")

#foreach( $token in $input.path('$').split('&') )
#set( $keyVal = $token.split('=') )
#set( $keyValSize = $keyVal.size() )
#if( $keyValSize >= 1 )
    #set( $key = $util.urlDecode($keyVal[0]) )
    #if( $keyValSize >= 2 )
        #set( $val = $util.urlDecode($keyVal[1]) )
    #else
        #set( $val = '' )
    #end
#end


#set($data = 
"${data}\""${key}\"":\""$util.escapeJavaScript($val)\""#if($foreach.hasNext),#end")
#end


{
  "input": "{$data}",
  "stateMachineArn": "YOUR STEP FUNCTION ARN"
}

鉴于您的角色具有适当的权限,此映射模板将导致您的步骤函数正确执行,并输入格式精美的

JSON
对象。

© www.soinside.com 2019 - 2024. All rights reserved.