【とりあえずやってみる】AWSの10分間チュートリアル

# サマリ
AWSの無料利用枠で公開されている、10分間チュートリアルにトライしてみました。

https://aws.amazon.com/jp/getting-started/hands-on/deploy-docker-containers/

(AWSど素人がとりあえず触れてみようというスタンスの記事のため、内容の理解度についてはご容赦ください。。)

# 背景
このご時世、AWSの一つや二つ触ったことないとまずいだろうということで（どんな圧力）
一番手軽に実施できそうなチュートリアルに挑戦してみることにしました。

# ゴール
チュートリアルを一通り実施し、AWSで静的Webページの表示を確認

# 対象読者
- AWS初心者の方
- 自分（備忘のため）

# 前提
必須：AWSアカウント（**本記事ではアカウント作成の手順は割愛**します）
推奨：クラウド、AWSに関する初歩的な知識


# 環境
- AWS

# 実施内容（[冒頭の手順](https://aws.amazon.com/jp/getting-started/hands-on/deploy-docker-containers/)に沿って進めます）
**各項番のタイトルは公式手順のものを使用させていただいております**
### 1．Amazon ECS を使用して最初の実行をセットアップする

AWSにはログインした状態で、検索窓でECSと検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/97471ef8-5be8-0f06-13f2-27bc11a0483c.png)

Elastic Container Serviceを選択すると、以下のような画面が出ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/712f6b30-8841-4beb-e271-10d7714df681.png)

公式手順の画面とは少し違うので、手順に従って、左上の「新しいECSエクスペリエンス」をトグルボタンをOFFにします。
すると、以下のような画面に切り替わります。
（それでも公式手順とは少し表示が違って焦りました。。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/935aab7d-197a-2629-f151-4bdbb890bbdc.png)

ちょっとわかりにくいのですが、上記の「今すぐはじめる」をクリック。
すると、以下の画面が出ます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/59706de8-35c7-3a3e-5d61-e5daebae918b.png)

この関連図の順に（内側から外側に向けて）設定をしていくイメージのようです。

※ちなみに、Fargateというのは、最近流行りの（？）サーバレスコンピューティングエンジンで、サーバを意識せずアプリ構築を進められる優れもののようです。

https://aws.amazon.com/jp/fargate/

### 2．コンテナーとタスク定義を作成する
公式手順によると、以下とのことです。

> タスク定義はアプリケーションの設計図のようなものです。このステップでは、タスク定義を指定して、コンテナにどの Docker イメージを使用するか、タスクで使用するコンテナの数、各コンテナのリソース割り当てを Amazon ECS が認識できるようにします。

どんな感じにアプリを作るか決めるフェーズということですね。（ざっくり）

Sample Appを選択します。（といいつつ、デフォルトで選択されていました）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/c4fe1ff9-8f0d-12cb-cb80-979b2f38bb7a.png)

下に行き、デフォルトの構成値を確認します。
正直、初心者も初心者なので詳しいことはよくわかりません（開き直り）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/7f2d97d0-9186-a565-3cab-2d0eae69d02c.png)

次へを押してこの作業は完了です。

### 3．サービスを定義する
公式手順曰く、以下です。
> タスク定義を作成したので、Amazon ECS サービスを設定します。サービスが起動し、クラスター内のタスク定義のコピーが維持されます。たとえば、アプリケーションをサービスとして実行すると、Amazon ECS は停止したタスクを自動回復し、指定したコピー数を維持します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/6988517a-646d-ad2c-8ccb-9ee8d8831072.png)

あまりよくわかっていないですが、（おい）
サービス名や先ほど定義したタスクの必要数やロードバランサなどの設定をしておくことで、
サービス起動時にその設定を保持して起動してくれるようですね（よくわからん）

> サービス名: デフォルトのサンプルアプリサービスは、 AWS が提供する Web ベースの「Hello World」アプリケーションです。

そのままにしておけばHello Worldアプリが動きそうな予感ですね。

タスクは1のままでいいようです。

ロードバランサはデフォルトではなしになっていますが、今回はApplication Load Balancerを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/161322e8-5e39-3fbd-5277-e647b0d70b6e.png)

ロードバランサの詳細は[公式ドキュメント](https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-load-balancing.html?p=gsrc&c=ho_ddc)にまとまっていますが、今回はスピード重視なのでそのまま進みます。

次へを押してこのステップも完了です。

### 4．クラスターを構成する

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/31d7905f-3656-74ba-cebb-8d216a1352e0.png)

defaultとなっているクラスター名を「sample-cluster」に修正し、次へを押します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/51e6635b-4425-00c2-6c3b-38e90ead98ed.png)

### 5．リソースを起動して表示
公式曰く、以下です。
> 前のステップでは、タスク定義 (アプリケーションのブループリントのようなもの)、Amazon ECS サービス (タスク定義のコピーを起動して維持する)、およびクラスターを構成しました。このステップでは、作成したリソースを確認、起動、表示します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/5299ecd5-468f-0948-fbb9-59011024fe66.png)

今まで設定してきたタスク、サービス、クラスタが確認できます。
特に問題なければ、右下作成を押します。
（特に何かを触ることはありません）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/a4404f54-9719-f502-02af-2ef90dcc1d84.png)


すると、以下のようにサービスの起動に向けて少し待ちの時間があります。
（10分かかる場合があると記載がありますが、今回は数十秒で完了しました。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/f3eff622-2300-7566-4243-822b41bb9860.png)

すべてのリソースの準備ができると、以下のようにすべてにチェックが付き、サービスの表示がアクティブになります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/40d14c4f-16f0-459b-46fe-ec6eddd000af.png)

サービスの表示を選択し、このステップは完了です。

### 6．サンプルアプリケーションを開く
以下のような画面に遷移します。
このステップでは、DNSを指定して、実際にサンプルアプリ（Hello World相当）の静的Webページが表示されることを確認します。

ターゲットグループ名の下にあるターゲットグループを選択します。
（今回だと「EC2Con…」のグループ名）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/ef54b43b-cc62-f959-eb2b-fbfe667013e3.png)



遷移先でも同様に同じターゲットグループ名を選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/306e9c71-c464-7d43-1988-8e01d8e167e8.png)

ロードバランサを選択します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/003d39cb-fa24-27d2-3e6a-942626d5d811.png)

さらにロードバランサを選択します。
（以下の画面は**公式手順になかった**です。焦りました…）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/f24c686f-96b0-3991-ac84-71fb5436fdfd.png)

以下の画面が出るので、DNS名をコピーします。
（この画面も**公式手順にはなかった**です。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/0ce34dbe-988c-921d-82bc-c1350906da90.png)

適当なブラウザ（今回はChrome）のアドレスバーに張り付けると、以下の画面が出ます

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/6530ee06-2d8b-3efc-b5be-ed2f48ea57f2.png)

おぉ～！！
無事Webページが表示されました！（うれしい

### 7．クリーンアップ
公式を引用すると、以下です。


> このガイドでは、Amazon ECS クラスター、コンテナを実行する AWS Fargate、ロードバランサーの 3 つのリソースを起動しました。このステップでは、不要な料金が発生しないようにすべてのリソースをクリーンアップします。

これがいわゆる（？）莫大な料金請求を防ぐための大事な作業というわけですね。

以下のコンソール画面に戻ります。
（見失ったら検索バーでECSを選択するとこの画面に戻れます。）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/f870b61f-902c-bdb9-864e-42dd6e3e3056.png)

クラスター名（今回はsample-cluster）を選択すると、以下の画面に遷移します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/5621ce36-5286-64ff-d3d6-4be91af6a8c3.png)

画面の右のクラスターの削除を選択します。

以下のような画面が出るので、画面に従ってdelete meと打ち込みます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/9b800888-f682-a040-ff76-807d0b3d2947.png)

無事完了のメッセージが出ました。
これにて完了です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/335813/8d240d39-1245-ae19-c0c7-160bd6fdbd31.png)


# 結果
無事10分間のチュートリアルを無事完了できました！（うれしい
（実際初見でも10分ほどでできました）

# 学び
- このレベルでもやっぱり触れると嬉しいですね。
- 特にサーバ構成に関する設定を意識しなかったのでサーバレスって便利なんだなぁと思いました（小並感）
- クラウドサービスというだけで勝手にハードルを感じていましたが、簡単にできることもあるんだなと少し安堵しました。（用意された環境で用意されたアプリを確認しただけではありますが…）


# まとめ
今後も簡単なチュートリアルから繰り返し触っていき、
少しずつ慣れていきたいと思います…！