はじめに
VPCのCIDRブロック周りの設計をする機会があり、サブネットやルートテーブル辺りをきちんと理解していなかったので、備忘録的にまとめておきたい。
ルートテーブルとは何か、を理解している前提で話を続けていきます。
対象読者
- サブネットのルートテーブルの設定について(特にTerraformでの)知りたい方
- 数ヶ月後の自分😇
この記事でわかること
- route_tableリソースの記述の仕方
- 各設定項目の意味
aws_route_tableの各設定項目の記述の仕方
aws_route_table
リソースブロックは、主にVPCの指定、実際のルートの定義、そして任意のタグで構成されます。
main.tf
resource "aws_route_table" "example_public" {
# 1. VPC IDの指定(必須)
vpc_id = aws_vpc.main.id
# 2. ルートの定義
route {
cidr_block = "0.0.0.0/0"
gateway_id = aws_internet_gateway.main.id
}
# 3. タグの指定(オプション)
tags = {
Name = "example-public-route-table"
Environment = var.environment
}
aws_route_tableの各設定項目の意味
aws_route_table
リソースブロック内で使用される主要な引数とその意味、および入れ子のrouteブロックの意味を説明します。
トップレベルの設定項目
設定項目 | 必須/オプション | 意味 |
---|---|---|
vpc_id |
必須 | そのルートテーブルを関連づけるVPCのIDを指定する。 |
route |
オプション | ルートテーブルに追加したいカスタムルートを定義するための入れ子のブロック。これがない場合、VPC作成時に自動的に追加されるローカルルートのみが存在する状態になる。 |
tags |
オプション | AWSリソースに適用するキーと値のペア。 |
ローカルルートは、VPC作成時に自動的に有効になる同じVPC内の通信経路のこと。
route
ブロック内の引数
route
ブロックは、特定のトラフィックをどこへ送信するかを定義します。送信先(CIDR)とターゲット(ネクストホップ)のセットで定義される。
設定項目 | 必須/オプション | 意味 | 用途の例 |
---|---|---|---|
cidr_block | 必須(1つのみ) | トラフィックの送信先IPアドレス範囲をIPv4CIDR形式で指定する。0.0.0.0/0 は「すべてのIPアドレス」を意味する。 |
インターネット、他のVPC、オンプレミスなど |
ipv6_cidr_block | 必須(1つのみ) | トラフィックの送信先IPアドレス範囲をIPv6CIDR形式で指定する。 | IPvv6トラフィックのルーティング用 |
gateway_id | ターゲット(1つのみ) | インターネットゲートウェイや仮装プライベートゲートウェイをターゲットとする場合にそのIDを指定する。 | パブリックサブネットからインターネットに出る場合 |
nat_gateway_id | ターゲット(1つのみ) | NATゲートウェイをターゲットとする場合にそのIDを指定する。 | プライベートサブネットからインターネットに出る場合 |
vpc_peering_connection_id | ターゲット(1つのみ) | VPCピアリング接続をターゲットとする場合にそのIDを指定する。 | 接続された他のVPCへの通信 |
transit_gateway_id | ターゲット(1つのみ) | Transit Gatewayをターゲットとする場合にそのIDを指定する。 | 複数のネトワークを集約して通信する場合 |
routeブロックでは、cidr_blockまたはipv6_cidr_blockのどちらか1つと、ターゲットを示すID引数のどれか1つを同時に指定する必要があります。