AWS Step Functions调用API Gateway时URL参数被忽略问题咨询
问题解答
针对第一个问题的结论
Step Functions的apigateway:invoke集成不支持直接在Path字段中拼接URL查询参数。Path字段的设计用途仅为传递纯API路径段,服务在发起请求时会自动截断?及之后的所有内容,这就是日志中仅看到路径/v1/map、查询参数丢失的根本原因。
如果需要传递URL查询参数,必须在Parameters块中新增独立的Query字段,以键值对形式声明参数,注意参数值需使用数组格式(和Headers字段格式要求一致,单值参数也要放入数组)。对应要传json=1的场景,修正后的配置片段如下:
{ "Type": "Task", "Resource": "arn:aws:states:::apigateway:invoke", "Parameters": { "ApiEndpoint": "asdf.execute-api.us-east-1.amazonaws.com", "Method": "POST", "Stage": "dev", "Path": "/v1/map", "Query": { "json": ["1"] }, "Headers": { "Accept": [ "application/json" ] }, "AuthType": "IAM_ROLE" }, "Next": "Lambda Invoke", "ResultPath": "$.myStateInput" }
注:现有配置中Stage字段重复写了两次,属于冗余配置,建议删除重复项避免后续出现配置覆盖类问题。
针对第二个问题的结论
不带赋值的URL参数(如?isJson这类标记型参数)如果直接拼接在Path字段中,同样会被系统截断忽略,不存在特殊放行逻辑。
如果需要传递这类无值参数,同样要在Query字段中声明,对应参数值传[""]即可,集成会正确将该参数拼接到最终请求的查询字符串中。
内容的提问来源于stack exchange,提问作者joooet
相关产品推荐
相关产品推荐

