AWS上にサーバーを作る（その01）

前回の投稿
[AWS上にサーバーを作る（序章）](https://qiita.com/aa_ha1uhik0/items/fc315edd6d6af2088e15 "AWS上にサーバーを作る（序章）")
# サーバーに必要なAWSサービス
サーバー作るためには何が必要なんだっけ？
オンプレサーバーをベースにちょっと考えてみる。

* PC本体とOS
* ネットワーク

たぶん最低限このへんが必要だと思われる。
これをクラウドサーバーで実現したい。
## PC本体とOS
ここがAWSでいうところのEC2にあたるらしい。
[Amazon Elastic Compute Cloud (Amazon EC2)](https://aws.amazon.com/jp/ec2/ "Amazon Elastic Compute Cloud (Amazon EC2)")
EC2ってワードは聞いたことがある。
ふむふむ。なんかAWSっぽくなってきたな。
しかし慌ててはいけない。
ここで高額な費用になっては、お金が払いきれない。
無料枠についてチェックしてみる。
>AWS の無料利用枠には、1 年間毎月 750 時間分の Linux および Windows の t2.micro インスタンス (t2.micro が利用できないリージョンでは t3.micro) が含まれています。使用量を無料利用枠内に抑えるには、EC2 マイクロインスタンスのみを使用してください。

なるほど。
「t2.micro インスタンス」ってのを指定しておけばとりあえず**1年間は**安くできそうだ。
それで、「t2.micro インスタンス」ってどんな内容なんだ？？

[Amazon EC2 オンデマンド料金](https://aws.amazon.com/jp/ec2/pricing/on-demand/#On-Demand_Pricing)

|タイプ   |vCPU|ECU|メモリ|インスタンスストレージ|料金（2020年8月現在）|
|:-------|:---|:--:|:------------:|:------------:|:------------:|
|t2.micro|1|変数|1 GiB|EBS のみ|0.0152USD/時間|

> 料金表には、指定されたオペレーティングシステムでプライベートやパブリックな AMI を稼動するためのコストが含まれています

0.0152USD/時間って書いてあるけれど、前述の通り1年目は毎月750時間無料になっているみたいなので、24時間×30日=720時間だから無料でいける！！もし有料になったとしたら、毎月10.944USDだ。
そして、先ほどのスペック料金表で見慣れない項目がある。
ECU：変数とインスタンスストレージ：EBSのみという記述。
これって何だろう。
### ECU（EC2 コンピューティングユニット）
ECUって何だろう？そしてECUが変数とは？？
オフィシャルサイトのQ&Aに説明が出てた。
>[Amazon EC2 よくある質問](https://aws.amazon.com/jp/ec2/faqs/ "Amazon EC2 よくある質問")
>Q:「EC2 コンピューティングユニット (ECU)」とは何ですか? またそれを導入する理由は何ですか?
>
>ユーティリティコンピューティングモデルへの移行は、デベロッパーが CPU リソースに対してこれまで持っていた考え方を根本的に変えるものです。特定のプロセッサを購入またはリースして数か月から数年間使用する代わりに、時間単位で処理能力をレンタルすることができます。Amazon EC2 は、コモディティなハードウェア上に構築されているため、EC2 インスタンスが内在する物理的なハードウェアの種類は、時間と共に異なる可能性があります。当社の目的は、実際に利用するハードウェアがどのようなものであろうと、一定量の CPU 能力を安定したかたちで供給することです。
>
>Amazon EC2 は様々な手段を使用し、各インスタンスに安定した期待通りの CPU 能力を提供します。異なるインスタンスタイプ間でデベロッパーが簡単に CPU 能力値を比較できるように、Amazon EC2 コンピュートユニット (ECU) が定義されています。特定のインスタンスに配分されている CPU 量は、これらの EC2 コンピュートユニットで明示されます。当社はいくつかのベンチマークとテストを使用して、EC2 コンピュートユニットのパフォーマンスの安定性と予測可能性を管理します。EC2 コンピューティングユニット (ECU) は、Amazon EC2 インスタンスの整数処理能力を相対的に測定します。将来的に、コンピューティング性能についてお客様により明確な図を提供するメトリクスが見つかった場合には、EC2 コンピュートユニット (ECU) の定義方法が追加または交換される場合があります。

と書いてある。
物理サーバーで言うところのCPU的なとらえ方で良いのかな？
このECUが変数ってことは、良い感じに最適化して動作するものなんだろうと勝手に解釈しておく。（間違ってるかもしれないが）

### インスタンスストレージ
インスタンスストレージって何だろう？
HDDとかSSDみたいなストレージのことかな？？
そしてインスタンスストレージがEBSのみとは？？
#### EBS（Amazon Elastic Block Store）
EBSって何だろう？
[Amazon Elastic Block Store](https://aws.amazon.com/jp/ebs/?ebs-whats-new.sort-by=item.additionalFields.postDateTime&ebs-whats-new.sort-order=desc)
やはり、予想した通りストレージ部分だな。
そして僕が選択しようとしているEC2はこのEBSからしか選択できないということか。

>無料利用枠
AWS 無料利用枠には、Amazon Elastic Block Store (EBS) のストレージ 30 GB、I/O 200 万回、スナップショットストレージ 1 GB が含まれています。

お！早速無料枠発見！ストレージは30GBで決めてしまおう。

### PC本体とOSについてのまとめ
僕はコストを抑えるために

* EC2はt2.microを1台選択（OSはLinux）
* EBSは30GBを1台選択

これでいくと決めた。


## ネットワーク

ネットワークにつながっていないと、はっきりいって何もできない。
SSHすら接続できないので、もしコンソール画面の提供があるのなら最低限の操作はできるけど、そもそもAWSにはコンソールってあるのか？？

### ネットワークにつなげてやりたいこと

今回、僕は、

* インターネット上で広くWebサイトを公開して見に来てもたうようなサーバーを立てる訳ではない
* 自分のお小遣いと相談しながら勉強のためにAWSにサーバーを立ててみたいと思っている
* クラウドサーバーは従量課金だという事は噂で聞いたことがある
* なるべく他の人からはアクセスできないような作り、あるいは非公開にしたいくらい

その場合どんなネットワーク接続構成が考えられるか。

1. インターネット上にサーバーを公開し、ファイアウォールで接続元をしぼる
1. 回線業者のクラウド直通接続サービスを利用する
1. 接続元と接続先をVPNで接続する

こんな感じになると思うけど、

1. は普通っぽい。
1. は法人ならまだしも個人のおこづかいでは無理。
1. は勉強にもなるし、なんだかそれっぽいね。

前回、非公開サーバーを立てる際に[VPNが使えたらいいな](https://qiita.com/aa_ha1uhik0/items/fc315edd6d6af2088e15#%E9%9D%9E%E5%85%AC%E9%96%8B%E3%81%A7%E3%81%82%E3%82%8B%E3%81%8C%E6%95%85)って思っていたし・・・ってことで、拠点間VPN（[Site-to-Site VPN 接続](https://docs.aws.amazon.com/ja_jp/vpn/latest/s2svpn/VPC_VPN.html "Site-to-Site VPN 接続")）を採用してみよう。

### 作る物の宣言

「僕は勉強のため、

* 初めてAWSのサービスを使い
* 自宅からVPNでのみアクセスできる（Site-to-Site VPN 接続）
* ランニングコストのかからない（無料枠が利用できるもの優先）

サーバーをインターネット上に立てます！！」

## 次回の内容
そろそろAWSに実際にログインして見てみましょうかねー
（まだAWSにログインすらしていないよ）

To be continued...