初めて触るAWS

# はじめに

この記事は
・とりあえずVirtualBoxでLinuxサーバーを構築したことがある
・フロントやってるけどインフラ触ったこと無い
・クラウドってよくわからないけどとりあえず触ってみたい
・AWSでサーバー(EC2)を立ててみたい

こういった方向けの記事になります。AWSに限らずサーバー構築初学者向けです。

各リソースの作成方法などはggればいくらでも出てきますので、本記事では初めてAWSを触る上での大まかな方針を提示していきます。
記事中で触れるサービスについては基本的に費用をなるべくかけない構成を心がけて作成していますが、完全に無料ではない点をご了承いただければと思います。
また、AWS用語についても極力解説していくようにしますが、知らない単語が出てきたら極力ggって意味をなんとなくでも良いので理解しながら進めることを推奨します。

# VPCを作成してみよう

ざっくりとした説明ですが、AWSアカウント内に構築できる仮想ネットワークを指します。このネットワークの中で色々なサービスを動かします。
VirtualBoxさんがよしなにやってくれている部分も自分で作るようなイメージですね。

とりあえずサーバー(EC2)立てたいだけなんだけど...という方はいきなり躓いてしまうかもしれませんが、VPCが無いとそもそもEC2は作成出来ないので、
ここは頑張って作りましょう。
VPCを作成するにはsubnet、NAT Gateway、Internet Gateway、Route table等々、結構たくさんの作成する必要があります......

EC2を立てたいだけなのにいきなりハードル高いです。
特に今回想定している層にとっては初手でネットワーク構築をしろと言われても難しいかもしれません。

しかしそこはAWS先輩、最初から各regionに「デフォルトVPC」なる物を予め用意してくれています!!やったぜ、さすがAWSパイセン。
ということで上に書いたことは(本記事では)やらなくても良いのです。

では何故書いたかというと、基本的にAWSサービスを使用する上でVPCはほぼ必須だからです。
今回はデフォルトVPCを使用する前提で進めていきますが、AWSを使用する上でVPCの理解は必要なので書きました。

サーバーを立てるためにはその土台を作ることが必要ということです。

このあたりはネットワークの知識になってきますので気になった方は各自調べてみましょう。
ちなみに各regionにデフォルトVPCが作成されますので、いきなりアメリカやヨーロッパにサーバー立てちゃったり出来ます。何だかすごいことやってる気になれます!!

デフォルトVPCについて

https://docs.aws.amazon.com/ja_jp/vpc/latest/userguide/default-vpc.html

# EC2を立ててみよう

AWSにおけるサーバーと言えばまずEC2ですね。
microサイズのEC2インスタンスには無料利用枠があるので、まずはmicroで立ててみましょう。
※EC2インスタンスについては無料枠がありますが、EBSボリュームについては一定のサイズ以上は課金対象なので注意してくださいね。

EC2の無料利用枠についてはこちら。

https://aws.amazon.com/jp/ec2/pricing/

EBSの無料利用枠についてはこちら

https://aws.amazon.com/jp/ebs/pricing/

作成方法については公式サイトに手順が載っていますのでこれに沿って作成しましょう。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/create-linux-instance/

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/EC2_GetStarted.html#ec2-launch-instance

OSはUbuntuだったりRHEL等を選べますが、せっかくAWSなのでAmazon Linux2を選択しましょう。
RedHat系のディストリビューションなので、基本的にはRHELやCentOSみたいなもの考えてもらってOKです（詳細は割愛します）。
パッケージ管理はyumですね。

余談ですが、一部のパッケージやバージョンはamazon-linux-extrasを叩かないと入らなかったりすることに注意が必要です。
RedHat系ではyumで入るのにAmazon Linux2では入らない、なんて時はこいつの可能性が高いです。

yumで入らなかったときのエラー分の中に、たまにこんな感じでAWSさんが優しく教えてくれることがあります。

```
To use, run
$ sudo amazon-linux-extras install :topic:

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras
```

作成手順に沿って進めていくと、セキュリティグループを設定する項目に当たります。
ssh接続をしたことが無い方はココで悩むかもしれませんが、
EC2は作成時にパスワード認証での接続は出来ないようになっているので、設定が必要ということです。

次にキーペアの設定項目が出てきます。
新しいキーを作成しましょう。

ココまで来たらいざ起動ですね。
起動が完了したら早速ログインしてみましょう。

こんな感じでsshコマンドを実行すれば接続できます。

```
$ ssh -i "キーペア名" ec2-user@"IPアドレス"
```

ssh出来ない場合、セキュリティグループやpermissionを確認しましょう。
EC2は起動出来たんだけどssh出来ない......っていうのは初めてAWSを触る上で結構あるあるなので安心してください。
トラブルシューティングの記事が山程出てきますので諦めずに根気よく調べましょう！

一応公式のトラブルシューティングのリンクを貼っておきます。

https://aws.amazon.com/jp/premiumsupport/knowledge-center/ec2-linux-ssh-troubleshooting/

ssh出来たら色々遊んでみましょう!!
timezoneがUTCなのでJSTに変更してみたりhostnameを変更してわかりやすくしてみてください。

# EC2を複製する

EC2が作成出来たら今度は複製してみましょう。
作ったものをそのまま複製したところで違いがわからないかもしれないので、適当にhttpdあたりをyumでインストールしておきましょう。

AWSのサービスの中にAmazon Machine Image (AMI)を言うものがあります。
とてもざっくりですが、これは既存のEC2の状態を保存するサービスになります。

https://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/ec2-instances-and-amis.html

https://docs.aws.amazon.com/ja_jp/toolkit-for-visual-studio/latest/user-guide/tkv-create-ami-from-instance.html

手順に沿ってAMIを作成し、AMIからインスタンスを起動してみましょう。

作成できたら互いにpingコマンド等で疎通が取れるようにしてみてください。

# まとめ

今回はEC2を作成する事に主眼をおいて記事を作成しました。
RDSやS3についても最初に触れるサービスとして書こうかと考えましたが、EC2にsshする段で躓くかなぁ...と感じココまでとします。
EC2を立てたら今度はRDSを作成して疎通を取ってみたり、S3バケットを作成してファイルをEC2からS3へputしたり等で遊んでみると面白いかもしれません。
特にS3へputすることに関してはIAM関連の知識をつけることに役立ちますのでオススメです。