Я что-то упустил, но нет возможности добавить маршрут через CloudFormation в таблицу маршрутов по умолчанию, которая поставляется с VPC?
Нет, не на что ссылаться (например, логический идентификатор). Просто создайте свою основную таблицу ;-).
это вероятно, одна из причин, по которой его нельзя использовать:
Один из способов защитить свой VPC - выйти из основной таблицы маршрутизации. в исходном состоянии по умолчанию (только с локальным маршрутом) и явно связать каждую новую подсеть вы создаете с помощью одной из созданных вами пользовательских таблиц маршрутов. Это гарантирует, что вы должны явно контролировать, как маршрутизируется исходящий трафик каждой подсети.
Вы можете определить каждый компонент самостоятельно, если вам нужно реализовать эту настройку через CloudFormation. Просто создайте свой собственный VPC, Интернет-шлюз, подсеть и таблицу маршрутов. Затем вам нужно явно объявить RouteTableAssociation для конкретной подсети и создать общедоступный маршрут для этой таблицы. Вот пример
AWSTemplateFormatVersion: '2010-09-09'
Description: Example
Resources:
myInternetGateway:
Type: AWS::EC2::InternetGateway
Properties:
Tags:
- Key: "Name"
Value: "a_gateway"
myVPC:
Type: AWS::EC2::VPC
Properties:
CidrBlock: 10.0.0.0/24
EnableDnsSupport: true
EnableDnsHostnames: true
InstanceTenancy: default
# Attach Internet gateway to created VPC
AttachGateway:
Type: AWS::EC2::VPCGatewayAttachment
Properties:
VpcId:
Ref: myVPC
InternetGatewayId:
Ref: myInternetGateway
# Create public routes table for VPC
myPublicRouteTable:
Type: AWS::EC2::RouteTable
Properties:
VpcId: !Ref myVPC
Tags:
- Key: "Name"
Value: "public_routes"
# Create a route for the table which will forward the traffic
# from the gateway
myDefaultPublicRoute:
Type: AWS::EC2::Route
DependsOn: AttachGateway
Properties:
RouteTableId: !Ref myPublicRouteTable
DestinationCidrBlock: 0.0.0.0/0
GatewayId: !Ref myInternetGateway
# Subnet within VPC which will use route table (with default route)
# from Internet gateway
mySubnet:
Type: AWS::EC2::Subnet
Properties:
AvailabilityZone: ""
CidrBlock: 10.0.0.0/25
MapPublicIpOnLaunch: true
VpcId:
Ref: myVPC
# Associate route table (which contains default route) to newly created subnet
myPublicRouteTableAssociation:
Type: AWS::EC2::SubnetRouteTableAssociation
Properties:
RouteTableId: !Ref myPublicRouteTable
SubnetId: !Ref mySubnet
Таким образом, вы сможете использовать созданную таблицу маршрутов (в приведенном выше примере она используется для перенаправления трафика из Интернет-шлюза)