0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2を利用してウェブサイトを公開する方法①VPC作成編

0
Posted at

この記事ではEC2を利用してウェブサイトを公開する方法のフェーズ1として、VPCの作成から行っていきます。
EC2を利用してウェブサイトを公開する方法(モノローグ)

構成図(モノローグと同じものです)

EC2ウェブサイト公開最低構成.drawio.png

作成するもの

VPC

AWS上に作成する、論理的に隔離された仮想ネットワーク環境です。
このVPCの中にSubnetを作成したり、NAT GatewayやEC2(ウェブサーバー)などのリソースを配置して、自分専用のインフラ環境を構築していきます。

VPCを作成する際は、10.0.0.0/16のようにCIDRを指定して、ネットワークのIPアドレス範囲を決定します。ここで指定した範囲のIPアドレスは、このVPCが占有して利用されます。

Subnet

VPCという大きなネットワーク空間を、用途ごとに分割した「グループ」のことです。
「インターネットに公開する領域」と「内部に隠す領域」を明確に分離することでセキュアな環境を構築します。

本構成では、以下の2種類のSubnetを作成します。

  • Public Subnet:
    IGWへのルートを持ち、外部と直接通信可能なエリア。ALBや踏み台サーバーを配置します。

  • Private Subnet:
    インターネットからの直接アクセスを遮断したエリア。EC2やRDSを配置し、セキュリティを高めます。
    EC2などが外部と通信を行いたい場合(apacheなどのインストールやアップデート)NATなどを経由して通信を行います。

Internet Gateway (IGW)

論理的に隔離された仮想ネットワーク環境であるVPCが外部と通信を行うためのゲートのようなものです。

NAT Gateway

Private Subnetにあるリソースがインターネットと通信を行うための中継器です。
IGWとの大きな違いとして一方通行という特徴があります。
これにより、外部からの直接のアクセスを遮断しつつ、外部に対してアクセスが行えます。

Elastic IP (EIP)

インターネットからアクセス可能な固定のパブリックIPv4アドレスです。
通常、AWSのリソース(EC2など)を再起動するとパブリックIPアドレスは変わってしまうことがありますが、EIPを使用することでアドレスを固定できます。

Route Table

Subnetからの通信を「どこに流すか」を決めるルールの集合です。
SubnetにPrivateとPublicの二種類があると説明しましたが、そのSubnetがPrivateとPublicのどちらになるのかはここでのルート設定によって決まります。
本構成では、以下の3つのRoute Tableを作成します。

  • Subnet - IGW
    SubnetとIGW間のルートを設定します。
    これによりSubnetは外部と直接通信できるためPublic Subnetになります。
  • Subnet - NAT
    SubnetとNAT間のルートを設定します。
    これによりSubnetは外部と直接通信はできませんが、NATを経由して外部と通信できるPrivate Subnetになります。
  • Subnet - local
    Subnetとlocal間の通信を設定します。
    これによりSubnetはこのVPCの外部と通信することができず、Private Subnetになります。

Security Group(SG)

インスタンス(EC2やRDSなど)単位で設定する仮想ファイアウォールです。
ネットワークの「サブネット」単位ではなく、サーバー1台1台に対して「どの通信を通し、どの通信を拒否するか」を制御します。
SGでは接続の許可対象をIPアドレスだけでなくSGを指定することができるので特定のSGが付与されているリソースといった様に指定ができます。
本構成では、以下の4種類のsgを作成します。

  • ec2-bastion
    踏み台サーバ用のsg
    自分のIPアドレスからのアクセスを許可します。
  • ec2-web
    webサーバ用のsg
    ec2-bastionのsgが付与されたリソースからの22ポートの通信を許可します。
    ec2-elbのsgが付与されたリソースからの80ポートの通信を許可します。
  • rds
    ec2-webのsgが付与されたリソースからの3306ポートの通信を許可します。
  • elb
    全IPからの80,443ポートの通信を許可します。

構築作業

ルートテーブルIDとかは絶対に人に見せたらいけないものとかではなく、直接的にセキュリティリスクにはなりませんが、あまり見せたいものでもないので隠しています。

VPC作成

  1. VPCダッシュボードからVPCを作成
    image.png

  2. 設定を入力
    作成するリソースはVPCのみです。
    (VPCなどを選択するとSubnetやRoute Tableなどまとめて作成してくれますが、マニュアルのほうが自由が利きますし、マニュアルで出来た方がいいので今回はVPCのみのほうを紹介していきます。)
    後は、任意の名前とCIDRブロックを入力してください。画像と全く同じでも大丈夫です。
    image.png

  3. 作成ボタンを押したら完成

Subnet作成

  1. サブネットを作成
    VPCダッシュボードの仮想プライベートクラウド>サブネットからサブネット作成ができます。
    image.png

  2. VPCの選択
     作成したVPCを選択します。
    image.png

  3. サブネットの設定
    image.png
    上の画像のようにサブネットの設定項目が出てくるので入力していきます。
    image.png
    上の画像が入力例です。新しいサブネットを追加でサブネットを追加できます。
    下記の6つを設定してください。

サブネット名 アベイラビリティーゾーン IPv4 サブネット CIDR ブロック
web-test-public-a-1 ap-northeast-1a 10.10.1.0/24
web-test-public-c-1 ap-northeast-1c 10.10.2.0/24
web-test-private-a-1 ap-northeast-1a 10.10.11.0/24
web-test-private-c-1 ap-northeast-1c 10.10.12.0/24
web-test-private-a-2 ap-northeast-1a 10.10.13.0/24
web-test-private-c-2 ap-northeast-1c 10.10.14.0/24

下の画像の様にSubnetが作成されます。
image.png

Internet Gateway (IGW)作成

  1. IGW作成
    Subnet同様にインターネットゲートウェイからインターネットゲートウェイの作成
    image.png
    名前を入力するだけで作れます
    image.png
  2. VPCにアタッチ
    作成したIGWを選択してアクションからVPCにアタッチ
    image.png
    VPCを選択する。
    image.png

NAT Gateway作成

  1. Subnet同様にNATゲートウェイからNATゲートウェイを作成
     image.png

  2. 設定の入力
    アベイラビリティーモードはゾーナルで、サブネットはweb-test-public-c-1に設定
    https___qiita-image-store.s3.ap-northeast-1.amazonaws.com_0_4383951_189bc2f0-fb27-4115-ad29-02143690f981.png

  3. Elastic IPを割り当てボタンを押す
    自動でEIPが作成されて割り当てられます。
    image.png

Route Table作成

  1. VPC作成時点で自動で作られるrtbをSubnet - IGWのrtbにする。
    VPCダッシュボードのルートテーブルから作成したVPCに紐づいたrtbを選択し、アクションからルートを編集
    image.png
    1-1. IGWへのルートを追加する。
    ルートを追加して、送信先を0.0.0.0/0のすべて、ターゲットをインターネットゲートウェイにする。
    作成したIGWを指定して、変更を保存。
    image.png
    1-2. サブネットを関連付ける
    サブネットの関連付けを確認すると明示的なサブネットの関連付けが無いはずです。
    image.png
    サブネットの関連付けを編集から関連付けを行います。
    今回はSubnet - IGWでPublic Subnetの為のrtbなので、web-test-public-c-1web-test-public-a-1を関連付けます。
    image.png
     
  2. Subnet - NATのrtbを作成する
    ルートテーブルを作成から名前とVPCを選択して作成。
    image.png
    2-1. ルートを編集する
     ルートを追加して、送信先を0.0.0.0/0のすべて、ターゲットをNATゲートウェイにする。
    作成したNATを指定して、変更を保存。
    image.png
    2-2. サブネットの関連付け
    Subnet - NATでEC2のPrivate Subnetの為のrtbなので、web-test-private-c-1web-test-private-a-1を関連付けます。
    image.png
     
  3. Subnet - localのrtbを作成する
    ルートテーブルを作成から名前とVPCを選択して作成。
    image.png
    3-1. サブネットの関連付け
    Subnet - localでRDSのPrivate Subnetの為のrtbなので、web-test-private-c-2web-test-private-a-2を関連付けます。
    image.png

Security Group(SG)作成

  1. elbのsgを作成する
    VPCダッシュボードのセキュリティグループ>セキュリティグループを作成から作成
    image.png
    インバウンドルールに80,443ポートに対しての全IPのアクセスを許可
    image.png

  2. ec2-bastionのsgを作成する
    インバウンドルールに22ポートに対してマイIP(自分の今AWSにアクセスしているPCのグローバルIPアドレス)からのアクセスを許可。
    ※もし複数IPからのアクセスを許可したかったり、自分のグローバルIPアドレスがよく変更される場合マネージドプレフィックスリストを作成して使用すると便利です。
    image.png

  3. ec2-webのsgを作成する
    インバウンドルールに22ポートに対してsg(ec2-bastion)からのアクセスを許可
    インバウンドルールに80ポートに対してsg(elb)からのアクセスを許可
    image.png

  4. rdsのsgを作成する
    インバウンドルールに3306ポートに対してsg(ec2-web)からのアクセスを許可
    image.png

まとめ

長くなりましたが、今回はEC2を利用してウェブサイトを公開するためのネットワーク環境を作成しました。
これで土台部分は完成です。
次回からはEC2やELBなどリソースの作成と設定を行っていきます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?