VPC

AWS 上に論理的に隔離されたプライベートネットワークを構築するサービス

AWSネットワーク

VPC とは

VPC (Virtual Private Cloud) は、AWS 上に論理的に隔離されたプライベートネットワークを構築するサービスである。IP アドレス範囲、サブネット、ルートテーブル、セキュリティグループを自由に設定し、リソースのネットワーク環境を制御する。

VPC の構成要素

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

この記事は役に立ちましたか?

関連用語

関連する記事