AWS VPCネットワーク-VPCエンドポイント、VPCピアリング構成



# はじめに
色々作っても、現場で見れないとちょっと困る時があるので書いていくことに。  
今回は、パブリック-プライベート-VPCエンドポイント-S3 ＋ VPCピアリング構成。

前回の続きになります→[前回](https://qiita.com/lamune-kiba-gaeru/items/2abc6452d7e609bf6a49)


## 目的
VPC-VPCエンドポイント-S3＋VPCピアリングの接続を構築してネットワークを理解する。


## やること・やらないこと
  - やること  
    VPC-EC2インスタンスのパプリック-プライベート-VPCエンドポイント＋VPCピアリング構成の作成とネットワーク周りの設定  
    構成要件  
    - S3、別のVPCへのインターネットを介さないプライベートな接続が可能であること
    - ルートテーブル、セキュリティグループの設定値と通信の流れを図にする
   - やらないこと  
    コンソール操作の手順の記載（UIがコロコロ変わるため）  
    VPC、ルートテーブル、セキュリティグループ以外の各サービスの解説や設定（ALBとは、EC2とは、VPCとは、S3とは）とか  
    EC2接続のSGなどの設定

# 構成図
![no4_ep1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3994667/d14f07a5-7cab-4475-a3a4-e57c20a6a716.png)

VPCを2つ作成。マルチAZ構成のVPC（画像の左）については[前回](https://qiita.com/lamune-kiba-gaeru/items/2abc6452d7e609bf6a49)をご覧ください。  

これをVPC Aと呼びます。  

ここから追加分  
東京リージョンにS3を作成し、VPCエンドポイント（ゲートウェイ型）を作成。

VPCをもう一つ作成します。
これをVPC Bと呼びます

パブリックサブネットとプライベートサブネットを1つ作成し、パブリックサブネットにNATGateway、プライベートサブネットの中でEC2を起動します。
そしてVPC　AとVPC Bのピアリング接続を作成します。


### 設定値

構成図の下部にセキュリティグループ、ルートテーブルついての解説

### VPC A (イメージ左のマルチAZ構成VPC)
  - セキュリティグループ  
    1. ALBにアタッチ  
      インバウンドルールは作業端末IPからのHTTP(80)通信を許可  
      アウトバウンドはデフォルトのため記載を省略  
          | タイプ | プロトコル | ポート範囲 | ソース |
          | :---: | :---: | :---: | :---: | 
          | HTTP | TCP | 80 | 0.0.0.0/0 | 

    2. EC2インスタンスにアタッチ  
      インバウンドルールはALBのセキュリティグループからのHTTP(80)通信を許可  
          | タイプ | プロトコル | ポート範囲 | ソース |
          | :---: | :---: | :---: | :---: | 
          | HTTP | TCP | 80 | ALBのセキュリティグループ | 

        アウトバウンドはデフォルトのため記載を省略  

  
  - ルートテーブル
    1. パブリックサブネットに関連付け  
          | 送信先 | ターゲット |
          | :---: | :---: | 
          | 0.0.0.0/0 | IGW | 
          | ::/0 | IGW | IPv6のみ | 
          | VPCのCIDR | local | 

          ルールは上から
          - IGWからのIPv4通信のルート
          - IGWからのIPv6通信のルート(IPv6のみ)
          - デフォルトルート

    2. プライベートサブネットに関連付け  
          | 送信先 | ターゲット |
          | :---: | :---: | 
          | S3エンドポイントのマネージドプレフィックス | VPCエンドポイント | 
          | VPC BのCIDR | VPCピアリング | 
          | 0.0.0.0/0 | NatGateway | 
          | ::/0 | Egress-Only インターネットゲートウェイ | 
          | VPCのCIDR | local | 
          
          S3ゲートウェイエンドポイントのルートを設定
          VPC AのEC2からVPC Bのルートを設定
            Egress-Only インターネットゲートウェイはIPv6の場合のみ
          

### VPC B (イメージ右のシングルAZ構成VPC)
  - セキュリティグループ  
    1. EC2インスタンスにアタッチ  
      インバウンドルールはVPC A CIDRからのHTTP(80)通信を許可  
      アウトバウンドはデフォルトのため記載を省略  
          | タイプ | プロトコル | ポート範囲 | ソース |
          | :---: | :---: | :---: | :---: | 
          | HTTP | TCP | 80 | VPC A CIDR | 


  - ルートテーブル   VPC A もVPC Bも同じ
    1. パブリックサブネットに関連付け  
          | 送信先 | ターゲット |
          | :---: | :---: | 
          | 0.0.0.0/0 | IGW | 
          | ::/0 | IGW | IPv6のみ | 
          | VPCのCIDR | local | 

          ルールは上から
          - IGWからのIPv4通信のルート
          - IGWからのIPv6通信のルート(IPv6のみ)
          - デフォルトルート

    2. プライベートサブネットに関連付け  
          | 送信先 | ターゲット |
          | :---: | :---: | 
          | VPC AのCIDR | VPCピアリング | 
          | 0.0.0.0/0 | NatGateway | 
          | ::/0 | Egress-Only インターネットゲートウェイ | 
          | VPCのCIDR | local | 
          Egress-Only インターネットゲートウェイはIPv6の場合のみ

これでVPC AのEC2からVPC BのEC2に接続が可能となります。


# ネットワークルート
![no4_ep2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3994667/a1b2f02e-66d9-4ad0-8c14-62223dade073.png)

VPC Aのネットワークアクセスについては[前回]()をご覧ください  

### EC2からS3へのアクセス
  これはVPCエンドポイント（ゲートウェイ型）での接続となる  
  インターネット経由ではなく、AWSの内部ネットワークを利用して接続することが可能になるためセキュアな通信と実現できる  
  EC2-VPCエンドポイント-S3 と言う通信の流れになります

### VPC　AのEC2からVPC　BのEC2のアクセス
  VPC Aから別のVPC Bに対してインターネットを経由しない接続が可能となる  
  VPC AのEC2-VPC BのEC2 と言う通信の流れになります


# 今回作成した成果物
今回は、EC2内部からS3や別VPCのEC2へとアクセスするため、ネットワークとは別にSSM接続やEC2のロール構成が含まれます
解説外の構成が多いため、詳細はGitリンクのREADMEを参照ください

以下にterraformとCloudFormationスタックとして作成しGitリンクを貼り付け  
ALB、EC2インスタンス、Nat、EIPには料金発生してきますのでご注意下さい

### terraform　
- [IPv4](https://github.com/lamne-kiba-gaeru/aws-network/tree/083cce16124a71dca9e119dbcebc11698e633ce3/003-aws-network/ipv4-cfn-template)
- [IPv6(デュアルスタック)](https://github.com/lamne-kiba-gaeru/aws-network/tree/083cce16124a71dca9e119dbcebc11698e633ce3/003-aws-network/ipv6-cfn-template)

### cloudformation
- [IPv4](https://github.com/lamne-kiba-gaeru/aws-network/tree/083cce16124a71dca9e119dbcebc11698e633ce3/003-aws-network/trraform-ipv4)
- [IPv6(デュアルスタック)](https://github.com/lamne-kiba-gaeru/aws-network/tree/083cce16124a71dca9e119dbcebc11698e633ce3/003-aws-network/trraform-ipv6)