AWSで基盤お試し構築~サーバでコマンドを叩ける環境を作る~

##### 前回の話
[AWSで基盤お試し構築~セキュリティグループ&EC2~](https://qiita.com/akhkyamada/private/67b582e49fa1def99bb8)

# 前回までにやったこと
セキュリティグループを作って、HTTP通信のみ許可するように設定しました。
それとEC2立てました。

---

## 前回までの作業で完成したとこ
いい感じに完成してきた。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/5682011b-368e-da9b-7556-574c24b33933.png)

---

## 今回目指すところ
**サーバに入ってコマンドを叩けるようにする**

・コンソールからコマンドを叩きたい
・そのためにはsshでサーバにつなぐのが、最初に思いつく方法
・だけど、セキュリティグループはhttpしか開けてない
・sshとか開けたくないめんどくさ。
・そもそもうちの会社のネットワーク、80と443しか外に出れないんだけど。

じゃあ、どうするの?っていうときのやり方。

---

#### SystemsManager セッションマネージャで接続しに行く
これを使うとブラウザ上でコンソールを開いて、サーバでコマンド操作ができるようになる。
Teratermとか使わなくても、ブラウザさえあればCLIやれるぜっていう強者。

ということで、諸々設定する。

---

##### IAMロールを作成する
- マネジメントコンソールからIAMを開く。↓こんな画面が出るはず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/323b0ba9-2bcf-f426-a92d-15b898fd8223.png)

---

- IAMリソース > ロールを選択する
こんな画面が出るので、「ロールの作成」を押下する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/12e050e1-2ea1-c031-6971-49514a0619b4.png)

---

- こんな画面が出るので、下記の通り選択する。選んだら「次のステップ：アクセス権限」を押下。
    - 信頼されたエンティティの種類を選択：AWSサービス
    - このロールを使用するサービスを選択：EC2
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/4aace9fc-a9ea-5197-81c9-376b00feabc4.png)

---

- アタッチするIAMポリシーを選択する
    - 今回は「AmazonEC2RoleforSSM」をアタッチする
    - 検索で「SSM」とか入れたら出てくるので、チェックボックスにチェックを入れる。
    - 終わったら「次のステップ：タグ」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/49b3ca40-2cda-6312-e0af-58328864ff79.png)

---

- タグの追加画面が出るが、オプションなのでそのまま「次のステップ：確認」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/2c246724-594d-c032-c64a-a7bf352dd92b.png)

---

- ロール名にわかりやすい名前を付けて「ロールの作成」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/95d3c067-d2cf-4b1e-65ce-32a9a58063b9.png)

---

- 「ロールxxxxxxが作成されました」と出るはず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/57e893ff-b3be-a652-6518-f79265874c51.png)

**→これでIAMロールが作成できた。**

---

##### 作成したIAMロールをEC2にアタッチする
- EC2インスタンス一覧画面を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/f1ccec85-3932-7cf4-7e17-a0c34ab9003c.png)

---

- 前回作成したEC2を右クリックし、以下の通り選択する
    - インスタンスの設定 > IAMロールの割り当て/置換
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/3e00d1a3-be7b-a1cc-dfe0-8e1f3e1348fa.png)

---

- さっき作ったIAMロールを選択し、「適用」を押下。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/79fd1c28-7c6c-07fe-af39-b59c8c626d6f.png)

---

- 割り当てが成功するはず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/89e0cd5a-ca11-3598-5b37-73d7d01c9eec.png)

---

##### Session Managerから接続してみる
- マネジメントコンソールから「SystemsManager」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/98ed2a67-3fc5-9979-0490-2d6a75534e33.png)

---

- 左ペインのInstance&Nodesから「セッションマネージャ」を選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/9d28f7ee-2599-8827-6d3e-e8de16caaab3.png)

---

- 右上「セッションの開始」を押下する
    - IAMロールをアタッチしたEC2が表示されるはず
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/cf910fcd-0078-06be-4972-8ca92d066a3f.png)

---

- EC2を選択して「セッションの開始」を押下する
    - コンソール画面がブラウザの中に表示される
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/7716c48a-9293-87bb-a90f-83da309cc70e.png)

**→サーバ上でコマンドが叩ける状態になった[^1]**

---

######「いや…なってない」という場合

ルートテーブルの設定を変えましょう。

---

- VPCからルートテーブルを選択する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/0b7f1af1-a267-bc22-ebfd-791d7261079a.png)

---

- ルートテーブルの一覧から、前々回くらいに作成したVPCに紐づくルートテーブルを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/cff0d749-4ec1-852c-b339-27034fde01d8.png)

---

- ページ下部にあるタブから、「ルート」を選択し、「ルートの編集」を押下する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/0fa0a5ad-7b3a-a33a-aacd-572620f9a462.png)

---

- ルートの編集画面から、「ルートの追加」を押下し、ターゲットで「Internet Gateway」を選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/74cb13da-217b-8f5d-6e94-d82a814b80dd.png)

---

- 選択可能なインターネットゲートウェイが表示されるので、前回くらいに作成したものを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/b4b1eb1f-ec86-9458-a6e1-4a5543b74b85.png)

---

- 送信先に「0.0.0.0」と入れると、下図のように「0.0.0.0/0」と表示されるので、それを選択する。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/a0282bd4-0682-71c9-1e87-dbb6f63d651c.png)

---

- こんな感じの状態になったら、「ルートの保存」を押下し、編集を終える。 
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/322955/5529380e-a1f6-fe3e-6b22-923a7be50d12.png)

---

- 再度、セッションマネージャから「セッションの開始」を押下すると、接続可能なインスタンスが表示されるはず。
- 表示されるまで少し時間がかかるので、良かったら煙草吸いに行って下さい。

---

[^1]: インターネットに抜けるようなネットワーク設定になってないとダメ。EC2がアタッチされてるVPCのルートテーブルがlocalで閉じてると、外に出れないのでSessionManagerも使えない。

###### なかなか終わらないので次回へ。
[AWSで基盤お試し構築~nginxで遊ぶ~](https://qiita.com/akhkyamada/private/dd2486330316a499ff9f)