将 AWS API Gateway 连接到由 ECS 微服务支持的内部 NLB

问题描述 投票:0回答:1

我似乎被我的 ECS 微服务架构所困扰。 当前状态:

  1. 在私有子网中具有 2 个 EC2 实例的 ECS 集群,在端口 3000 上公开 dockerized Node Express 端点(1 个服务,2 个正在运行的任务)
  2. NAT网关从VPC的默认路由表中路由出
  3. 这 2 个 EC2 实例前面的内部 NLB。
  4. 在 API Gateway 中创建的 VPC 链接用于定位 NLB。
  5. API 网关与 VPC 链接集成(我输入什么作为终端节点 URI?是 NLB 的 DNS?还是步骤 6 中的自定义域名)
  6. 为API网关创建自定义域名

当我尝试向 customdomainname:3000/task 发送请求时。我预计任务会运行,但是我没有得到任何响应(连接到自定义域名时出错:3000/task)。

如果它是面向互联网的应用程序负载均衡器和公共子网中的实例,那么一切都工作得很好,但我需要使用 VPC 链接方法来保护我的应用程序。

我知道我的问题可能很模糊,但我会感谢以前从事过此工作的任何人的任何意见和见解

amazon-web-services aws-api-gateway amazon-ecs amazon-vpc
1个回答
0
投票

这是一个老问题,但我认为我在 AWS CDK Stack 上遇到了类似的问题,该堆栈为一些应该使用 API 网关访问的 EC2 服务创建了 ECS 集群,但由于某种原因 API 网关一直响应 500 错误, “服务不可用”,即使我能够通过负载均衡器访问它(在暂时公开负载均衡器之后)。

我在为 ECS 集群创建 VPC 时将

restrictDefaultSecurityGroup
设置为
false
成功解决了该问题:

const vpc = new ec2.Vpc(
    this,
    'ClusterVpc',
    {
        maxAzs: 2,

        // Add this:
        restrictDefaultSecurityGroup: false,
    },
);

这将禁止删除某些安全组规则,而这些规则是整个功能正常运行所需的。

© www.soinside.com 2019 - 2024. All rights reserved.