Upgrade to Pro — share decks privately, control downloads, hide ads and more …

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

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

JAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会
のスライド

Kento Suzuki

August 09, 2022
Tweet

More Decks by Kento Suzuki

Other Decks in Technology

Transcript

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

    ~ 2022/08/09 (火) JAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会 Kento Suzuki
  2. 自己紹介 名前:鈴木健斗 (@k_suzuki_pnx) 所属:アイレット株式会社 経歴: ・新卒3年目(エンジニア歴 = 社会人歴) ・コンテナ歴はチュートリアル程度 ・業務でコンテナは触らない

    ・JAWS-UG CLI専門支部に参加してたりする ・2022 APN ALL AWS Certifications Engineer ・2022 APN AWS Top Engineer 好きなお茶:綾鷹
  3. AWS CLI でやってみる ~ AWS Hands-on for Beginners ECS ハンズオン

    ~ 背景
  4. ローカルで コンテナ起動した チュートリアルは一通り コンテナのセミナー 悩み コンテナに興味がある!! でも... Next Step は?

    何が分からないのか 分からない コンテナの概念についての 説明はもう十分
  5. とりあえず AWS公式の初心者向けハンズオンをやろう

  6. Hands-on for Beginners https://aws.amazon.com/jp/aws-jp-introduction/aws-jp-webinar-hands-on/ 22 の初心者向けハンズオン (2022/08/09 時点) • アカウント作成

    • セキュリティ • ネットワーク • サーバレス • 監視 • AI / ML etc.
  7. Amazon Elastic Container Service 入門  コンテナイメージを作って動かしてみよう 🎉🎉 2022/06公開 🎉🎉  AWS上でコンテナを作成、

    簡単な操作を体験可能!! https://pages.awscloud.com/JAPAN-event-OE-Hands-on-for-Beginners-ECS-2022-reg-event.html
  8. AWS コンソールで ハンズオンをやってみた結果

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

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

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

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

    ~
  14. どうやって AWS CLI のコマンドを作る? 手順 ① 手動でリソースを作成する ② AWS CLI

    の describe 系のコマンドを使用して手動作成リソースを出力 ③ describe コマンドの結果を基に AWS CLI コマンドを作成
  15. ECS に関するリソース作成手順を Pick Up !! AWS CLI 化する手順 ・ECR の作成

    ・ESC クラスターの作成 ・ECS タスク定義の作成 ・サービスの作成 VPC、Cloud9 は手動で作っちゃいました
  16. AWS CLI は AWS CloudShell から実行     AWS CloudShell とは ・AWS

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

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

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

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

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

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

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

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

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

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

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

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

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

    ・AWS CLI → ロググループは作成されない
  30. 学び

  31. 学び 1. 何のサービスが、どのような設定値で作成されているかが分かる → マネジメントコンソールだと Fargate の指定や、ネットワーク周りの設定を上手くやってくれてる 2. ECS作成の一部オプションは長く書きづらい →

    「--cli-input-json」 コマンドを使用して全部 JSON 形式で記述? 3. AWS CLI Command Reference で 「Docker Remote API の 〇〇 オプションに対応します」という記述があるが、 そもそも Docker をそこまで理解できていないことが分かった
  32. マネジメントコンソールで   なんとなく ECS を触ってませんか? ぜひ AWS CLI を使ってみてください!