VPC(Virtual Private Cloud) †
- VPC EC2起動中でもSecurity Groupを変更可能。EC2 Classicでは出来ない
- EC2選択 > Actions > Networking > Change Security Group
Regional NAT Gateway: リージョンレベルのNAT Gateway †
今まで(Zone):
- private subnetからインターネットへ通信したい場合、public subnetにNAT gatewayを設置する必要があった。private subnet x3(AZ) = 1~3 NAT gatewayが必要。1個の場合は、NAT gatewayのあるAZが丸ごと死んだ場合、他のAZが問題なくても疎通できなくなる
- NAT gatewayを通るトラフィックによって課金され、かなり高価になる。prod環境用にMulti-AZ構成だと、2~3倍のコストになる。
- ルートテーブルにNAT gatewayへのルーティング追加が必要
- 料金(ap-northeast-1 東京): 1AZ = 約USD 45/月(USD USD 0.062/時間 × 1AZ × 730時間)+ 通信料(1GB = USD 0.062)
Regional NAT Gateway:
- リージョンレベルで動作。単一AZの障害を受けない
- public subnetなしで利用可能
- 料金: NAT GatewayのEIPを割り当てたAZ毎。1 AZ=1 NAT gateway構成なら以前と変わらない。元がSingleAZ構成だと、auto modeではAZの数だけNAT gatewayが増えるため価格が上がる。
- 手動でEIPを割り当ても可能(以前の使い方)、コスト削減、集約したい場合
Regional, Zonal の選択:
記事:
VPC Lattice: VPC向けのリバースプロキシサービス †
記事:
apne1-az3の廃止 †
- apne1-az3は売り切れて使えなくなったAZ。古いAWSアカウントでのみ見えていた。
- 2025年2月28日に廃止
記事:
Share VPC: subnet単位で他AWSアカウントと共有 †
記事:
使用IPアドレス数等の監視 †
- CloudWatchでNetworkAddressUsageを見るためには、VPCで明示的に有効にする必要がある
記事:
VPC Reachability Analyzer: 接続性テスト †
記事:
プレフィックスリスト: CIDRブロックを定義して、キュリティグループルール等から参照 †
Managed prefix lists: 複数CIDRの管理 †
VPC Ingress Routing †
VPC Peering: VPC同士の接続 †
VPC Endpoint †
- AWSのサービスには、VPC内/外の区別がある。
- 1 service, 1 VPC毎に一つVPC endpointがあれば良い。
- VPC RDSにアクセスするには、VPC対応したサービスが必要。例:VPC Lambda
- VPC LambdaはPrivate Subnetに配置し、デフォルトではインターネットにアクセスできない。
- VPC Lambdaがインターネットへアクセスするには、NAT Gateway(有料、高額になりやすい)をPublic Subnetに追加する。
- 今まで DynamoDB はVPC非対応だったため、NAT Gateway経由が必要だった。VPC EndpointがDynamoDBへ対応したため、NAT Gatewayは不用になった。
- VPC Endpointに付けるセキュリティグループは、専用のセキュリティグループを作った方が良い。VPC Endpointへの接続を許可するリソースをingressで指定する。
- VPC Endpointには、インタフェース型、ゲートウェイ型(S3, DynamoDBのみ)がある
設計 †
- 設計時の注意
- 後からCIDRを変更はできないので十分に考えた方が良い。rfc1918準拠等
- 他のVPCと接続したい場合(VPC peering)、CIDRが重複していると接続できない。その場合は重複を避ける。また、route tableが重複しても通信が出来ない。
- 広すぎるCIDRはVPCやサブネット数が足りなくなるので避ける。デフォルトVPCの「/16」は同設定を増やしていくには大きすぎる場合がある
- ただし、EKSではインスタンスサイズによって1台数十のIPを予約、podに1IP割り当てるため数百のIPを消費する。/24では不足するので、/16もあり。
- 小さすぎてもオートスケールするリソース(ELB, Lambda, EC2 AutoScale, etc)があるので困る。
- ブロードキャスト、マルチキャストは非対応
- apne1-az3 は避ける。売り切れているのでec2等が作れない。
- 例:
- VPC CIDR: 10.10.0.0/21
- IP range: 10.10.0.0 - 10.10.7.255
- IP数: 2048
- 最大Subnet数(1 VPC): 8
- SubnetはPublic, Privateでそれぞれ最低 3 つあれば良い。(EKS Architecture)
- 最大Public Subnet数: 4
- 最大Private Subnet数: 4
- 最大NAT gateway: 4 (Private Subnetの数だけ) コスト($45/month程)がかかるので注意。2つに減らしても良い。0だとprivate subnetからinternetへトラフィックが流れない。
- Region辺りのAZは、最大4つ程。
- AZ毎にPublic/Private Subnetを作る。AZは売り切れる事があるので、冗長性を確保したい場合 最低 3 AZは欲しい。
Private Subnet †
デフォルトではインターネットと通信ができない。
DBやCache等の外部と通信させたくないリソースを置く。
- VPC とサブネットのサイズ設定
VPC を作成する場合は、 RFC 1918 に指定されているように、プライベート IPv4 アドレス範囲から CIDR ブロック (/16 以下) を指定することをお勧めします。
10.0.0.0 - 10.255.255.255 (10/8 プレフィックス)
172.16.0.0 - 172.31.255.255 (172.16/12 プレフィックス)
192.168.0.0 - 192.168.255.255 (192.168/16 プレフィックス)
VPC NAT Gateway †
- 料金は結構高いので注意
- VPC Subnet毎に設置する事で、Outgoingトラフィックのための固定IPを持てるため、アクセス制限が厳しい環境で使える。
- VPC Lambdaの場合、internetへ通信したい場合、NAT gatewayを通すように設定する。
記事:
NAT Gatewayのコスト削減/分析 †
記事:
ClassicからVPCへの移行 †
High Availability for Amazon VPC NAT Instances †