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 の背景や設計思想は関連書籍に詳しい。

関連用語