ここ最近は大分暖かくなりましたがいかがお過ごしでしょうか?
まだまだコロナで世の中が大変な状態ですが、ワクチン接種も始まり、ようやく収束に向けて希望が見えてきたように思います。
早く元の生活に戻って旅行に行ったりしたいですね。
さてブログですが、AWSのサービスについて簡単に触ってみたのでそれについて書こうと思います。
AWSについては書籍などは読んでいましたが、なかなか実際のサービスに触れる機会がなかったため、今回VPCについて簡単ですが作ってみました。
備忘録もかねてブログにしたいと思います。
概要
今回作成したのは下記の画像のような内容になります。

画像内で使っているサービスについて、非常にざっくりですが説明します。
また作成していく中で出てきた用語については、その時に説明できればと思います。(簡単にですが…)
- 【VPC】 : AWS上で構成できる仮想的なネットワーク環境
- 【AZ】: AWSがサービスを提供する拠点をリージョンといい、複数のAZで構成される。AZはデータセンターの集まり
- 【サブネット】:VPC内でIPアドレスの範囲で区切ったまとまり
- 【パブリックサブネット】:インターネットと接続できるサブネット
- 【プライベートサブネット】:インターネットに直接接続できないサブネット
- 【EC2】: AWS上で作成する仮想サーバー。インスタンスという単位で管理される
それでは実際に作成していきたいと思います。
まずはVPCを作成してみます。
以下手順で進めます。
※後の工程で使用するため、下記を先に作成しておきます。
①Elastic IP作成
- 【Elastic IP】:AWS内で使用できる固定のIPアドレス
①-1 リージョンを東京に指定。VPCダッシュボードでElastic IPを選択し、「Elasitc IP アドレスの割り当て」をクリックします。

①-2 タグを入力し「割り当て」をクリックします。タグとは作成したリソースに付記する説明書きのイメージです。

②VPC作成
ここではイメージ画像のうち以下を作成します。
- 「testvpc」
- 「パブリックサブネット1」
- 「プライベートサブネット1」
- 「パブリックサブネット2」
②-1 VPCダッシュボードで「VPCウィザードの起動」をクリックします。

②-2「パブリックとプライベートサブネットを持つVPC」を選択します。

②-3画像の赤枠で囲った部分を入力し、「VPCの作成」をクリックします。
※先ほどのElastic IPはここでNATゲートウェイを作成するために必要になります。
- 【NATゲートウェイ】:プライベートサブネットにあるリソースから、インターネットと通信を行うために使用するゲートウェイ

これでパブリックサブネットとプライベートサブネットが一つづつ作成されます。
プライベートサブネットを作成する際にNATゲートウェイが作成されていますが、こちら時間単位で料金が発生するサービスになります。
せっかく作りましたが、後続の操作でプライベートサブネットからインターネットと通信を行う操作はないため削除しておきます。
②-4 VPCダッシュボードからNAT gataewayを選択。作成されたものを選択し、「NATゲートウェイを削除」をクリック

続いてパブリックサブネットをもう一つVPCに作成します。
②-5 VPCダッシュボードでサブネットを選択し、「サブネットの作成」をクリックします。

②-6 画像の赤枠で囲った部分を入力し、「サブネットを作成」をクリックします。

これでVPCの作成は終了です。次にEC2をそれぞれのサブネットに作成していきます。
③EC2作成
ここではイメージ画像のうち以下を作成します。
- 「public1」
- 「private1」
- 「public2」
まずはパブリックサブネット1にpublic1という名前でEC2を作成していきます。
③-1 EC2ダッシュボードでインスタンスを選択し、「インスタンスを起動」をクリックします。

③-2 OSについてはAmazon Linuxを選択します。

③-3 インスタンス性能についてはt2.microを選択し、「次のステップ~」をクリックします。

③-4-1 画像の赤枠部分を入力し、「次のステップ~」をクリックします。
(※自動割り当てパブリックIPは有効にしないとパブリックIPが割り当てされず、VPCの外からアクセスできなくなります)

③-5 ストレージについてはデフォルトのまま、「次のステップ~」をクリックします。

③-6 タグを追加し、「次のステップ~」をクリックします。

③-7 セキュリティグループについてはデフォルトのまま、「確認と作成」をクリックします。
- 【セキュリティグループ】:インスタンス単位でアクセス制御を行うファイアウォール

③-8 設定した内容に問題がなければ「起動」をクリックします。

③-9 キーペア作成の画面が表示されるので「新しいキーペアの作成」を選択し、名前を付けて「キーペアのダウンロード」をクリックします。
ダウンロード後、「インスタンスの作成」をクリックします。
しばらく時間がかかります。「インスタンスの表示」をクリックし、作成したEC2の状態が実行中になれば作成は完了しています。

同様の手順でプライベートサブネット1、パブリックサブネット2にそれぞれprivate1、public2という名前でEC2を作成していきます。
※プライベートサブネットに作成する場合、自動割り当てパブリックIPは無効のままで進めます。パブリックIPを割り当てても使用できないためです。
③-4-2 private1作成時 プライベートサブネット1に作成します。

③-4-3 public2作成時 パブリックサブネット2に作成します。

続いて作成したEC2に接続していきます。
今回は下記サイトを参考にし、windowsの手順で実施しています。
参考URL:https://dev.classmethod.jp/cloud/aws/aws-beginner-ec2-ssh/
④EC2接続
まずはパブリックサブネット1のpublic1からパブリックサブネット2のpublic2に接続してみます。
④-1 EC2ダッシュボードでインスタンスを選択。public1を選択し、パブリック IPv4 アドレスの値をコピーします。

④-2 Tera Termを起動し、ホストにコピーしたIPを貼り付けます。

④-3 警告が出るが「続行」をクリックしてそのまま進めます。

④-4 ユーザ名にec2-userと入力。秘密鍵にEC2作成時にダウンロードしたキーペアを指定します。

ログイン出来たらこのEC2からpublic2に接続できるよう、続けて下記作業を行います。
④-5 先ほどダウンロードしたキーペアをメモ帳などで開き中身をコピー。teratermで”vi キーペア名”と入力しviエディタを起動します。
④-6 右クリックして貼り付けます。
④-7 “:wq!”と入力し保存します。
④-8 “chmod 400 キーペア名”と入力し作成したキーペアの権限を変更します。
(※こちらのコマンドを実施しないとキーペアを誰でも読み書きできてしまうためです。また実施しないと警告が出ます。)
④-9 手順④-1と同様に、AWSのEC2ダッシュボードでパブリックサブネット2に作成したEC2を選択し、今度はプライベート IPv4 アドレスのIPをコピーします。
(先ほどはAWSの外からAWS上のVPCにあるEC2にアクセスしたため、パブリックIPが必要でした。今回は同一VPC内にあるEC2間での接続のため、こちらのプライベートIPで接続可能になります)

④-10 “ssh ec2-user@コピーしたIP -i キーペア名”と入力します。

続いてプライベートサブネット1のprivate1からパブリックサブネット2のpublic2に接続してみます。
まずは先ほどの④-1の手順と同様にAWSのEC2ダッシュボードでprivate1を選択し、パブリックIPの値を見てみます。
今度はプライベートサブネットのため、パブリックIPに値がありません。そのため、VPCの外から直接このEC2インスタンスにはアクセスできない状態になっています。
少し面倒ですが、一度パブリックサブネット1のpublic1に接続し、そこからプライベートサブネット1のprivate1に接続したいと思います。
④-11 先ほどと同様にパブリックサブネット1のpublic1に接続します。
④-12 AWSのEC2ダッシュボードでprivate1を選択し、プライベート IPv4 アドレスをコピーします。

④-13 ” ssh ec2-user@コピーしたIP -i キーペア名 “と入力します。

プライベートサブネット1のprivate1に接続ができたら手順④-5から④-10までをこちらでも同様に実施します。
こちらも接続が確認ができたら、今度はパブリックサブネット2のアクセス制御を変更して、プライベートサブネット1からの接続を拒否してみます。
⑤ネットワークACL
- 【ネットワークACL】:サブネット単位でアクセス制御を行うファイアウォール
AWSでアクセス制御を行う場合、インスタンス単位で制御を行う「セキュリティグループ」とサブネット単位で制御を行う「ネットワークACL」があります。
今回はサブネット単位で制御を行うため、ネットワークACLを設定します。
⑤-1 VPCダッシュボードのサブネットでパブリックサブネット2を選択する。ネットワークACLタブを選択し、リンクをクリックします。

⑤-2 該当のネットワークACLを選択します。インバウンドルールタブを選択し、「インバウンドルールを編集」をクリックします。

⑤-3 現在の設定はすべての通信が許容されています。新しいルールを追加するため「ルールの追加」をクリックします。

⑤-4 以下のルールを作成し、「変更を保存」をクリックします。
- ルール番号:50
- タイプ:SSH
- 送信元に10.0.1.0/24(プライベートサブネット1のIPアドレス範囲)
- 許可/拒否:拒否

⑤-5 再度、プライベートサブネット1のprivate1からパブリックサブネット2のpublic2に接続します。

先ほどと違い、今度はタイムアウトとなり接続ができなくなっています。
これで今回の内容は以上です。
最後に作成したものを削除していきたいと思います。
EC2削除
EC2ダッシュボードでインスタンスを選択。public1を選択し、「インスタンスを終了」をクリックします。

他の二つについても同様に削除します。
Elastic IP削除
VPCダッシュボードでElastic IPを選択し、「Elasitc IP アドレスの解放」をクリックします。
遷移した画面で「解放」をクリックします。


VPC削除
VPCダッシュボードでVPCを選択。testvpcを選択し、「VPCの削除」をクリックします。

以上になります。
今回は書籍等で読んだAWSのサービスについて、実際に触ってみるという名目でブログ作成しました。
実際に業務でAWSに触れる機会がありましたら、より実務に即した形でいろいろなサービスについて試してみたいと思います。
ありがとうございました。





