首页 > 解决方案 > aws 如何从生产环境中的 lambda 函数访问 ECS 服务

问题描述

我创建了一个运行任务定义的 ecs 服务,该任务定义创建了一个运行烧瓶应用程序的 docker 容器。烧瓶应用程序通过 http 请求获取图像并返回 ML 模型推理。

由于我希望此服务在生产环境中运行,因此我创建了一个内部网络负载均衡器,并将其附加到 vpc 端点服务。nlb 将请求转发到注册所有 ECS 集群实例的目标组。

我有一个 API 网关,它与在同一 vpc 内配置的 lambda 函数集成,并且我需要从 lambda 访问 ecs 服务(通过 nlb 或 vpc 端点)

*** 但是,我不断收到 python 请求的“超出最大重试次数”-因为端点无法访问。也不是 nlb,也不是 vpc 端点服务。

请帮助我了解问题所在,或建议在生产环境中处理这些请求的其他基础架构。

** docker 容器有效并直接使用邮递员进行响应,但我需要邮递员发送到 API 网关并从 lambda 获取编辑后的响应。

附上我的一些配置。如果您认为需要更多配置,请告诉我。谢谢:)

到端点的 Lambda 连接错误

VPC 端点服务配置

NLB 配置和集成

Lambda vpc 配置

标签: amazon-web-servicesamazon-ecsamazon-vpcendpointnlb

解决方案


您的其余配置似乎没问题,并通过访问 EC2 内的服务进行验证。

我只能指出一个难题,即在将您的 Lambda 函数与 VPC 连接时,仅使用private subnets. 目前,我不确定附加到您的 Lambda 函数的子网是私有的还是公有的。


推荐阅读