AWS Networking
VPC、ロードバランサー、Route 53
VPC(Virtual Private Cloud)
AWS内の論理的に分離されたネットワーク。IPレンジ、サブネット、ルーティングを定義。
VPCの構成要素
VPC
10.0.0.0/16(65,536 IPs)Public Subnet
10.0.1.0/24(インターネットアクセス可)Private Subnet
10.0.2.0/24(インターネット直接アクセス不可)| コンポーネント | 説明 |
|---|---|
| Internet Gateway | VPCとインターネット間の通信を可能に |
| NAT Gateway | プライベートサブネットからの外向き通信を許可 |
| Route Table | トラフィックの経路を定義 |
| Security Group | インスタンスレベルのファイアウォール(ステートフル) |
| Network ACL | サブネットレベルのファイアウォール(ステートレス) |
セキュリティグループ vs NACL
| 観点 | Security Group | Network ACL |
|---|---|---|
| 適用レベル | インスタンス | サブネット |
| ステート | ステートフル | ステートレス |
| ルール | 許可のみ | 許可と拒否 |
| 評価順 | すべて評価 | 番号順 |
| デフォルト | すべて拒否 | すべて許可 |
ロードバランサー
ALB
Application Load Balancer
- • L7(HTTP/HTTPS)
- • パスベースルーティング
- • WebSocket対応
NLB
Network Load Balancer
- • L4(TCP/UDP)
- • 超低レイテンシ
- • 静的IP
GLB
Gateway Load Balancer
- • L3(IP)
- • ファイアウォール連携
- • トラフィック検査
1 # ALB Terraform例 2 resource "aws_lb" "main" { 3 name = "my-alb" 4 internal = false 5 load_balancer_type = "application" 6 security_groups = [aws_security_group.alb.id] 7 subnets = aws_subnet.public[*].id 8 9 enable_deletion_protection = true 10 } 11 12 resource "aws_lb_target_group" "app" { 13 name = "app-tg" 14 port = 80 15 protocol = "HTTP" 16 vpc_id = aws_vpc.main.id 17 target_type = "ip" # Fargate用 18 19 health_check { 20 path = "/health" 21 healthy_threshold = 2 22 unhealthy_threshold = 10 23 } 24 }
Route 53
AWSのDNSサービス。ドメイン登録、DNSルーティング、ヘルスチェック。
ルーティングポリシー
シンプル
1つのリソースにルーティング
加重(Weighted)
トラフィックを割合で分散(カナリアデプロイ)
レイテンシ
最も低レイテンシのリージョンにルーティング
フェイルオーバー
プライマリ障害時にセカンダリに切り替え
位置情報
ユーザーの地理的位置に基づきルーティング
VPC接続オプション
| オプション | ユースケース |
|---|---|
| VPC Peering | 2つのVPC間の直接接続 |
| Transit Gateway | 複数VPCのハブ&スポーク接続 |
| VPN | オンプレミスとの暗号化接続 |
| Direct Connect | 専用線によるオンプレミス接続 |
| PrivateLink | VPCエンドポイント経由でAWSサービスにアクセス |
VPCエンドポイント
Gatewayエンドポイント
S3、DynamoDB向け。無料。
Interfaceエンドポイント
ほとんどのAWSサービス。ENIを作成。課金あり。
メリット: プライベートサブネットからNATなしでAWSサービスにアクセス。 トラフィックがインターネットを通らないため、セキュリティとコスト面で有利。