VPC
AWS 上に論理的に隔離されたプライベートネットワークを構築するサービス
AWSネットワーク
VPC とは
VPC (Virtual Private Cloud) は、AWS 上に論理的に隔離されたプライベートネットワークを構築するサービスである。IP アドレス範囲、サブネット、ルートテーブル、セキュリティグループを自由に設定し、リソースのネットワーク環境を制御する。
VPC の構成要素
| 要素 | 説明 |
|---|---|
| CIDR ブロック | VPC の IP アドレス範囲 (例: 10.0.0.0/16) |
| サブネット | VPC 内のネットワーク分割 (パブリック/プライベート) |
| ルートテーブル | トラフィックの経路制御 |
| インターネットゲートウェイ | VPC とインターネットの接続 |
| NAT ゲートウェイ | プライベートサブネットからの外部通信 |
| セキュリティグループ | インスタンスレベルのファイアウォール |
| ネットワーク ACL | サブネットレベルのファイアウォール |
典型的な構成
VPC (10.0.0.0/16)
├── パブリックサブネット (10.0.1.0/24) - AZ-a
│ ├── ALB
│ └── NAT Gateway
├── パブリックサブネット (10.0.2.0/24) - AZ-c
│ └── ALB
├── プライベートサブネット (10.0.10.0/24) - AZ-a
│ ├── Lambda
│ └── RDS (プライマリ)
└── プライベートサブネット (10.0.20.0/24) - AZ-c
├── Lambda
└── RDS (スタンバイ)
パブリック vs プライベートサブネット
| 観点 | パブリック | プライベート |
|---|---|---|
| インターネットアクセス | 直接 (IGW) | NAT Gateway 経由 |
| 配置するリソース | ALB, NAT GW | Lambda, RDS, ElastiCache |
| セキュリティ | 外部からアクセス可能 | 外部からアクセス不可 |
Lambda と VPC
Lambda を VPC 内に配置すると、プライベートサブネットの RDS や ElastiCache にアクセスできる。ただし、インターネットアクセスには NAT Gateway が必要 (コストがかかる)。
MyFunction:
Type: AWS::Serverless::Function
Properties:
VpcConfig:
SubnetIds:
- !Ref PrivateSubnet1
- !Ref PrivateSubnet2
SecurityGroupIds:
- !Ref LambdaSG
VPC エンドポイント
NAT Gateway を使わずに、VPC 内から AWS サービス (S3, DynamoDB) にプライベート接続する。
| タイプ | 対象 | コスト |
|---|---|---|
| ゲートウェイ型 | S3, DynamoDB | 無料 |
| インターフェース型 | その他の AWS サービス | 時間課金 |
セキュリティグループ
LambdaSG:
Type: AWS::EC2::SecurityGroup
Properties:
VpcId: !Ref VPC
SecurityGroupEgress:
- IpProtocol: tcp
FromPort: 5432
ToPort: 5432
DestinationSecurityGroupId: !Ref RDSSG # RDS への接続のみ許可
VPC の背景や設計思想は関連書籍に詳しい。