AWS で無料のサーバーを 30 分で立てる

しばらく前に AWS の知識をゲットしたはずだったんだが、記憶力が悪いせいですっかり忘れた。

インターネット上に自分用の Linux サーバーが欲しかったので、AWS を使おうとしたのだが、ほとんど何も覚えてない。ゼロから始めてサーバーを立てるまで、を復習がてら記事にする。

AWS はユーザー登録から 1 年間の無料枠があるとはいえ、ユーザー登録にクレジットカード番号が必要。これは済んでいることとする。

# まずはじめに
トップサイトからログインすると、画面遷移して「AWS マネジメントコンソール」に連れていかれる。ここが異世界の入口だ。タダでもらえる初期装備はなかなか豪華で、小さいサーバーならタダで使わせてもらえる。マネジメントコンソールのメニューを探して「Billing」と「VPC」と「EC2」とを確認する。この 3 つが主な活動場所だ。

# Billing 

課金の状況を知るところ。

まず最初はここを知らないと安心して使えない。ここには「今月はいくらかかったか」の金額が表示されている。無料枠の中で使っていれば $0 と表示されているはず。

# VPC ダッシュボード

「VPC を作る」のはリアル世界で例えれば「サーバールームを確保して環境整備する」ことにあたる。

VPC をクリックして「VPC ダッシュボード」に入る。

## VPC の作成
VPC というリンクをクリックすると VPC を作成する画面に移る。最初から「デフォルト VPC」というのが用意されているが、たしか、こいつを消すのはやめたほうがいい。あとあと面倒なことになる。

新しい VPC を作成していく。「VPC の作成」を押すと作成が始まる。IPv4 CIDR ブロックは`10.0.0.0/16`とする。10.0.xx.xx のアドレスを使えるようになる。IPv6 は使わないので、IPv6 CIDR ブロックは無しを選ぶ。無料枠で済ませたいので「テナンシー」はデフォルトを選ぶ。名前はあとで参照することになるので、分かりやすい名前を付けておくのが吉だ。

これで、リアルでいえば「サーバールームを陣取った」ことになる。

## サブネットの作成
「サブネット」というリンクをクリックすると、サブネットを作成する画面に移る。「サブネットの作成」を押すと作成が始まる。VPC は先ほど作成したものを選択。アベイラビリティゾーンは ap-northeast-1a など、東京リージョンのものを選ぶ。海外のを選んでも遅くなるだけだ。「IPv4 CIDR ブロック」は`10.0.1.0/24`とする。これでサブネット内で`10.0.1.xx`のアドレスを使えるようになる。 

これで「サーバールームのイーサネットの配線」が完了。

## ルートテーブルの確認
「ルートテーブル」というリンクをクリックすると、ルートテーブルの設定画面に移る。VPC を作成したときに、セットでルートテーブルも作成されている。他にはデフォルト VPC 用のルートテーブルも最初からあるが、これも消さないようにする。「ルート」というタブをクリックすると、送信先が `10.0.0.0/16` でターゲットが `local` になっているはず。変更は要らない。「タグ」というタブで名前をつけられるので、やっといた方がいい。

これで「ルーターの設置」が完了。

## インターネットゲートウエイの作成
「インターネットゲートウエイ」というリンクをクリックすると作成画面にうつる。ルーターと外部のネットをつなぐことにあたる。「インターネットゲートウエイの作成」を押せば作成できる。例によって名前は付けておいた方がいい。「アクション」から「VPC にアタッチ」を選んで、いま作成中の VPC につなぐ。

## ルートテーブルの設定（その２）
「ルート」タブを押すと、ルートテーブルの編集ができる。ルートの編集を押して、いま作成中の VPC のルートを追加する。`0.0.0.0/0` を `internet gateway` に対応付ける。これで VPC 内部は内部でルーティング、それ以外はインターネットに流すようになる。

これでインターネットに接続できた。サーバールームの建設は終了だ。


# EC2

「EC2 を起動する」のは、リアルでは「コンピュータを買ってきてサーバールームに据え付けて起動する」ことにあたる。

## EC2 ダッシュボード

「EC2 ダッシュボード」に移動する。「インスタンス」をクリックし「インスタンスの作成」を押すと、インスタンス（仮想のコンピュータにあたる）を選ぶ画面になる。`Amazon Linux 2 AMI (HVM), SSD Volume Type` を選ぶ。次に進んで無料枠の t2-micro を選ぶ。

「ネットワーク」はいま作成した VPC を、「サブネット」もいま作成したサブネットを選択。「自動割り当てパブリック IP」はデフォルトで無効になっているのを有効に変更する。次の「ストレージの追加」を選んで先に進むが、追加のストレージは不要。

作成して起動すると、キーペアの作成ダイアログが立ち上がるので作成してダウンロードしておく。このファイルは RSA 鍵というやつで、このコンピュータにログインするときに必要となる。

インスタンスの一覧を表示する画面を表示すると、いま起動したコンピュータが見える。IPv4 パブリック IP アドレスも表示されている。この IP アドレスのコンピュータは、もうインターネット上に存在する。SSH などで接続が可能だ。

# セキュリティグループ

作成した EC2 インスタンスは、そのままでは SSH しかできない。セキュリティグループが SSH 以外のプロトコル／ポートを閉じているからだ。ping でサーバーの存在を確かめたり、http サーバーとして使ったりしたい場合は、セキュリティグループの設定を変更する。

EC2 ダッシュボードのインスタンスからサーバーのインスタンスを表示させると、詳細説明の中に「セキュリティグループ」が見える。適用されているセキュリティグループのリンクを押すと、セキュリティグループの ID が分かる。この ID のセキュリティグループを、VPC ダッシュボードの中の「セキュリティグループ」画面から変更（追加）する。

|目的 |タイプ |プロトコル |ポート範囲 |ソース |
|---|---|---|---|---|
|SSH を許可する（デフォルト） |SSH |TCP |22 |0.0.0.0/0 |
|ping を通す |すべての ICMP - IPv4 |すべて |該当なし |0.0.0.0/0 |
|http サーバーとして使う（開発用） |カスタム TCP ルール |TCP |8000 |0.0.0.0/0 |
|http サーバーとして使う（デプロイ） |HTTP |TCP |80 |0.0.0.0/0 |





# 確認

たったこれだけのことで、インターネット上に本当にサーバーが存在するのか。TeraTerm で確認する。

TeraTerm を起動し、接続先にさっきの IPv4 パブリック IP アドレスを入力して SSH2 で接続する。ユーザー名は ec2-uesr で、パスワード欄は何も入れなくていい。その代わりに「RSA 鍵を使う」を選び、秘密鍵に先ほどダウンロードしたファイルを選ぶ。

「接続」を押せば、確かにつながっていることが分かる。

```:TeraTerm
Last login: Fri Mar 20 15:18:50 2020

       __|  __|_  )
       _|  (     /   Amazon Linux AMI
      ___|\___|___|

https://aws.amazon.com/amazon-linux-ami/2018.03-release-notes/
7 package(s) needed for security, out of 11 available
Run "sudo yum update" to apply all updates.
[ec2-user@ip-10-0-1-156 ~]$
```



おわり