amazon-web-services - 如何使用 VPC 链接和 VPC 端点从私有子网内的 Lambda 响应 API 网关 Web 套接字
问题描述
我正在从一个架构迁移,我在私有子网中有一个 Lambda,与一个具有 NatGateway 的公共子网交谈,由 API 网关 WebSocket 触发。现在我删除了 Nat 网关并插入了一个带有 VPC 链接的 VPC 端点。我在链接中找到的:https ://d1.awsstatic.com/whitepapers/private-api-best-practices.pdf
我的 VPC 终端节点当前的策略全部打开,我没有使用 Enable Private DNS Name ,因为在我的 VPC 中有另一个项目与 API Gateway 对话。
我的 API Gateway 触发了 Lambda,但无法响应返回消息。我的 lambda 超时。
在我的旧架构中,我的返回端点是https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
,现在当我尝试响应时,它不适用于该端点。
我必须更改端点吗?
在我完成测试此连接之前,我的安全组和 NACL 非常开放。VPC Link 和 API Gateway Endpoint 配置了 Lambda 子网和 Lambda 安全组。
VPC Link 或 VPC Endpoint 是否缺少某些内容?
编辑:我在 ApiGateway 中激活了日志,在 lambda 日志之前它返回:
{
"requestId": "em-5aGamaDDAdtd=",
"ip": "",
"caller": "-",
"user": "-",
"requestTime": "30/Apr/2021:17:57:42 +0000",
"eventType": "MESSAGE",
"routeKey": "lambda",
"status": "504",
"connectionId": "em-5abCDaaDBJtw="
}
客户端收到消息:
{
message: "Endpoint request timed out", connectionId: "enBZ-dFG2oAFDA4a=",…}
connectionId: "em-5abCDaaDBJtw="
message: "Endpoint request timed out"
requestId: "em-5aGamaDDAdtd="
解决方案
我发现了我的问题,我的 VPC 链接缺少与 API 网关的连接。在 AWS::ApiGatewayV2::Integration 中,我需要插入 VPC Link 的连接。
推荐阅读
- python - 更新熊猫中的整个excel行
- javascript - 如何根据选择自动完成输入?
- ios - iOS/Swift:尝试将协议方法添加到 UIView 的按钮告诉我我的方法没有暴露给目标 C
- http - Golang http.PostParam 未在响应中显示所有 Cookie
- android - 使用 Android Studio 将文件转换为字符串,然后转换为 Base64 Fromate
- javascript - 如何检测输入值何时随 JS/Jquery 动态变化
- python - 如何在视图集使用的 Django 模型中添加列的自定义行级处理
- python - 使用 numpy 从文本文件中读取文件
- powershell - Power Shell 列出包含文件类型的目录
- python - Python - 将列表中的特定文件复制到新文件夹中