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.