1. Amazon VPCとは
Amazon Virtual Private Cloud (Amazon VPC) は、仮想ネットワーク環境を構成し、リソースの配置、接続性、セキュリティをフルに制御することができるサービスです。
- リージョンをまたいでVPCを作成することはできません。
- 機械学習用途では、SageMaker StudioやTrainingジョブの接続先としてVPCが必要となるケースが多くあります。
1.1 VPC Ingress Routing
- すべてのリージョンで利用可能
- セキュリティアプライアンス(例:ファイアウォールアプライアンス)を介したルーティング制御が可能
2.サブネット
サブネットはVPC内のアドレス空間の分割単位で、各サブネットは特定のAZ(アベイラビリティゾーン)に属します。
ルートテーブルはサブネットの単位で定義することが出来ます。
パブリックとプライベートがあります。
パブリックサブネットは、インターネットゲートウェイを向く経路があるサブネットのことです。
各サブネットは単一のAZ内で設定されます。同一のVPCにおいて、パブリックかプライベートにかかわらず、デフォルト設定で全てのサブネットが相互接続可能です。
2.1.サブネット作成に対するCIDR(サイダー)の設定
一般論として、ロックする範囲を指定するので、小さいほど使用可能なIPアドレスの範囲が大きくなります。
/24の設定により、256個のIPアドレスを利用できます。/23なら512、/25なら128です。
Amazon VPCの仕様として、プレフィックス長として16以上を指定する必要があります。
CIDR範囲では国の特定ができません。
3.Gateway
Gatewayは、VPCの内部と外部との通信のやり取りをする出口です。
3.1.NAT(ナット)ゲートウェイ(インターネットを使いたい)
NAT Gatewayは高可用性設計が可能だが、時間・データ転送に応じて課金されるため、MLジョブにおけるコストに注意
3.2.インターネットゲートウェイ(IGW)(インターネットを使いたい)
VPC内に配置されたインスタンスからインターネットの双方向の通信を可能にする VPC コンポーネント。
NATゲートウェイはプライベートネットワーク内のデバイスが外部と通信できるようにIPアドレスを変換するのに対し、インターネットゲートウェイはプライベートネットワークを外部のネットワークと接続し、セキュリティ機能を提供します。
例えば、インターネットからVPC内のEC2インスタンスへアクセスする際に用います。
Publicサブネットに設置された推論APIサーバ(例:SageMaker Endpoint)への外部からのアクセスに使用。
3.3.AWS Transit Gateway
中央ハブを介して 複数のVPC とオンプレミスネットワークを接続することができるVPC間の接続機能。
3.4.Site-to-Site VPN (サイト間VPN)接続を構築するために必要なコンポーネント
- カスタマーゲートウェイ
- 仮想プライベートゲートウェイ(VGW)
VGWはVPCごとに1つだけ紐づけることが出来ます。
10TBほどのデータ転送はVPN接続による転送によって72時間で完了させることができます。
3.5.Egress-Onlyインターネットゲートウェイ
NATゲートウェイとインターネットゲートウェイの特徴を併せ持つIPv6専用の機能です。VPCからインターネットへ(Egress)の接続開始要求は通しますが、インターネットからVPCへ(Ingress)の接続開始要求は通しません。
4. (VPC)エンドポイント
S3やDynamoDBに用いるゲートウェイ型(SDGと覚える?)と、それ以外の大多数に用いるインターフェース型があります。
ゲートウェイ型はエンドポイント経由の通信料は無料ですが、インターフェイス型は時間あたりのエンドポイントの利用料とGBあたりの通信料がかかります。
4.1.VPCゲートウェイエンドポイント
本によってはゲートウェイVPCエンドポイントと書いてあることもあります。
プライベートサブネット内のEC2インスタンスからインターネットを経由せずにS3を利用するには、S3バケット用のVPCエンドポイント(ゲートウェイエンドポイント)を作成し、ルートテーブルにS3のターゲットを設定します。
- VPCエンドポイントポリシーで、特定のS3バケットへの通信のみを許可します
- S3のバケットポリシーで、特定のVPCエンドポイントからの通信のみを許可します
VPCゲートウェイエンドポイントはEC2インスタンスが配置されているアベイラビリティゾーンに構成するのではなく、VPCに構成します。
4.2.インターフェイス VPC エンドポイント
以前はAmazon S3はインターフェースエンドポイントに対応していませんでしたが、2021年からAWS PrivateLink for Amazon S3という新機能が追加され、AWS PrivateLink for Amazon S3 ではインターフェイスエンドポイントを利用して、VPCからAmazon S3バケットにアクセスができるようになりました。
S3に対しインターフェイス VPC エンドポイント (インターフェイスエンドポイント) を利用する場合は、 Amazon S3 へのアクセスをコントロールするエンドポイントポリシーをアタッチすることが必要。
- ENI(Elastic Network Interface)を介してプライベート接続
- SageMaker、CloudWatch Logsなど多数のサービスに対応
- PrivateLinkの実体として使われる
4.3.AWS PrivateLinkとインターフェースVPCエンドポイントの関係
AWS PrivateLinkは、VPC内から他のVPCやオンプレミス環境、AWSのサービスにプライベートにアクセスするための技術です。PrivateLinkを使用することで、トラフィックがインターネットを経由せずにプライベートネットワーク内で完結します。
例えば、プライベートサブネット内のEC2インスタンスからAmazon CloudWatch Logsへプライベートネットワーク経由でログを送信するときに用います。
インターフェースVPCエンドポイントは、AWS PrivateLinkを利用するために作成するVPC内のエラスティックネットワークインターフェース(ENI)です。このエンドポイントは、指定したAWSサービスやカスタムサービスへのプライベートアクセスを提供します。
NRIのSAAの本では、インターフェイスエンドポイントのことをAWS PrivateLinkと言っています。
5.ピアリング(ピア接続)
2つのVPC間でプライベート接続する機能。リージョン間のピア接続はAWSの専用線であるため、高速でセキュアに接続できます。
異なるアカウントにあるVPC間でもピアリングすることができます。
6. DNS Hostnames
- VPCのDNS Hostnames設定が無効だと、インスタンスがDNS名を取得できず不便
- SageMakerなどのサービスは内部で名前解決を行うため、有効化が推奨
7.本番環境と開発環境への分割
VPCを本番環境と開発環境とに分割することで特定のVPC下でのアクセスを限定するIAMポリシーによってアクセス可能なVPC範囲を絞ることができます。
8.VPCメッシュ
AWS VPCメッシュは、VPC(Virtual Private Cloud)間の通信を可能にするネットワーキングのパターンで、特にサービス間の通信を効率的に行うために利用されます。これにより、複数のVPC間でリソースを安全に接続し、データのフローを最適化することができます。
9.ENI(Elastic Network Interface)
ENIはAWSリソースのネットワークインターフェイスです。オンプレミス環境におけるNIC(Network Interface Card)と同じ役割を持ち、VPC内のEC2インスタンスやNATゲートウェイなどに割り当てて利用します。
9.1.VPCフローログ
ネットワークトラフィックを取得し、CloudWatchでモニタリングできるようにする機能。
10. VPCとMLサービスの接続パターン例
サービス | 接続方式 | 注意点 |
---|---|---|
SageMaker Studio | VPC + Private Subnet + S3 Gateway VPCE | EBS/S3間の通信セキュア化 |
SageMaker Inference Endpoint | Public/Private Subnet + PrivateLink | 外部API化と制御の両立 |
Glue Job | VPC + Interface VPCE + NAT | データ転送コストに注意 |
CloudWatch Logs | Interface Endpoint + Flow Logs | 学習ジョブの監視 |