Я создаю задачу ECS для запуска при запуске события EventBridge, но не могу назначить этой задаче общедоступный IP-адрес, который необходим для доступа к ECS для получения задачи. VPC, который я использую, имеет только общедоступные подсети.
Это соответствующий код:
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 ожидает объект SubnetSelection , а вы передаете результат функции Vpc.selectSubets , которая принимает SubnetSelection
и возвращает экземпляр SelectedSubnets.
Вместо этого передайте объект SubnetSelection
напрямую:
subnetSelection: {
subnetType: SubnetType.PUBLIC,
},
Я бы посоветовал правильно настроить ваш IDE/языковой сервер - он должен выделять для вас ошибки типа, подобные этой.