# AWSを用いたwebアプリケーションの作成　〜VPCとEC2の起動〜

# はじめに
このページではVPCの立ち上げからEC2の起動までをまとめたいと思います。
それぞれのサービスに関しての説明は省いて、
「外部公開する時にはこういうものが必要なんだなー」ぐらいの感覚で見てもらえれば。
アーキテクチャ図は前回のものを参照にしてください。

### 〜おしながき〜
1. VPCの立ち上げ
1. サブネットの作成
1. パブリックIPアドレスの割り当て
1. インターネットゲートウェイの作成
1. ルートテーブルの作成
1. セキュリティグループの作成
1. EC2インスタンスの起動
1. SSH接続

の順番でいきたいと思います。


# 1. VPCの立ち上げ
- AWSコンソールで「VPC」と検索し押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/acf1a7b4-1f53-8369-8594-90824ea20f92.png)
<br>

- 　画面左の、「お使いのVPC」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/8dd47934-bcbd-9f83-cf62-eb22eb3fe219.png)
<br>

- 画面右上の「VPCを作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/ad320595-5c39-329f-8c96-fb1446856c38.png)
<br>

- 「作成するリソース」→「VPCのみ」
- 「名前タグ」→「任意の文字列（例:hoge-my-vpc）」
- 「IPv4 CIDR」→「10.0.0.0/24」
- 画面下部の「VPCを作成」
:::note info
ここに載っていないものは基本デフォルト値で大丈夫です。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/ac070ea6-7989-9aa7-3f39-835f88c356e5.png)


# 2. サブネットの作成
- 画面左のダッシュボードから「サブネット」を選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/12022867-6544-888d-57d9-8f1a9950c786.png)
<br>

- 「VPCを選択」から、先ほど作成したVPCを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/9f222d40-2a1a-2a77-99f3-f9ec553e40e5.png)
<br>

- 「サブネット名」→「任意の文字列（例:hoge-my-sub）」
- 「IPv4 VPC CIDRブロック」→「10.0.0.0/24」
- 「IPv4 サブネット CIDR ブロック」→「10.0.0.64/26」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/db648790-42cc-ba35-9304-4ed9e9b95b56.png)
<br>

# 3. パブリックIPアドレスの割り当て
この手順を進めていくと、先ほど作成した任意の文字列でサブネットが作成されると思います。
チェックボックスから選択し、「アクション」→「サブネットの設定を編集」を押してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/ea25e911-12ac-171f-7d89-4221fdebe897.png)
<br>

- 自動割り当てを有効化
- 画面右下の「保存」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/99f11540-e39f-f2f3-2531-16730efcecc7.png)
<br>

# 4. インターネットゲートウェイの作成
- ダッシュボードから「インターネットゲートウェイ」
- 画面右上の「インターネットゲートウェイの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/44f8843c-55dd-25fe-11e7-a15eeae78221.png)
<br>

- 「名前タグ」→「任意の文字列（例:hoge-my-igw）」
- 「インターネットゲートウェイの作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/4222c107-0176-328e-80e7-4d440c20063f.png)
<br>

チェックボックスから作成したインターネットゲートウェイを選択し、
「アクション」→「VPCにアタッチ」

:::note warn
この写真では「デタッチ」が有効化されていますが、新規作成の場合は
「アタッチ（取り付ける）」になります。
:::
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/e8c4ca25-c500-8f1e-1733-a575fbc213fa.png)
<br>


# 5. ルートテーブルの作成
- ダッシュボードから「ルートテーブル」を選択
- 「名前」→「任意の文字列（例:hoge-my-rt）」
-  「ルートテーブルを作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/b6af2bac-5173-5b79-2d22-fdbbc8405b74.png)
<br>

- 作成したルートテーブルを選択
- 「ルート」→「ルートを編集」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/fadc79dc-8611-2992-3c96-43f2b7c9fb72.png)
<br>

- 「ターゲット」から「インターネットゲートウェイ」を選択
- 作成したインターネットゲートウェイ（例:hoge-my-igw）を選択
- 「変更を保存」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/2c8c166d-7a06-12b8-8963-c92c794bd9a0.png)
<br>

- 先ほどの画面に戻り、「サブネットの関連付け」→「サブネットの関連付けを編集」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/db49e44a-8cbd-a99f-33d4-25e0b52249b7.png)
<br>

- 作成したサブネットを選択し、「関連付けを保存」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/1385bbb5-dfc8-a38e-7d05-0b771f779cf6.png)
<br>

# 6. セキュリティグループの作成
-  ダッシュボードから、「セキュリティグループ」→「セキュリティグループを作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/ffdb32ed-35df-56af-bf26-04b8d745824e.png)
<br>

- 「セキュリティグループ名」→「任意の文字列（例:hoge-my-seg）」
- 「説明」→「任意の文字列」
- 「VPC」→作成したVPCを選択（例:hoge-my-vpc）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/a544813d-b90d-79ac-69a1-e1816b971180.png)
<br>

- インバウンドルールの設定、「ルールを追加」から編集可能
- 「タイプ」→「SSH」
- 「ソース」→「Anywhere-IPv4」
- 画面下の「セキュリティグループを作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/6b87f3fb-3f2c-3299-cfe8-70afaafb7fc0.png)
:::note info
今回自分は、外部からのhttp, https接続を許可するために追加で設定しました。必要に応じて変更してください。
:::
<br>

# 7. EC2インスタンスの作成
- AWSコンソールから「EC2」を選択or検索
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/b8825fe8-b1a9-e051-6d93-b62a9c061bd3.png)
<br>

- 「インスタンスを起動」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/9177d85e-f640-c069-f7b9-eabbad9c961c.png)
<br>

- 「名前」→「任意の文字列（例:hoge-my-ec2）」
その他の項目は写真と同じで大丈夫です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/53b7247d-7391-bc66-a86d-3640a6e9ba71.png)
<br>

- 「インスタンスタイプ」→「t2.micro」（無料枠で行いたいため）
- 「キーペア」→「新しいキーペアを作成」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/906fea3a-5911-b3dc-b1be-8ba6704ead64.png)
<br>

- 「キーペア名」→「任意の文字列（hoge-my-key）」
- 「キーペアのタイプ」→「RSA」
- 「ファイル形式」→「.pem」
これを行うことで、「hoge-my-key.pem」が作成されるのでダウンロードします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/5dabd77a-3ac7-6007-89f9-344a9fdcc85e.png)
<br>

- 「ネットワーク設定」→「編集」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/ff580adc-c8d6-03d7-dd1f-8b8a7988e58d.png)
<br>

- 「VPC」→作成したVPCを選択
- 「サブネット」→作成したサブネットを選択
- 「ファイアウォール」→「既存のセキュリティグループ」から作成したセキュリティグループを選択
- 「インスタンスを起動」を押下
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/5685ae46-c808-1f00-52c3-d194c73aa73e.png)
<br>

# 8. SSH接続
- 作成したインスタンスを選択し、「アクション」→「接続」
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/704b2d51-797a-2315-b5c9-3db97888efeb.png)
<br>

- キーが公開されていないことを確認
```bash:
chmod 400 "~.pem"
```

- 画面下のコマンドをコピー
```bash:
ssh -i "~.pem" ec2-user@xxx.xxx.xxx.xxx
```
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/6e35c82f-c006-e088-b6a2-813ab5712dff.png)
<br>

最後はAWS上ではなく、ターミナルを用いて接続を行います。
先ほどの鍵がダウンロードされたディレクトリの下に入り、
コピーしたコマンドを貼り付けます。
そうすると、「接続するんか？」みたいなメッセージが出ると思うので、「yes」を入れて接続をしてください。鳥が出現すれば、作成したインスタンスへの接続は成功です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3968393/04d78bf5-258f-854d-bda4-60a23df3511d.png)


# 次回に向けて
お疲れ様でした！
これでサーバーの環境構築は以上になります。
次回はEC2の環境設定や、GitHubとの接続とかをまとめたいと思います。