Ошибка создания ECS TaskDefinition с ошибкой "Invalid containerPort" - PullRequest
1 голос
/ 21 июня 2020

Недопустимая настройка containerPort для контейнера prerenderContainer. (Сервис: AmazonECS; Код состояния: 400; Код ошибки: ClientException; Идентификатор запроса: ac922961-8445-4810-a839-03bb031938a2)

Ошибка выше ^ фрагмент кода ниже ....

const taskDefinition = new ecs.Ec2TaskDefinition(this, 'TaskDef',{
  networkMode: "bridge",

prerenderContainer.addPortMappings('ports',{
  containerPort: 3000,
  hostPort: 80,
});

const listener = applb.addListener('appFleet', {
   targetGroupName: 'prerenderFleet-TGroup',
   port: 80
});

const prerenderFleetTGroup = listener.addTargets('ECS', {
port: 80,
targets:[service.loadBalancerTarget({
containerName: 'prerenderContainer',
containerPort: 3000,
})], 

Я безуспешно пробовал мост и awsvp c для сетевого режима. Я подумал, что это может быть из-за определенного диапазона портов c, который я выбрал, поэтому я также попробовал «40391», но не повезло.

Это проблема с тайм-аутом?

Любая помощь приветствуется .

1 Ответ

2 голосов
/ 22 июня 2020

Прежде всего, я бы порекомендовал оставить настройку "hostPort". Это позволяет ECS динамически выбирать случайный порт хоста, а затем также оставлять порт нашим из вызова addTargets. Случайный порт также будет автоматически сопоставлен с целевым портом. В текущей конфигурации вы можете разместить только один контейнер на хост, так как все контейнеры будут пытаться сопоставить порт 80 на хосте, а на хосте есть только один порт 80.

В качестве альтернативы вы можете включить AWSVP C сетевой режим, а затем также включите « транкинг ENI ». Это даст каждому контейнеру на хосте свой собственный сетевой интерфейс Elasti c с собственным IP-адресом и собственным портом 80.

Что касается этого точного сообщения об ошибке, мне нужно было бы увидеть немного больше информации о настройках, созданных из CDK этими вызовами. Попробуйте запустить «cdk synth», а затем возьмите JSON или YAML, сгенерированный для определения задачи, и это должно предоставить дополнительную информацию о том, почему параметр «containerPort» недействителен.

Однако я также уверен, что если вы переключитесь на порт Dynami c или используете режим AWSVP C, это также решит эту проблему, и у вас также будет лучшая конфигурация сети

...