我正在创建一个ECS任务,以便在由EventBridge事件触发时运行,但我无法为该任务分配公共IP地址,这是访问ECS获取任务所必需的.我正在使用的VPC只有公共VLAN.

这是相关代码:

const cluster = new ecs.Cluster(this, "default-cluster", {
  vpc,
  clusterName: `xxxxx`,
  enableFargateCapacityProviders: true,
});

const taskDefinition = new ecs.FargateTaskDefinition(
  this,
  `${process.type}-task`,
  {
    memoryLimitMiB: 512,
    cpu: 256,
    runtimePlatform: {
      cpuArchitecture: ecs.CpuArchitecture.X86_64,
      operatingSystemFamily: ecs.OperatingSystemFamily.LINUX,
    },
  }
);

taskDefinition
  .addContainer(`xxxxxxxx`, {
    image: ecs.ContainerImage.fromEcrRepository(repo, props.imageTag),
    containerName: `xxxxxx`,
  })
  .addPortMappings({
    containerPort: 3000,
  });

const releaseTask = new eventBridgeTargets.EcsTask({
  cluster,
  taskDefinition,
  taskCount: 1,
  launchType: ecs.LaunchType.FARGATE,
  subnetSelection: vpc.selectSubnets({
    subnetType: SubnetType.PUBLIC,
  }),
  assignPublicIp: true,
});

我收到的错误是: Error: assignPublicIp should be set to true only for PUBLIC subnets

我做错了什么?

推荐答案

subnetSelection prop需要一个SubnetSelection对象,而你传递的是Vpc.selectSubets函数的结果,它接受一个SubnetSelection并返回一个SelectedSubnets的实例.

相反,直接传递SubnetSelection对象:

subnetSelection: {
    subnetType: SubnetType.PUBLIC,
},

我建议您正确配置IDE /语言服务器--它应该突出显示类型错误,比如这个错误.

Typescript相关问答推荐

带有联合参数的静态大小数组

Angular 错误NG0303在Angular 项目中使用app.Component.html中的NGFor

无法正确推断嵌套泛型?

如何在TypeScrip中从字符串联合类型中省略%1值

如何从扩展接口推断泛型?

使用动态输出类型和泛型可重用接口提取对象属性

类型与泛型抽象类中的类型不可比较

为什么特定的字符串不符合包括该字符串的枚举?

在Reaction中折叠手风琴

有没有办法传递泛型类型数组,以便推断每个元素的泛型类型?

map 未显示控制台未显示任何错误@reaction-google-map/api

在打字应用程序中使用Zod和Reaction-Hook-Forms时显示中断打字时出错

如何在try 运行独立的文字脚本Angular 项目时修复Visual Studio中的MODULE_NOT_FOUND

递归生成常量树形 struct 的键控类型

推断集合访问器类型

任何导航器都未处理有效负载为";params";:{";roomId";:";...";}}的导航操作

递归类型别名的Typescript 使用

基于泛型类型的条件类型,具有条目属性判断

解析错误:DeprecationError: 'originalKeywordKind' 自 v5.0.0 起已被弃用,无法再使用

是否有可能不允许在 TypeScript 中设置类属性,但也会抛出运行时错误?