Согласно документации AWS по шлюзам NAT , они не могут отправлять трафик через конечные точки VPC, если только он настраивается следующим образом:
Шлюз NAT не может отправлять трафик через конечные точки VPC [...]. Если вашим экземплярам в частной подсети требуется доступ к ресурсам через конечную [...] точку VPC, используйте таблицу маршрутов частной подсети для маршрутизации трафика непосредственно на эти устройства.
После этого в документации, я создал следующую конфигурацию для своего приложения ECS:
- VPC (
vpc-app
) с CIDR 172.31.0.0/16. - Подсеть приложения (
subnet-app
) со следующей таблицей маршрутов:
Destination | Target
----------------|-----------
172.31.0.0/16 | local
0.0.0.0/0 | nat-main
- Шлюз NAT (
nat-main
) вvpc-app
в подсетиdefault-1
со следующей таблицей маршрутов:
Destination | Target
----------------|--------------
172.31.0.0/16 | local
0.0.0.0/0 | igw-xxxxxxxx
- Группа безопасности (
sg-app
) с портом 443, открытым дляsubnet-app
. - Конечные точки VPC (тип интерфейса) с
vpc-app
,subnet-app
иsg-app
для следующих служб:
com.amazonaws.eu-west-1.ecr.api
com.amazonaws.eu-west-1.ecr.dkr
com.amazonaws.eu-west-1.ecs
com.amazonaws.eu-west-1.ecs-agent
com.amazonaws.eu-west-1.ecs-telemetry
com.amazonaws.eu-west-1.s3 (Gateway)
Также важно отметить, что я включил Разрешение DNS и имена хостов DNS для vpc-app
, а также параметр Включить частное DNS-имя для ecr-dkr
и ecr-api
VPCE, вот два скриншота раздела "Подробности": ecr-dkr и ecr-api.
Я также пробовал работать только с контейнерами Fargate, поскольку они не имеют дополнительных сложностей, связанных с агентом ECS, и потому, что, согласно документации:
Для задач, использующих тип запуска Fargate, требуется только конечная точка Amazon ECR VPC com.amazonaws.region.ecr.dkr и конечная точка шлюза Amazon S3, чтобы воспользоваться этой функцией.
Это также не работает, и каждый раз, когда мои задачи Fargate выполняются, я вижу всплеск байтов до источника в разделе Мониторинг nat-main
.
Что бы я ни пытался, экземпляры EC2 (и задачи Fargate) в subnet-app
по-прежнему извлекают изображения с использованием nat-main
и не переходят на локальный адрес службы ECR.
Я перезапустил Агент ECS и обязательно установил все флажки в Руководство по конечным точкам VPC интерфейса ECS И Конечные точки интерфейса ECR.
Что мне здесь не хватает?
Любая помощь будет оценена по достоинству.