AWSMiddleTechnical

Что такое VPC Endpoint?

VPC Endpoint обеспечивает приватный доступ к сервисам AWS (S3, DynamoDB, SSM и др.) без выхода в интернет, без NAT Gateway. Gateway Endpoint — бесплатный, только для S3/DynamoDB, добавляет маршрут. Interface Endpoint — платный ENI с приватным IP, для большинства других сервисов AWS.

VPC Endpoint — частный доступ к сервисам AWS без интернета

VPC Endpoint позволяет экземплярам в VPC обращаться к сервисам AWS (S3, DynamoDB, SQS, SSM и др.) по частной сети AWS, минуя интернет, NAT Gateway или IGW. Трафик не покидает инфраструктуру AWS.

Зачем нужен VPC Endpoint

  • Безопасность: трафик к S3 или DynamoDB не идёт через интернет. EC2 в полностью изолированной приватной подсети (без NAT) может обращаться к этим сервисам.
  • Стоимость: NAT Gateway берёт $0.045/GB обработанных данных. Если EC2 активно работает с S3 (бэкапы, логи, большие файлы), Gateway Endpoint для S3 бесплатен и экономит деньги.
  • Производительность: меньше задержек, нет узкого места в виде NAT Gateway.
  • Compliance: некоторые регуляторные требования запрещают данным покидать частную сеть.

Типы VPC Endpoints

  • Gateway Endpoint: для S3 и DynamoDB. Бесплатный. Добавляет маршрут в route table.
  • Interface Endpoint: для большинства других сервисов AWS (SSM, SQS, SNS, Secrets Manager, ECR, CloudWatch и 100+ других). Платный (~$0.01/час + $0.01/GB). Создаёт ENI с приватным IP в подсети.
  • Gateway Load Balancer Endpoint: для встроенных виртуальных appliances (firewall, IDS/IPS).

Создание Gateway Endpoint для S3

# Найти имя сервиса для S3 в регионе
aws ec2 describe-vpc-endpoint-services \
  --filters "Name=service-name,Values=*s3*" \
  --query 'ServiceNames'
# com.amazonaws.us-east-1.s3

# Создать Gateway Endpoint
aws ec2 create-vpc-endpoint \
  --vpc-id vpc-0abc123456789def0 \
  --service-name com.amazonaws.us-east-1.s3 \
  --vpc-endpoint-type Gateway \
  --route-table-ids rtb-private-1a rtb-private-1b
# AWS автоматически добавит маршрут в указанные route tables:
# pl-68a54001 (prefix list для S3) -> vpce-0abc123

# Проверить маршруты
aws ec2 describe-route-tables \
  --route-table-ids rtb-private-1a \
  --query 'RouteTables[*].Routes'

Создание Interface Endpoint для SSM (для доступа к EC2 в приватной подсети)

# Для Session Manager нужны три endpoint'а
for SERVICE in ssm ssmmessages ec2messages; do
  aws ec2 create-vpc-endpoint \
    --vpc-id vpc-0abc123456789def0 \
    --service-name com.amazonaws.us-east-1.${SERVICE} \
    --vpc-endpoint-type Interface \
    --subnet-ids subnet-private-1a subnet-private-1b \
    --security-group-ids sg-endpoint-0abc123 \
    --private-dns-enabled
done

# Security Group для endpoint'ов должна разрешать
# TCP 443 inbound от Security Group EC2 инстансов

Endpoint Policy

VPC Endpoints поддерживают resource-based политики, ограничивающие, какие действия и на каких ресурсах разрешены через этот endpoint:

# Endpoint Policy: разрешить только чтение из конкретного S3 бакета
aws ec2 modify-vpc-endpoint \
  --vpc-endpoint-id vpce-0abc123456789def0 \
  --policy-document '{
    "Version": "2012-10-17",
    "Statement": [{
      "Effect": "Allow",
      "Principal": "*",
      "Action": ["s3:GetObject", "s3:ListBucket"],
      "Resource": [
        "arn:aws:s3:::my-bucket",
        "arn:aws:s3:::my-bucket/*"
      ]
    }]
  }'

Подводные камни

  • Gateway Endpoint добавляет маршрут в route table по prefix list (pl-xxxxxxxx), а не по CIDR — NACL не может блокировать этот трафик по IP, только через Endpoint Policy.
  • Interface Endpoint с --private-dns-enabled переопределяет DNS для сервиса в VPC — запросы к s3.amazonaws.com будут резолвиться в приватный IP endpoint. Это может сломать cross-region запросы.
  • Security Group для Interface Endpoint — нужно явно разрешить TCP 443 inbound от EC2 инстансов. Забыть это правило — самая частая ошибка при настройке SSM без NAT.
  • Gateway Endpoint бесплатен, Interface Endpoint платный — для S3 и DynamoDB всегда используйте Gateway.
  • VPC Endpoint не работает между VPC — для cross-VPC доступа к сервису нужен VPC Peering или Transit Gateway + свой endpoint в каждом VPC.
  • Endpoint для ECR нужны два: ecr.api и ecr.dkr — плюс S3 Gateway Endpoint (слои образов хранятся в S3).

Common mistakes

  • Думать, что VPC endpoint сам выдаёт IAM permissions.
  • Путать gateway endpoint и interface endpoint.
  • Не учитывать private DNS и стоимость interface endpoints.

What the interviewer is testing

  • Объясняет назначение VPC endpoints.
  • Называет gateway и interface endpoint.
  • Понимает связь с IAM, policies и routing.

Sources

Related topics