Amazon VPC(仮想プライベートクラウド)



# 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の仕様として、プレフィックス長として<font color="red">**16以上**</font>を指定する必要があります。

CIDR範囲では国の特定ができません。


# 3.Gateway

Gatewayは、VPCの内部と外部との通信のやり取りをする出口です。

### [3.1.NAT(ナット)ゲートウェイ(<font color="red">インターネットを使いたい</font>)](https://qiita.com/naoya_ok/items/fe4c8a6d249fde29fa5f)

NAT Gatewayは高可用性設計が可能だが、**時間・データ転送に応じて課金されるため、MLジョブにおけるコストに注意**

### 3.2.インターネットゲートウェイ(IGW)(インターネットを使いたい)

VPC内に配置されたインスタンスからインターネットの<font color="red">**双方向の**</font>通信を可能にする VPC コンポーネント。

NATゲートウェイはプライベートネットワーク内のデバイスが外部と通信できるようにIPアドレスを変換するのに対し、インターネットゲートウェイはプライベートネットワークを外部のネットワークと接続し、セキュリティ機能を提供します。

例えば、<font color="red">**インターネットから**</font>VPC内のEC2インスタンスへアクセスする際に用います。


Publicサブネットに設置された推論APIサーバ（例：SageMaker Endpoint）への外部からのアクセスに使用。


### 3.3.AWS Transit Gateway

中央ハブを介して 複数のVPC とオンプレミスネットワークを接続することができるVPC間の接続機能。

###  3.4.Site-to-Site VPN (サイト間VPN)接続を構築するために必要なコンポーネント
- カスタマーゲートウェイ
- 仮想プライベートゲートウェイ(VGW)

VGWはVPCごとに１つだけ紐づけることが出来ます。
10TBほどのデータ転送はVPN接続による転送によって72時間で完了させることができます。


### 3.5.Egress-Onlyインターネットゲートウェイ

NATゲートウェイとインターネットゲートウェイの特徴を併せ持つIPv6専用の機能です。VPCからインターネットへ（Egress）の接続開始要求は通しますが、インターネットからVPCへ（Ingress）の接続開始要求は通しません。

# 4. (VPC)エンドポイント

S3やDynamoDBに用いる**ゲートウェイ型**(SDGと覚える?)と、それ以外の大多数に用いる**インターフェース型**があります。

ゲートウェイ型はエンドポイント経由の通信料は<font color="red">**無料**</font>ですが、インターフェイス型は時間あたりのエンドポイントの利用料とGBあたりの通信料がかかります。

### 4.1.VPCゲートウェイエンドポイント

本によってはゲートウェイVPCエンドポイントと書いてあることもあります。

:::note info
**プライベートサブネット内のEC2インスタンスからインターネットを経由せずにS3を利用する**には、S3バケット用のVPCエンドポイント(ゲートウェイエンドポイント)を作成し、ルートテーブルにS3のターゲットを設定します。
- VPCエンドポイントポリシーで、特定のS3バケットへの通信のみを許可します
- S3のバケットポリシーで、特定のVPCエンドポイントからの通信のみを許可します
:::

VPCゲートウェイエンドポイントはEC2インスタンスが配置されているアベイラビリティゾーンに構成するのではなく、<font color="red">**VPCに構成します。**</font>


### 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](https://www.amazon.co.jp/AWS%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-AWS%E8%AA%8D%E5%AE%9A%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88-%E3%82%A2%E3%82%BD%E3%82%B7%E3%82%A8%E3%82%A4%E3%83%88-%E6%94%B9%E8%A8%82%E7%AC%AC3%E7%89%88-%EF%BC%A1%EF%BC%B7%EF%BC%B3%E8%AA%8D%E5%AE%9A%E8%B3%87%E6%A0%BC%E8%A9%A6%E9%A8%93%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88-%E4%BD%90%E3%80%85%E6%9C%A8-%E6%8B%93%E9%83%8E/dp/4815617945/ref=sr_1_1_sspa?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&crid=1EKKGONFDCR82&dib=eyJ2IjoiMSJ9.NlshN4ed26Z-Vl_ufO4M6ZxzcXrzTiFahiitgMM36XJ361r6E-5fZa9AC6Qf6JGVF1D0tm1lLfR4op08K4Kof9-P3q0mC8WJ8VFRbi69iTzeOENAyrQw7X0O5VoPOeM3ybFSsBKuCr3tbB_XiInIG-b_tZnJrwQ2u3bjw87YRiVhGPzK0vFt75sdG1sGWDfsGKX5cU3c0dDdgI5b3EqU-b8djcsAJw5KH5seq0NJbcfLjrZKqbuOWCh09945v6xieRmA1E-_nJhOmxSan2x3nQ5WQcQwuO06NZwLCHiArtk.Gap2sZSZ-xD_9oaz2KIn4GxwR7b480S_zVzzOx14AYo&dib_tag=se&keywords=aws+%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88&qid=1716727555&sprefix=aws+%E3%82%AF%E3%83%A9%E3%82%A6%E3%83%89%E3%83%97%E3%83%A9%E3%82%AF%E3%83%86%E3%82%A3%E3%82%B7%E3%83%A7%E3%83%8A%E3%83%BC%E3%82%BD%E3%83%AA%E3%83%A5%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%82%A2%E3%83%BC%E3%82%AD%E3%83%86%E3%82%AF%E3%83%88%2Caps%2C272&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&psc=1)の本では、インターフェイスエンドポイントのことをAWS PrivateLinkと言っています。

# 5.ピアリング(ピア接続)

２つの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 | 学習ジョブの監視 |