aws 如何从生产环境中的 lambda 函数访问 ECS 服务

aws how to access an ECS service from a lambda function in production env

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

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

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

*** 但是,我不断收到 'max retries exceeded' 和 python 请求 - 因为无法访问端点。也不是 nlb,也不是 vpc 端点服务。

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

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

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

Lambda connection error to endpoint

VPC endpoint service configuration

NLB configurtion and integration

Lambda vpc configuration

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

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