【问题标题】:aws how to access an ECS service from a lambda function in production envaws 如何从生产环境中的 lambda 函数访问 ECS 服务
【发布时间】:2021-01-27 17:46:33
【问题描述】:

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

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

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

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

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

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

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

Lambda connection error to endpoint

VPC endpoint service configuration

NLB configurtion and integration

Lambda vpc configuration

【问题讨论】:

  • 端点是否可以正常工作?我想确认问题仅与 lambda 函数有关?如果您使用 EC2 实例,端点是否工作?
  • 是的,我可以直接与实例通信,但无法通过 vpc/nlb 使其工作
  • 我会后退一步,只专注于 NLB 和端点服务。不要使用 lambda 或 api 网关。只是 EC2 实例,您可以登录并尝试从那里卷曲端点。一旦你让它工作,然后转到如何使它与 lambda 一起工作。
  • 还要检查 HTTPS。从屏幕截图看来,您似乎只使用 HTTP。我认为端点服务在 HTTPS 的端口 443 上运行。所以安全组也需要做相应的修改。
  • 之前检查过 HTTP 和 HTTPS。不工作。我做了 ssh 到 ec2 实例,并且卷曲 nlb 生成了一个有效的响应。我只是无法让 lambda 到达它,尽管它在 VPC 中配置并具有 vpcExecution 角色。

标签: amazon-web-services amazon-ecs amazon-vpc endpoint nlb


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-15
    • 1970-01-01
    • 1970-01-01
    • 2020-03-12
    • 2018-06-25
    • 2021-01-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多