API HTTP Gateway path rewrite question

0

Hi, I have API HTTP Gateway with ALB backends and I'm trying to migrate from

API Gateway -> internet-faced ALB (using HTTP URI integration) to API Gateway -> VPC link -> internal ALB.

My routes look like "/app1/{proxy+}". and in the first case, I used "https://app1.example.com/{proxy}", which rewrites "api.example.com/v1/app1/user/add" to "https://app1.example.com/user/add". Now I'd like to do the same rewrite with VPC link integration and I couldn't find a way to do that. Rewriting the path with "$request.path" giving me "/app1/user/add", and "$request.path.proxy+" giving me "/v1/app1/user/add".

已提问 2 年前461 查看次数
1 回答
1
已接受的回答

Hello,

Thank you for reaching out to us and sharing the detailed use-case.

The correct mapping parameter to overwrite the path would be as below :

/$request.path.proxy

Using "$request.path.proxy+" will give you "/v1/app1/user/add" as path as it is a catch all greedy path variable. This can be verified using context variable $context.path in access logging.

The correct way is using "$request.path.proxy" [1] which will give you the value "user/add" as path for the integration which is partially correct as it will throw 4xx error at the backend due to the missing initial "/".

Therefore, using "/$request.path.proxy+" will give you the proper value "/user/add" as path output which is suits your use-case. Please let me know if you still face any issues after implementing my above suggestion.

References: [1] https://docs.aws.amazon.com/apigateway/latest/developerguide/http-api-develop-integrations-http.html

AWS
支持工程师
已回答 2 年前
profile picture
专家
已审核 1 个月前
  • Many thanks! BTW, I think there is a typo: 'Therefore, using "/$request.path.proxy+" will give you the proper value "/user/add"' should be 'proxy', not 'proxy+'.

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则