如何使用 VPC Link 和 VPC 端点从私有子网内的 Lambda 响应 API 网关 Web 套接字
How to respond from a Lambda inside Private Subnet to a API Gateway Web Socket, using VPC Link and VPC Endpoint
我正在从一个在私有子网中有一个 Lambda 的架构迁移,与一个 Public 具有 NatGateway 的子网对话,由 API 网关 WebSocket 触发。现在我删除了 Nat 网关并插入了一个带有 VPC Link 的 VPC 端点。我在 link 中发现:https://d1.awsstatic.com/whitepapers/private-api-best-practices.pdf
我的 VPC 端点当前有一个策略全部打开,我没有使用启用私有 DNS 名称
,因为在我的 VPC 中还有另一个项目与 API 网关通信。
我的 API 网关触发了 Lambda,但无法响应 return 消息。我的 lambda 有超时。
在我的旧架构中,我的 return 端点是 https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
,现在当我尝试响应时,它不适用于该端点。
我必须更改端点吗?
在我完成此连接测试之前,我的安全组和 NACL 非常开放。 VPC Link 和 API 网关端点配置了 Lambda 子网和 Lambda 安全组。
VPC Link 或 VPC 端点是否缺少某些内容?
编辑:我在 ApiGateway 中激活了日志,并且在 lambda 记录它之前 returns:
{
"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 Link 缺少与 API 网关的连接。
在AWS::ApiGatewayV2::Integration中,我需要插入VPC的连接Link。
我正在从一个在私有子网中有一个 Lambda 的架构迁移,与一个 Public 具有 NatGateway 的子网对话,由 API 网关 WebSocket 触发。现在我删除了 Nat 网关并插入了一个带有 VPC Link 的 VPC 端点。我在 link 中发现:https://d1.awsstatic.com/whitepapers/private-api-best-practices.pdf
我的 VPC 端点当前有一个策略全部打开,我没有使用启用私有 DNS 名称 ,因为在我的 VPC 中还有另一个项目与 API 网关通信。
我的 API 网关触发了 Lambda,但无法响应 return 消息。我的 lambda 有超时。
在我的旧架构中,我的 return 端点是 https://{restapi-id}.execute-api.{region}.amazonaws.com/{stage}
,现在当我尝试响应时,它不适用于该端点。
我必须更改端点吗?
在我完成此连接测试之前,我的安全组和 NACL 非常开放。 VPC Link 和 API 网关端点配置了 Lambda 子网和 Lambda 安全组。
VPC Link 或 VPC 端点是否缺少某些内容?
编辑:我在 ApiGateway 中激活了日志,并且在 lambda 记录它之前 returns:
{
"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 Link 缺少与 API 网关的连接。 在AWS::ApiGatewayV2::Integration中,我需要插入VPC的连接Link。