Save 37% off PRO during our Black Friday Sale! »

【CNDO2021】AWS初学者が始めるコンテナを利用したサーバ構築(ECS/Fargate)

7c592a120f8628ed0977f6dbebeec54d?s=47 saik1010
March 11, 2021

 【CNDO2021】AWS初学者が始めるコンテナを利用したサーバ構築(ECS/Fargate)

約半年前から、SREへ職種チェンジして主にAWSを触り始めています。
AWS知識ゼロの状態から、EC2/Dockerで動いているシステムをコンテナのオーケストレーションツールであるECS/Fargateの構成でリプレイスした際のお話をさせて頂きます。

主にインフラ領域メインでやられている方というよりは、フロント/バックエンドエンジニアだけど、インフラ領域に興味があるという方向けに発信をできたらと思います。

7c592a120f8628ed0977f6dbebeec54d?s=128

saik1010

March 11, 2021
Tweet

Transcript

  1. AWS初学者が始める コンテナを利用したサーバ構築 (ECS/Fargate) 2021/03/12 株式会社ウエディングパーク 斉藤 健太

  2. 斉藤 健太 株式会社ウエディングパーク エンジニアリングマネージャー(backend→QA→SRE) 2010年に新卒入社したSier(受託)会社で某大手企業の業務システ ム開発に関わり、開発やプロジェクトマネジメントを経験。 2017年8月にウエディングパークへ入社し、 エンジニアリングマネージャーをベースに、サービス開発周辺のマ ネジメントに従事。昨年の10月からはSREへ職種チェンジ。 31歳で3児の父。

    @saik1010 自己紹介
  3. 運営サービス

  4. 運営サービス

  5. Agenda 1. 本日の趣旨 2. ECS/Fargateでサーバを動かすための最小STEP 3. まとめ

  6. Agenda 1. 本日の趣旨 2. ECS/Fargateでサーバを動かすための最小STEP 3. まとめ

  7. SECTION 01 本日の趣旨 AWS初学者向けのお話です • AWSは知ってるけど、EC2ぐらいしか理解してない →もともとバックエンドエンジニアのため、実行環境としてAWSを利用していた程度 • Dockerも基本的なコマンドは扱えるが構築しろと言われると微妙 →docker

    composeが入ってくると混乱したり、Dockerfile作るのも怪しいレベル
  8. SECTION 01 本日の趣旨 その状態でECS触ろうとしてワケワカランってなった・・ cluster?service?Task? コンテナの話はどこいった・・?笑 出典 :https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

  9. SECTION 01 本日の趣旨 AWS Black Beltの動画をみて、なんかいけそうな気がした! でも結局、ECSを使ってコンテナを動かす ために「何から始めれば良いのか」が わからなかった・・・ 出典:https://www.youtube.com/watch?v=tmMLLjQrrRA

  10. SECTION 01 本日の趣旨 AWS Black Beltの動画をみて、なんかいけそうな気がした! でも結局、ECSを使ってコンテナを動かす ために「何から始めれば良いのか」が わからなかった・・・ 出典:https://www.youtube.com/watch?v=tmMLLjQrrRA

    そこで理解した今だから話せる ECSでコンテナを動かすための 最小STEPを話そう!
  11. Agenda 1. 本日の趣旨 2. ECS/Fargateでサーバを動かすための最小STEP 3. まとめ

  12. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  13. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  14. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 【ローカル】Dockerfileを作成 ローカルで動作するDockerfileを作成し、ビルドしてイメージが作成できればOK! Docker公式にハンズオンがあるので、これで使うとすぐできる。 とにかくポイントは、「ローカルで動くDockerイメージ」を作成すること 【ローカル】 Dockerfileを作成

  15. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP # サンプルAPをcloneしてくる $ git clone https://github.com/dockersamples/node-bulletin-board $

    cd node-bulletin-board/bulletin-board-app # Dockerfileをもとに、Dockerイメージをビルド $ docker build --tag bulletinboard:latest . ※ハンズオンでは「bulletinboard:1.0」となっていますが、  後続の作業をシンプルにするため 「bulletinboard:latest」としています # 試しにローカルでコンテナを起動してみる docker run --publish 8000:8080 --detach --name bb bulletinboard:latest イメージ作成 【ローカル】 Dockerfileを作成
  16. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP http://localhost:8000/にアクセスできればOK! 【ローカル】 Dockerfileを作成

  17. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  18. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 【AWS ECR】imageをpush STEP1で作成した「ローカルで動くDockerイメージ」をECRというイメージを管理する サービスにpushします。Gitリポジトリにソースをpushするのと同じです! 【AWS ECR】 imageをpush

  19. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まずはリポジトリを作る 【AWS ECR】 imageをpush

  20. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 「プッシュコマンドの実行」を選択 【AWS ECR】 imageをpush

  21. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP プッシュコマンドに従い、 ローカルで作成したイメージをECRにあげる 2は事前にやってるので不要 1,3,4をそのまま貼り付けで実行すれ ばECRにPushできる ※事前に「aws configure」でIAMユーザの認証設

    定が必要です 【AWS ECR】 imageをpush
  22. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP プッシュがうまくいくとリポジトリ内にlatestができる 後ほどタスク定義作成時に必要となるので、 URIのコピーをしておく 【AWS ECR】 imageをpush

  23. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  24. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 【AWS ECS】クラスタを作成 コンテナとして動作するイメージがpushできたので、ここからはECSでコンテナを動かす準備 です。まずはECSのクラスタを作成します。 クラスタは、「コンテナを配置するための箱」みたいなものなので、動かすコンテナ郡をグ ルーピングするようなもの程度の理解で大丈夫です! 【AWS

    ECS】 クラスタを作成
  25. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 「クラスターの作成」を選択 【AWS ECS】 クラスタを作成

  26. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP Fargateで動かすのでネットワーキングのみを選択 【AWS ECS】 クラスタを作成

  27. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP クラスター名を入れて作成 【AWS ECS】 クラスタを作成

  28. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  29. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 【AWS ECS】タスク定義を作成 タスク定義を作っていきます。起動するDockerイメージの指定や空けるポート番号などを定義 します。いわゆるdocker-compose.ymlのような位置づけでコンテナを起動するための設計書 に値します。 【AWS ECS】

    タスク定義を作成
  30. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 「新しいタスク定義の作成」を選択 【AWS ECS】 タスク定義を作成

  31. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP Fargateを選択 【AWS ECS】 タスク定義を作成

  32. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP タスク名/ロールなどを設定 【AWS ECS】 タスク定義を作成

  33. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP コンテナを設定する pushしたECRのイメージを指定 ポートを開ける 【AWS ECS】 タスク定義を作成

  34. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP まず結論から言うと、この5STEPでいける! 【ローカル】 Dockerfileを作成 【AWS ECS】 クラスタを作成 【AWS

    ECR】 imageをpush 【AWS ECS】 タスク定義を作成 【AWS ECS】 タスクを実行
  35. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 【AWS ECS】タスクを実行 作成したタスク定義を元に、タスクを実行します。 つまりこれがコンテナの起動となるので、「docker run」や「docker-compose run」に 相当するもの。

    これがうまく成功すれば、ECS上でコンテナが起動します! 【AWS ECS】 タスクを実行
  36. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP クラスター内でタスクを実行 【AWS ECS】 タスクを実行

  37. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP 先ほど作成したタスク定義を指定してタスク実行 先ほど作成したタスク定義を指定 VPC/セキュリティグループでdefaultでOK ※セキュリティグループでは開放した8080ポートからの  トラフィックを通すように許可すること 【AWS ECS】

    タスクを実行
  38. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP タスク(=コンテナ)が起動するかチェック RUNNINGになればコンテナ起動OK 【AWS ECS】 タスクを実行

  39. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP http://[タスクのパブリック IP]:8080/にアクセスできればOK 【AWS ECS】 タスクを実行

  40. SECTION 02 ECS/Fargateでサーバを動かすための最小STEP ECS上でコンテナが起動できた!

  41. Agenda 1. 本日の趣旨 2. ECS/Fargateでサーバを動かすための最小STEP 3. まとめ

  42. SECTION 03 まとめ まとめ AWS初学者という立場から、できるだけシンプルに最小STEPで コンテナをECSで起動できるところまでご説明をさせて頂きました。 私自身は、正直これを理解するまでに1ヶ月ぐらい四苦八苦しましたので、 同じ悩みを抱えている方の参考になれば幸いです! バリバリやられている方からすると、非常に簡単すぎる内容ではあったかと思いますが、 AWSも日々どんどん新しいサービスが出てくるので、初学者向けのアウトプットも

    是非して頂けると私自身も大変助かります。笑
  43. ご清聴ありがとパ 公式キャラクター 「ウエパ」