Slide 1

Slide 1 text

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

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

運営サービス

Slide 4

Slide 4 text

運営サービス

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

SECTION 01 本日の趣旨 その状態でECS触ろうとしてワケワカランってなった・・ cluster?service?Task? コンテナの話はどこいった・・?笑 出典 :https://docs.aws.amazon.com/ja_jp/AmazonECS/latest/developerguide/Welcome.html

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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を作成

Slide 16

Slide 16 text

SECTION 02 ECS/Fargateでサーバを動かすための最小STEP http://localhost:8000/にアクセスできればOK! 【ローカル】 Dockerfileを作成

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

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

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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

Slide 28

Slide 28 text

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

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

SECTION 02 ECS/Fargateでサーバを動かすための最小STEP クラスター内でタスクを実行 【AWS ECS】 タスクを実行

Slide 37

Slide 37 text

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

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

ご清聴ありがとパ 公式キャラクター 「ウエパ」