【超初心者向け】AWSの基本的なネットワークを理解しよう
AWSは、避けて通ることはできません。しかし、沢山あるサービス、独特の用語、管理画面の操作など難しそうなものばかりで、とっつきにくいと感じている方も多くいると思います。そんな方々の参考になればと、専用サーバーしか触ったことがない筆者が、AWS上でWebサイトを公開するまでの方法を解説します。
この記事の目次
利用するAWSの基本サービス
今回は、AWSの最も基本的なネットワークを理解するために、シンプルにVPCを作成し、その中にEC2インスタンスを立ててWebサーバーとして外部に公開するまでを実践します。まずはVPCとEC2について簡単に説明を見てみましょう。
VPC
VPCとは、Virtual Private Cloudの略です。AWSの公式サイトによると、「論理的に隔離されている定義済みの仮想ネットワーク内で AWS リソースを起動」できるサービスとのこと。
引用元:Amazon VPC とは?
https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/what-is-amazon-vpc.html(2023/11/22 確認)
AWS内でユーザーがリソースを専用で使うためのネットワークの範囲であると理解しました。複数のAWSのデータセンター(※AZ)をまたいで設定できるようですし、もちろんVPC間の通信も簡単に設定できるようです。
※AZ(Availability Zones):アベイラビリティゾーンの略。「1つのAWSリージョン内でそれぞれ切り離され、冗長的な電力源、ネットワーク、そして接続機能を備えている1つ以上のデータセンター」のこと。
引用元:リージョンとアベイラビリティーゾーン
https://aws.amazon.com/jp/about-aws/global-infrastructure/regions_az/
(2023/11/22 確認)
EC2
EC2とは、Elastic Compute Cloudの略です。AWSの公式サイトによると、「事実上すべてのワークロードに対応するセキュアでサイズ変更が可能なコンピューティング性能」とのこと。
引用元:「Amazon EC2」https://aws.amazon.com/jp/ec2/(2023/11/22 確認)
なんだかよくわかりませんね。要はAWS上で便利・安全に使えるバーチャルサーバーで、そのサーバーリソースの増減も簡単にできるということのようです。
VPCの基本要素
サブネット
VPC内のIPアドレスの範囲です。ルーティングの方法によって、おおまかに以下の2種類に分けられます。
・パブリックサブネット:インターネットゲートウェイへの接続経路がある。
・プライベートサブネット:インターネットゲートウェイへの接続経路がなく、インターネットと通信するためにはNATデバイスが必要になる。
インターネットへの接続経路がある、パブリックサブネットを今回は使います。
ルートテーブル
VPC利用時の通信経路の情報・決まりごとです。オンプレでいうところのルーティングテーブルと同じと理解しました。
インターネットゲートウェイ
まさにそのまま、VPCからインターネットに接続するための出入り口のことです。
AWSでの設定作業
ここからは実際にAWS上で行う作業を解説します。今回は、AWSサービスコンソールにログインした状態から始め、シングルAZのEC2にApacheをインストールしてWebを公開するまでが作業になります。今回作成するAWSの構成はこのようになります。
全体の大まかな流れは以下となります。
- VPCの作成
- サブネットの作成
- インターネットゲートウェイの設定
- ルートテーブルの設定
- EC2インスタンスの起動
- Elastic IPを紐づける
VPCの作成
VPCのダッシュボード内で「お使いのVPC」項目をみると、初期状態でデフォルトVPCが一つ存在します。これを使って作業を進めることも可能です。しかし初心者向けである本記事では、設定を1つ1つ見ていくために新規で作成します。
初めに、ダッシュボードの 右上の「VPCを作成」をクリックします。
VPCを作成する前に構成全体を大まかに検討・設計しておく必要があります。今回は冒頭に示した通りシンプルな構成なので、以下の手順でVPCを1つ作成します。
① 「名前タグ-オプション」に任意の名前を入力(今回はmy-vpc-01とします)
② 「IPV4 CIDR」の欄に192.168.100.0/24 を入力
③ 右下の「VPCを作成」 をクリック
「VPCを作成」をクリック後、ダッシュボードに画面が遷移します。
サブネットの作成
上記のVPC 192.168.100.0/24 の中にパブリックサブネットを作成します。
① ダッシュボード左側のメニューにある「サブネット」をクリック
② ダッシュボードの右上の「サブネットを作成」をクリック
以下「サブネットを作成」画面に遷移後の作業
③ 「サブネット名」の欄に 任意の名前を入力(今回はpublic-subnetとします)
④ 「IPV4 CIDR」の欄に192.168.100.0/25を入力
⑤ 右下の「サブネットを作成」をクリック
これでパブリックサブネットができました。
インターネットゲートウェイの設定
次にインターネットゲートウェイを作成します。
① ダッシュボード左側のメニューにある「インターネットゲートウェイ」をクリック
② ダッシュボードの右上の「インターネットゲートウェイ」をクリック
以下「インターネットゲートウェイの作成」画面に遷移後の作業
③ 名前タグの箇所に任意の名前を入力(今回はmy-internetgatewayとします)
④ 右下の「インターネットゲートウェイを作成」をクリック
「インターネットゲートウェイの作成」をクリック後、ダッシュボードに画面が遷移しますが、どのVPCで使うか(アタッチするか)、設定が必要になります。
① ダッシュボード右上の「アクション▲」をクリック
② 「VPCにアタッチ」にクリック
ルートテーブルの設定
作成したインターネットゲートウェイ用のルートテーブルを作成します。
① ダッシュボード左側のメニューにある「ルートテーブル」をクリック
② ダッシュボードの右上の「ルートテーブル」をクリック
以下「ルートテーブルを作成」画面に遷移後の作業
③ 任意のものを「名前-オプション」欄に入力(今回はmy-routetable-01とします)
④ 先ほど作成したVPC(今回はmy-vpc-01)を「VPC」欄でプルダウンから選択
⑤ 右下にある「ルートテーブルを作成」をクリック
「ルートテーブルを作成」をクリック後、作ったルートテーブルの詳細ページに遷移します。ルートテーブルを作成した後はインターネットゲートウェイと紐付ける必要があります。
① 詳細ページの右下の「ルートの編集」をクリック
「ルートを編集」画面に遷移
② インターネットゲートウェイの欄をクリックし、プルダウンから、先ほど作成したインターネットゲートウェイ(今回はmy-internetgateway)を選択
③ 右下の「変更を保存」をクリック
これでルートテーブルとインターネットゲートウェイが紐づきました。
EC2インスタンスの起動
EC2ダッシュボードにて「インスタンスを起動」を押します。
・名前とタグ・・・任意にわかりやすいもの(my-ec2-01としました)
・クイックスタート>AmazonLinux>AmazonLinux 2023 AMI
・アーキテチャ・・・64bit (x64)を選択
・インスタンスタイプ・・・t2micro (無料利用枠の対象)
・キーペア名
→キーペアを作成
→キーペアを入力(任意にわかりやすいもの:my-ec2-01-keyとしました)
→キーペアのタイプ RSA を選択
→プライベートキファイル形式 .pem を選択
「キーペアを作成」を押してクライアントPCに保存します。
※キーペア・・・EC2 インスタンスへのSSH接続時に身分証明として使用するセキュリティ認証情報。 秘密鍵と公開鍵が含まれる。
・ネットワーク設定
VPC・・・作成したもの(my-vpc-01)を選択
サブネット・・・作成した、パブリックサブネットを選択
パブリックIPの自動割り当て・・・無効化
・ファイアウォール(セキュリティグループ)
「セキュリティグループを作成」を選択
→ssh の接続元を限定(自分のIPを選択)
http/https の接続元を公開(0.0.0.0/0 を選択)
・ストレージを設定
8GiB(デフォルト表示のまま)
「インスタンスを起動」を押して、EC2が起動したことを確認します。
Elastic IPを紐づける
① EC2ダッシュボードの左側のメニューから、Elastic IP を選択
② ダッシュボード右上の「Elastic IPを割り当てる」をクリック
以下「Elastic IPを割り当てる」画面に遷移後の作業
③ 右下の「割り当て」をクリック
画面がダッシュボードに遷移するので、割り当てられたElastic IPを、作成したEC2インスタンスに関連付けます。
① ダッシュボード内で、先ほど割り当てたElastic IP アドレスの行を選択
② ダッシュボード右上の「アクション△」をクリック
③ 「Elastic IPアドレスの関連付け」をクリック
「Elastic IPアドレスの関連付け」の画面が出てくるので以下の作業を行います。
①プライベートIPアドレスの欄クリックし、プルダウンで、作成したEC2のIDと、EC2自体のIPアドレスを選択
②右下の「関連付ける」をクリック
これでEC2への接続準備が終わりました。
次は、Elastic IPをコピーした上で、一旦ログアウトしてTera Termというシミュレーターからつなぎます。なお、現在最新のAmazon Linux2023はopensshの関係上Tera Term5でないとつながりません。Tera Termで接続するEC2のホスト名とユーザ名は以下のとおりです。
ホスト:Elastic IP
ユーザ:ec2-users ←★EC2起動時に必ず用意されるアカウントです。
Tera Termを起動すると、「新しい接続」画面が出てくるので、右下のOKを押すと、「SSH認証」の画面が現れます。その後以下の作業で、SSH認証を行います。
① ユーザ名を入力(今回はec2-usersを選択)
②「認証方式」内の「RSA/DSA・・・鍵を使う」を選択
③「秘密鍵」はEC2インスタンスを起動する際に作成し、PCに保存したものを指定
④「OK」をクリック
「OK」を押すと・・・つながりました!!
sudo su – でroot にもなれます!
ブラウザでも作ったEC2を確認しようと思います。
Apacheをインストールします。$ sudo su -
# dnf -y install httpd
Apacheの自動起動を有効化します。# systemctl enable httpd
Apacheを起動します。 systemctl start httpd
Apacheの起動状態を確認します。# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: disabled)
Active: active (running) since Tue 2023-11-21 23:39:39 UTC; 1min 23s ago
以下略
ブラウザで、Elastic IPを入力すると・・・
無事表示されました!!!
実際にWebサイトとして公開するには、SSL証明書の実装や、ドメインの設定、Webコンテンツのアップロードなどが別途必要ではありますが、それについてはそれぞれ詳しいサイトを参照してみてください。