gpt4 book ai didi

javascript - 从 VPC 中的 Lambda 访问 API Gateway - 请求超时

转载 作者:太空宇宙 更新时间:2023-11-04 01:37:08 25 4
gpt4 key购买 nike

目标

  • 我正在使用 AWS 的"new"API Gateway Websocket 服务
  • 我想使用 Websocket 客户端连接到 Lambda 函数
  • 我想使用 ApiGatewayManager 响应客户端
  • Lambda 函数需要与我的 RDS 位于 VPC 中,以提高安全性(RDS 不可公开访问,安全组中的指定 IP 除外)
  • 我将 Node.js 8Typescript 结合使用

方法

我为 Websockets 创建了一个区域性 AWS API 网关,并为 $connect$disconnect 添加了一个 Lambda 函数,并为 subscribeChannel 操作添加了一个 Lambda 函数。

我能够连接并向已连接的客户端发送消息。

我还创建了一个具有 3 个私有(private)子网的 VPC,所有子网均位于 eu-central-1 中,每个子网位于不同的可用区 (AZ)。

当您将 Lambda 函数添​​加到 VPC 时,它们会失去对公共(public)互联网的访问权限,因此一种方法是添加另一个公共(public)子网并向其添加 NAT 网关。

现在,我正在更改私有(private)子网的路由表,将 0.0.0.0/0 委托(delegate)给 NAT,并在公共(public)子网的路由表中将 0.0.0.0/0 路由到 Internet 网关。

这似乎可以访问公共(public)互联网,例如我可以请求 https://google.com,但 ApiGatewayManagement 超时,好像无法解析 AWS 服务。

然后我研究了 VPC 终端 Node ,因为它们旨在使公共(public) AWS 服务在私有(private)子网中可用,而无需通过互联网路由。我能够设置它并接收私有(private) DNS 网址。但在这里我被困住了,我不知道如何在我的设置/代码中使用它。

我使用无服务器框架和 Cloud Formation 资源管理整个项目。

问题

如果 subscribeChannel 的操作处理程序与 VPC 关联,则对 XXXXXXXX.execute-api.eu-central-1.amazonaws.com/develop 的请求会超时,因为它无法到达公共(public)互联网。

NAT 网关是正确的方法还是我需要使用 VPC 端点来执行 api?如何正确配置 VPC 以使用此私有(private) DNS?

代码

async function channelHandler(event, context) {
return new aws_sdk_1.ApiGatewayManagementApi({
apiVersion: "2018-11-29",
endpoint: event.requestContext.domainName + "/" + event.requestContext.stage,
})
.postToConnection({
ConnectionId: event.requestContext.connectionId,
Data: "Hello, world!",
}).promise()
.then(() => {
return {
statusCode: 200,
body: "Sent message!",
};
})
.catch((error) => {
return {
statusCode: 500,
body: JSON.stringify(error),
};
});
}

到目前为止使用的资源:

最佳答案

我确实从我的配置中重新创建了完整的项目,并“神奇地”开始工作。因此我只能对正在发生的事情做出假设:

每个可用区都有一个私有(private)子网和一个公有子网。根据AWS Documentation for NAT Gateways需要在每个NAT网关中创建一个NAT网关,但我只在A区配置了一个NAT网关。

我将 Lambda 函数的配置更改为仅放置在一个可用区中(在项目投入生产之前我不想实现完全冗余),现在 NAT 网关位于同一个可用区中。

简单图表:

Client --[AWS]--> Lambda --[Private Subnet]--> NAT --[Public Subnet]--> API Gateway 

我仍然想知道是否可以使用 VPC 端点而不是 API 网关来访问 API 网关,但目前我将保留此配置。

关于javascript - 从 VPC 中的 Lambda 访问 API Gateway - 请求超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54201788/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com