我想创建一个AWS ECS集群。如果我选择默认 VPC,则一切正常。但如果我选择另一个 VPC,它就不起作用了

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

我使用容量提供程序的配置创建了一个 ECS 集群作为 EC2 实例。

我选择了与默认VPC类似的VPC。自动缩放组的最小大小为 1。但是当我创建集群时,容器实例中没有 EC2 注册。但是,如果我选择默认 VPC,效果会很好。是什么原因?这是我创建 VPC 的代码:

import * as cdk from 'aws-cdk-lib';
import * as ec2 from 'aws-cdk-lib/aws-ec2';
import { Construct } from 'constructs';

export class VPC_Stack extends cdk.Stack {

  public readonly vpc: ec2.Vpc; 

  constructor(scope: Construct, id: string, stackName: string, appName: string) {
    super(scope, id, {
      stackName: appName + '-' + stackName,  
    });

    const name = appName + '-' + stackName + 'VPC';

    this.vpc = new ec2.Vpc(this, name + '-id', {
      cidr: '10.0.0.0/16',
      maxAzs: 3,
      subnetConfiguration: [
        {
          name: 'PublicSubnetAz1',
          subnetType: ec2.SubnetType.PUBLIC,
          cidrMask: 24,
        }
      ],
      natGateways: 1,
      vpcName: name
    });

  }
}
amazon-web-services amazon-ecs aws-cdk amazon-vpc
1个回答
2
投票

我假设您正在将 EC2 实例部署到

PRIVATE_ISOLATED
子网中?这些子网没有到 VPC 之外的任何内容(例如 ECS 服务)的路由,因此这些
PRIVATE_ISOLATED
子网中的实例无法连接到 ECS 服务以向集群注册。您需要执行以下操作之一:

  • 将所有必要的 VPC 终端节点添加到您的 VPC
  • 将其更改为
    PRIVATE_WITH_EGRESS
    (这将产生将要创建的 NAT 网关的成本)
  • 将您的 EC2 实例部署到 PUBLIC 子网

默认 VPC 没有

PRIVATE_ISOLATED
子网,这解释了为什么当您部署到默认 VPC 时会看到它工作。

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