【CNDO2021】AWS初学者が始めるコンテナを利用したサーバ構築(ECS/Fargate)
by
saik1010
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
ご清聴ありがとパ 公式キャラクター 「ウエパ」