Slide 1

Slide 1 text

AWS CLI でやってみる ~ AWS Hands-on for Beginners ECS ハンズオン ~ 2022/08/09 (火) JAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会 Kento Suzuki

Slide 2

Slide 2 text

自己紹介 名前:鈴木健斗 (@k_suzuki_pnx) 所属:アイレット株式会社 経歴: ・新卒3年目(エンジニア歴 = 社会人歴) ・コンテナ歴はチュートリアル程度 ・業務でコンテナは触らない ・JAWS-UG CLI専門支部に参加してたりする ・2022 APN ALL AWS Certifications Engineer ・2022 APN AWS Top Engineer 好きなお茶:綾鷹

Slide 3

Slide 3 text

AWS CLI でやってみる ~ AWS Hands-on for Beginners ECS ハンズオン ~ 背景

Slide 4

Slide 4 text

ローカルで コンテナ起動した チュートリアルは一通り コンテナのセミナー 悩み コンテナに興味がある!! でも... Next Step は? 何が分からないのか 分からない コンテナの概念についての 説明はもう十分

Slide 5

Slide 5 text

とりあえず AWS公式の初心者向けハンズオンをやろう

Slide 6

Slide 6 text

Hands-on for Beginners https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/ 22 の初心者向けハンズオン (2022/08/09 時点) ● アカウント作成 ● セキュリティ ● ネットワーク ● サーバレス ● 監視 ● AI / ML etc.

Slide 7

Slide 7 text

Amazon Elastic Container Service 入門  コンテナイメージを作って動かしてみよう 🎉🎉 2022/06公開 🎉🎉  AWS上でコンテナを作成、 簡単な操作を体験可能!! https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-ECS-2022-reg-event.html

Slide 8

Slide 8 text

AWS コンソールで ハンズオンをやってみた結果

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

コンソールをポチポチ! 気付いたらハンズオン完了

Slide 11

Slide 11 text

裏で CloudFormation スタックが作成されてるし... スタックが作られるタイミングは ・クラスターの作成 ・タスク定義の作成 ・サービスの作成

Slide 12

Slide 12 text

何の処理(API)が実行された? どのような設定値のリソースが作成された?

Slide 13

Slide 13 text

AWS CLI でやってみる ~ AWS Hands-on for Beginners ECS ハンズオン ~

Slide 14

Slide 14 text

どうやって AWS CLI のコマンドを作る? 手順 ① 手動でリソースを作成する ② AWS CLI の describe 系のコマンドを使用して手動作成リソースを出力 ③ describe コマンドの結果を基に AWS CLI コマンドを作成

Slide 15

Slide 15 text

ECS に関するリソース作成手順を Pick Up !! AWS CLI 化する手順 ・ECR の作成 ・ESC クラスターの作成 ・ECS タスク定義の作成 ・サービスの作成 VPC、Cloud9 は手動で作っちゃいました

Slide 16

Slide 16 text

AWS CLI は AWS CloudShell から実行     AWS CloudShell とは ・AWS 対応のシェルプロンプトの作業を簡単かつセキュアにし、 できるだけ手間を少なくすることを目的としたサービス ・AWS CLI (v2) が事前にインストールおよび設定されている ( 実施時は aws-cli/2.7.20 )

Slide 17

Slide 17 text

作られし CLI コマンドたち そして

Slide 18

Slide 18 text

ECR コマンド:create-repository オプション:基本リポジトリ名だけ ※ 後の手順でリポジトリURLを使用する マネジメントコンソールで実施した際、特に不明点がなかったので問題なし

Slide 19

Slide 19 text

クラスター コマンド:create-cluster オプション:クラスター名、ログ設定、Fargateの指定 なるほど! キャパシティープロバイダー ヨシ! Capacity Providerとは?ECSの次世代スケーリング戦略を解説する #reinvent #cmregrowth https://dev.classmethod.jp/articles/regrwoth-capacity-provider/

Slide 20

Slide 20 text

タスク定義 --container-definitions パラメータが長くて見えない...

Slide 21

Slide 21 text

タスク定義(拡大) コマンド:register-task-definition オプション:タスク定義名、ネットワークモード、CPU、メモリ、実行IAMロール、コンテナの定義、 コンテナのプラットフォーム --container-definitions はコンテナ名、使用イメージ、コンテナが使用するポートなど

Slide 22

Slide 22 text

--cli-input-json コマンドが楽?? ECSタスク定義をコンソールから作って後悔した後、コード管理するため最速でJSON登録可能にする超愚直な方法 https://dev.classmethod.jp/articles/ecs-task-definition-to-json/

Slide 23

Slide 23 text

サービス ここがコンソールからハンズオンをしていて、一番分からなかったポイント CloudFormation スタックを 確認したところ、以下が作成されていた ・ECSのサービス ・ALB ・ターゲットグループ ・リスナー

Slide 24

Slide 24 text

サービス ( TargetGroup ) まずターゲットグループを作成 コマンド:create-target-group オプション:プロトコル、ポート、VPC、       ターゲットタイプ ※ 後の手順でターゲットグループの ARN を使用

Slide 25

Slide 25 text

サービス ( ALB ) 続いて ALB を作成 コマンド:create-load-balancer オプション:ALB名、サブネット ※ 後の手順で ALB の ARN を使用

Slide 26

Slide 26 text

サービス ( リスナー ) コマンド: create-listener オプション:ALB、ポート、プロトコル、デフォルトアクション ALB と ターゲットグループを紐付けるというイメージ

Slide 27

Slide 27 text

サービス コマンド:create-service オプション:クラスター、サービス名、タスク定義、デフォルトアクション、ELB、ネットワーク これが最後!!!

Slide 28

Slide 28 text

サービス エラーでた....

Slide 29

Slide 29 text

サービス (エラー発生の理由) ロググループの権限エラー 対象のロググループを手動で作成 → 成功 タスク定義作成時の挙動 ・マネジメントコンソール → ロググループが自動で作成される ・AWS CLI → ロググループは作成されない

Slide 30

Slide 30 text

学び

Slide 31

Slide 31 text

学び 1. 何のサービスが、どのような設定値で作成されているかが分かる → マネジメントコンソールだと Fargate の指定や、ネットワーク周りの設定を上手くやってくれてる 2. ECS作成の一部オプションは長く書きづらい → 「--cli-input-json」 コマンドを使用して全部 JSON 形式で記述? 3. AWS CLI Command Reference で 「Docker Remote API の 〇〇 オプションに対応します」という記述があるが、 そもそも Docker をそこまで理解できていないことが分かった

Slide 32

Slide 32 text

マネジメントコンソールで   なんとなく ECS を触ってませんか? ぜひ AWS CLI を使ってみてください!