AWS - How to implement end to end VPC Endpoint service

Contents

AWS - How to implement end to end VPC Endpoint service#

VPC Endpoint について#

VPC Endpoint とは#

異なる VPC、または異なるリージョンに配置された AWS サービス同士の通信を、インターネットを経由することなく Amazon のネットワーク内で繋ぐサービス。

VPC Endpoint の機能#

Interface Endpoint、Gateway Load Balancer Endpoint と Gateway Endpoint の3つの機能が提供されている。

  • Interface Endpoint: VPC内にインターフェイスを設置して、インターネットゲートウェイを介さずに、VPC外(AWS通信網内)のサービスにアクセスするための機能。

  • Gateway Load Balancer Endpoint: サブネットの IP アドレス範囲のプライベート IP アドレスを持つ Elastic Network Interface、トラフィックをインターセプトし、Gateway Load Balancer を使用して設定したネットワークまたはセキュリティサービスにルーティングするエントリポイントとして機能。

  • Gateway Endpoint: VPCにゲートウェイ(門)を設置することで、インターネットを介さずに、VPC内のサービスとVPC外(AWS通信網内)のサービスの通信を実現する機能。(AmazonS3 または DynamoDB のいずれかに向かう)

各種 VPC Endpoint の使用料金#

VPC Endpoint を利用するメリット#

  1. 実質的なインターネットとの出入口を封鎖して、セキュアな経路が実現できる。IGW(Internet Gateway)、NATGW が不要になる。

  2. 費用対効果。時間課金は無料か1/6に削減できる。上記、「各種 VPC Endpoint の使用料金」を確認してもらえればわかると思われている。東京リージョンで1時間あたり Interface Endpoint の使用料金は、$0.014 になっており、それに対して、NATゲートウェイの場合、$0.62 である(同じ東京リージョンで1時間に処理データ1GBあたり)。

VPC Endpoint 利用シーン#

ユーザーは多くのVPCを管理している場合、プライベートサブネットにあるリソースからAWSのリソースにインターネットを経由せず、セキュアにアクセスする。また、大量に S3 や DynamoDB と通信が発生する場合、VPC Endpoint を使ったら、費用対効果が高くなる。

実践デモ - VPC Endpoint で 2つの VPC 間にエンドツーエンドの接続を設定する#

Required Time: 1h30m

Architecture#

こちらの構築図で VPC Endpoint の実践デモを作成してみよう。 endpoint_architecture_demo

Step 1. Create a service provider VPC#

  • Name tag: Service_Network

  • IPv4 CIDR: 20.0.0.0/16

endpoint_architecture_demo

Step 2. Create and attach an IGW#

1. Create Service IGW#

  • Name tag: Service_IGW

endpoint_architecture_demo

2. Attach Service IGW#

  • Available VPCs: Service_Network

endpoint_architecture_demo

Step 3. Create a Public subnet#

  • VPC ID: (プールダウンから選択) Service_Network

  • Subnet name: Service_Public_subnet

  • Availability Zone: us-east-1a

  • IPv4 CIDR block: 20.0.1.0/24

endpoint_architecture_demo

Step 4. Create a Public Route Table and associate it with the subnet#

1. Create Service Public Route Table#

  • Name tag: Service_PublicRT

endpoint_architecture_demo

2. Associate Route Table with Service Public subnet#

  • VPC: (一覧から選択) Service_Network

endpoint_architecture_demo

Step 5. Add the public Route in the Route table#

  • Destination: 0.0.0.0/0

  • Target: (一覧から選択) Internet Gateway

endpoint_architecture_demo

Step 6. Create an EC2 Instance#

1. Configure Instance Detail(Subnet)#

  • Network: Service_Network

  • Subnet: Service_Public_subnet

  • Auto-assign Public IP: Enable

2. Configure Advanced Details#

  • User data:

    #!/bin/bash
    sudo su
    
    yum update -y
    
    yum install httpd -y
    
    systemctl start httpd
    
    systemctl enable httpd
    
    echo "<html><h1> Welcome to Hangyuzs Server 1 </h1><html>" >> /var/www/html/index.html
    
    systemctl restart http
    

3. Configure Security Group#

  • Create security group

  • Security group name: Webserver_sg

  • Description: Security group for Webserver

  • Add Inbound security groups rules

    • rule 1

      • Type: ssh

      • Source type: Anywhere

    • rule 2

      • Type: HTTP

      • Source type: Anywhere

    • rule 3

      • Type: HTTPS

      • Source type: Anywhere

endpoint_architecture_demo

endpoint_architecture_demo

4. Launch instance#

endpoint_architecture_demo

Step 7. Create a Network LoadBalancer#

1. Configure LoadBalancer#

  • Load balancer name: MyNetwork-LB

  • Schema: Internet-facing

  • Ip address type: IPv4

  • VPC: Service_Network

  • Mappings: us-east-1a

  • Subnet: Service_Public_subnet

  • Listeners and routing:

endpoint_architecture_demo

endpoint_architecture_demo

2. Create target group#

  • Basic Configuration: Instances

  • Target group name: MyNetwork-TG

  • Protocl: TCP

  • Port: 80

  • VPC: Service_Network

  • Interval: 10 seconds

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

3. Register targets#

  • Webserver1 を選択し、「Include as pending below」をクリックして、「Create target group」を押す。

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

4. DNS name#

  • 重要: Target group に遷移して、Targets タブのほう、Health Status が healthy になるのを待つ。

endpoint_architecture_demo

  • DNS name に記載してある A Record をコピーして、ブラウザ上で確認する。下記のように表示される。

 Welcome to Hangyuzs Server 1 

endpoint_architecture_demo

Step 8. Create an Endpoint service#

  • Load balancer name: MyNetwork-LB のチェックを入れる。

  • Additional settings: 「Acceptance required」 のチェックを入れる。

endpoint_architecture_demo

  • Service name をメモする。

endpoint_architecture_demo

Step 9. Create a customer VPC#

  • Name tag: Customer_Network

  • IPv4 CIDR: 10.0.0.0/16

endpoint_architecture_demo

Step 10. Create and attach an Internet Gateway#

1. Create Customer IGW#

  • Name tag: Customer_IGW

endpoint_architecture_demo

2. Attach Customer IGW#

  • Available VPCs: Customer_Network

endpoint_architecture_demo

Step 11. Create a Public subnet#

  • VPC ID: (プールダウンから選択) Customer_Network

  • Subnet name: Customer_Public_subnet

  • Availability Zone: us-east-1a

  • IPv4 CIDR block: 10.0.1.0/24

endpoint_architecture_demo

Step 12. Create a Public Route Table and associate it with the subnet#

1. Create Customer Public Route Table#

  • Name tag: Customer_PublicRT

endpoint_architecture_demo

2. Associate Route Table with Customer Public subnet#

  • VPC: (一覧から選択) Customer_Network

endpoint_architecture_demo

Step 13. Add the public Route in the Route table#

  • Destination: 0.0.0.0/0

  • Target: (一覧から選択) Internet Gateway

endpoint_architecture_demo

Step 14. Create an EC2 Instance#

1. Configure Instance Detail(Customer)#

  • Network: Customer_Network

  • Subnet: Customer_Public_subnet

  • Auto-assign Public IP: Enable

2. Configure Security Group#

  • Create security group

  • Security group name: Customer_EC2_SG

  • Description: Security group for Customer EC2

  • Add Inbound security groups rules

    • rule 1

      • Type: ssh

      • Source type: Anywhere

    • rule 2

      • Type: HTTP

      • Source type: Anywhere

3. Launch instance#

  • Customer EC2 の IPv4 アドレスをメモする。

endpoint_architecture_demo

Step 15. Create a VPC Endpoint#

1. Configure Endpoint#

  • Security category: Other endpoint services

  • Service settings:

    • Step 8 でメモした Service name をこちらにペストする。

    • Verify service する。

  • VPC: (プールダウンから選択) Customer_Network

  • Security groups: (一覧から選択) Customer_EC2_SG

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

  • Endpoint のステータスを確認する。

endpoint_architecture_demo

2. Accept endpoint connection request#

  • Endpoint Connections を設定して、Endpoint のステータスが Available になるまで待つ。

endpoint_architecture_demo

endpoint_architecture_demo

  • Endpoint のIPv4 アドレスをメモする。

endpoint_architecture_demo

Step 16. Test the connectivity#

  • SSH で Customer EC2 にアクセスして、curl で接続状況を確認する。

ssh -i {keypair}.pem ec2-user@{Cusotmer_EC2_IPv4_Address}
curl {Endpoint_IPv4_Address}
  • 下記の内容が返される。

<html><h1> Welcome to Hangyuzs Server 1 </h1></html>

endpoint_architecture_demo

Step 17. Delete AWS Resources#

  • リソースを削除する必要がある場合、下記の順番で行えればきれいに削除できる。

    • EC2 Instance (2つ)

    • VPC Endpoint

    • Endpoint Service

    • NLB

    • Target Groups

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo

endpoint_architecture_demo