The*_*Man 5 amazon-web-services aws-api-gateway aws-http-api
我开始考虑使用 AWS HTTP API 作为使用 ECS 运行的一些微服务的单点入口。
一个微服务在服务器内部有以下路由:
/sessions/{session_id}/topics
Run Code Online (Sandbox Code Playgroud)
我在 HTTP API 中定义了完全相同的路由,并使用 CloudMap 和 VPC 链接来访问我的 ECS 集群。到目前为止一切顺利,请求可以到达服务器。然而,到达时的路径并不相同。根据 AWS 文档 [1],它将在前面添加阶段名称,以便请求到达时如下所示:
/{stage_name}/sessions/{session_id}/topics
Run Code Online (Sandbox Code Playgroud)
所以我开始研究参数映射,以便我可以更改集成的路径,但我无法让它工作。
对于 requestParameters,我想覆盖如下所示的路径,但由于某种原因,带有阶段变量的原始路径仍然存在。如果我只是将 overwrite:path 定义为 $request.path.sessionId,我只会得到 ID 作为路径,或者如果我写了我想要的任何字符串,它就会按照我的定义到达。但是当我混合 $request.path.sessionId 和字符串的其他部分时,它似乎不起作用。
我如何正确格式化它?
paths:
/sessions/{sessionId}/topics:
post:
responses:
default:
description: "Default response for POST /sessions/{sessionId}/topics"
x-amazon-apigateway-integration:
requestParameters:
overwrite:path: "/sessions/$request.path.sessionId/topics"
payloadFormatVersion: "1.0"
connectionId: (removed)
type: "http_proxy"
httpMethod: "POST"
uri: (removed)
connectionType: "VPC_LINK"
timeoutInMillis: 30000
Run Code Online (Sandbox Code Playgroud)
小智 1
您可以尝试使用括号。正式符号而不是速记符号。
覆盖:路径:“/sessions/${request.path.sessionId}/topics”
对于复杂的映射,它对我来说效果很好。
映射模板是用 Velocity Template Language (VTL) 表达的脚本
| 归档时间: |
|
| 查看次数: |
2117 次 |
| 最近记录: |