【レポート】2.5年ぶりの物理開催となったJAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会に参加しました #jawsug_ct

2022.08.09

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

prismatixのとばち(@toda_kk)です。

2022/8/9に開催された「JAWS-UGコンテナ支部 入門編 #7 初心者大歓迎LT大会」に参加しました。

3年ぶりのコンテナ支部入門編、かつ2.5年ぶりの物理開催ということで、アツいイベントになっていました!

私自身も物理開催の勉強会に参加するのは久しぶりで、かつ会場であるAWS Japanさんの目黒オフィスにお邪魔するのも数年ぶりだったので、アゲアゲでした。

動画アーカイブ

現地開催とオンラインによるハイブリット開催でした。オンライン参加時の動画アーカイブが公開されています。

LT一覧

内容 登壇者
EKS AnywhereとIAM Roles Anywhereを組み合わせてみた 株式会社ビッグツリーテクノロジー&コンサルティング 竹中太基さん
ECS Fargate+Mackerelにおける監視費用を削減するまでの話 株式会社ヌーラボ 中野雅之さん
Amazon ECS on EC2 で Auto Scaling やってみる! アルカセット・コンサルティング株式会社 山本政治さん
ECS FargateでもSystemCallを検査したい GOODWITH LLC., 天地知也さん
AWS Hands-on for BeginnersのECSハンズオンをAWS CLIでやってみる アイレット株式会社 鈴木健斗さん
SAM × Dockerでサーバーレス開発が超捗った話 チームラボ株式会社 ゆっきーさん
ECS Execを使ったECSのトラブルシューティング アイレット株式会社 堂原竜希さん

LT1 EKS AnywhereとIAM Roles Anywhereを組み合わせてみた

概要

タイトルの2つのサービスを組み合わせて、おうちkubernetesから IAMで認可されたアプリケーションを動かしてみる

登壇者

株式会社ビッグツリーテクノロジー&コンサルティング 竹中太基さん

発表資料

レポート

  • やりたいこと: EKS AnywhereのPod上に対して、IAM Roles Anywhereを通じて権限を与える
  • EKS Anywhere: EKSと同じKubernetes環境(EKS Distro)をオンプレミスに構築できるサービス
  • IAM Roles Anywhere: AWSの外部のリソースに対してIAM権限を与えることができるサービス
    • X.509証明書を利用する
    • Trust anchorとProfilesを作成する
  • アプリケーションの設定
    • aws_signing_helperで認証情報を取得し、アプリケーション側でprofileを指定する
    • Dockerイメージをcontrole planeにロードし、Podを作成する
  • 触ってみた感想
    • DynamoDBやS3の認可のためにIAMユーザーを作らなくて良くて、良い
    • aws_signing_helperはオープンソースではないので、SDKなどで同様の機能がサポートされることに期待

サンプルコードは下記です。

EKS AnywhereやIAM Roles Anywhereについては、下記の記事なども参考になるかと思います。

LT2 ECS Fargate+Mackerelにおける監視費用を削減するまでの話

概要

ECSのメトリクス監視にmackerel-container-agentを利用しています。ある日「あれ?Mackerelの費用が上がってるなー」とドキッとする話を聞きました。調べてみたところどうやらこの前リリースしたアプリで使っているECS Fargateが怪しいようです...居ても立っても居られず調べてみると...?という概要でMackerelのホストメトリック数が基準値を超過してしまったのでどう対応したのかお話したいと思います。

登壇者

株式会社ヌーラボ 中野雅之さん

発表資料

レポート

  • ECS Fargateの監視にMackerelとCloudWatch Container Insightsを利用している
  • ある日、Mackerelの費用が上がっており、ホストメトリック数の超過が見られた
    • Mackerelにおける「マイクロホスト」に該当
  • マイクロホストメトリック数
    • 上限値が30となっている
    • 30メトリックごとに1マイクロホスト分の費用が発生する
      • 30を超えると2マイクロホスト分の費用になってしまう
  • Applicationコンテナ以外のメトリックは不要と判断した
    • 設定で特定のコンテナをignoreできる
  • ホストメトリック数の扱いをしっかりと把握しましょう!

MackerelによるECSの監視については、下記の記事なども参考になるかと思います。

LT3 Amazon ECS on EC2 で Auto Scaling やってみる!

概要

ECSキャパシティプロバイダーを利用したAuto Scaling 設定の方法と仕組みについて、学んだことをアウトプットします。

登壇者

アルカセット・コンサルティング株式会社 山本政治さん

発表資料

レポート

  • Fargateじゃない方のECSです!(ECS on EC2)
  • ECS on EC2では、2種類のスケーリングを考えないといけない
    • タスク: タスクスケーリングポリシー
    • インスタンス: キャパシティプロバイダー
      • Auto Scaling Group + CloudWatch という仕組み
      • スケールイン/アウトを動的に実行してくれる
  • CapacityProviderReservationって何?
    • (必要なインスタンス数 M / 現在のインスタンス数 N) x 100 から算出される
    • キャパシティプロバイダーではこの値を監視することで動的スケーリングを実行している

ECSキャパシティプロバイダーについては、下記の記事なども参考になるかと思います。

LT4 ECS FargateでもSystemCallを検査したい

概要

ECS Fargate上でSysdigを動作させる際の方法と注意点を伝える

登壇者

GOODWITH LLC., 天地知也さん

発表資料

レポート

  • 新タイトル: ECS Fargateでも無料で証跡管理したい
  • Fargateで運用する際の問題点
    • コンテナに侵入された場合、環境を保全して後で解析するのが難しい
      • EC2などVMであれば、ボリュームをスナップショットしてフォレンジックできるが……
    • Fargateの場合、VM環境がユーザー管理ではない(AWSの管理領域)
    • 想定しない動作があった場合に、検知や追跡管理をしたい
      • 不審なポートでの通信
      • 許可していないファイルの読み込み/書き込み
  • コンテナの証跡管理方法
    • アプリケーションが実行するSystem Callをキャプチャする
    • 方法: UserLand(ptrace) or KernelLand(eBPF)
    • FargateではeBPFに対応していない……
  • 導入する方法
    • 商用サービスを利用する
      • 初期費用がかなり大きいので、大規模サービス向け
      • 証跡管理以外にも機能が豊富
    • OSSで頑張る
      • 自分でトラブルシュートする覚悟が必要
  • OSSで頑張る: Falco + pdig
  • 最後に

サンプルコードは下記です。

Sysdig社が提供するOSSであるFalcoについては、下記の記事も参考になるかと思いますので是非ご参照ください!(宣伝)

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

概要

6月に追加されたAWS Hands-on for BeginnersのECS入門ハンズオン。新卒3年目で、案件等でコンテナを触ったことがない男がハンズオンをやってみたものの、ポチポチしていたらハンズオンが終わっていて、どんな処理が行われているかが理解しづらかったです。そこでAWS CLIでハンズオンの手順をなぞる事で理解が深まると考えました。今回はCLIでハンズオンを実施した結果(裏でどんなAPIが動いているか、どこで苦戦したか)をLTできればと思っています。

登壇者

アイレット株式会社 鈴木健斗さん

発表資料

レポート

  • 悩み: コンテナに興味があるものの、何がわからないのかわからない
  • とりあえずAWS公式の初心者向けハンズオンをやってみた
  • AWSマネジメントコンソールからハンズオンをやってみたものの……
    • 謎の全能感
    • 裏でCloudFormationのスタックが動いている
    • 結局自分がなにをやったのかよくわからない
  • 理解するためにAWS CLIでやってみた!
    • 手動でリソースを作成した後、describe系のコマンドで作成されたリソースを出力した
    • AWS CloudShellから実行した
  • 学び
    • 何のサービスが、どのような設定値で作成されているかがわかる
    • ECS作成の一部オプションは長くて書きづらい
    • AWS CLI Command Referenceで「Dockerオプションのhogeに対応します」と書いてあるが、そもそもDockerがよくわからない
    • とりあえず、なにがわからないのかはわかった!

LT6 SAM × Dockerでサーバーレス開発が超捗った話

概要

個人活動でやってるサーバーレスアプリケーションの開発をSAMに置き換えたら、開発環境が激変!?実際にどんな変化があったのか紹介します!

登壇者

チームラボ株式会社 ゆっきーさん

発表資料

レポート

  • 学生向けのアプリケーションをサーバーレスアーキテクチャで開発中
    • 利用者数の上限が少ない(1大学の学生のみ)
    • 開発メンバーが少ない
    • サーバー運用に常時コミットできない
    • お金もない
  • 初期の開発環境
    • GitHub ActionsでLambdaを更新
    • 残りのリソースは手動で構築
    • 課題
      • ローカルで試せない
      • コンテナの良さを活かしきれていない
      • Blue/Greenデプロイとかも試せない
  • そこで!AWS SAM!
    • コンテナの良さを活かしつつCI/CDを構築
    • 手動で構築していたリソースはSAMが出力するCloudFormationテンプレートで管理できるようになった
    • DynamoDB localの利用など、ローカルでの開発もスムーズに
  • 現状の課題
    • Blue/GreenデプロイにLambdaのエイリアスが使えない
      • CloudFormationテンプレートが競合してしまう
      • 現状では、サーバーレスリソース以外はSAMで管理しない方針としている
    • 手元で簡単にデプロイできてしまう
      • デプロイ専用のIAMロールを利用して、GitHub Actions経由でのみデプロイできるようにしている

AWS SAMについては、下記の記事なども参考になるかと思います。

LT7 ECS Execを使ったECSのトラブルシューティング

概要

業務でECS Execを使った時の経験をベースに、ECS Execの使い方や便利な点を紹介

登壇者

アイレット株式会社 堂原竜希さん

発表資料

後ほど反映します

レポート

  • クラウドのコンテナはローカル検証が難しい
    • ECSサービス間の通信では、App Meshを利用している
    • ECS外のAWSサービスへのアクセスがある
    • AWS APIを叩く
    • など
  • クラウドならではの要件・設定
    • ネットワークやセキュリティなど
    • エラーが発生したときに、どこが原因なのかすぐにわからない
    • Dockerならdocker execが使えるのに……!
  • ECS Execがある!
    • コマンドの実行やシェルへのアクセスが可能に!
    • 裏側でSSMセッションマネージャーが使われている
      • ECSタスクロールでSSMアクセス権限を付与する必要がある
      • プライベートサブネットの場合は、VPCエンドポイントなどが必要になる
    • 現状ではAWSマネジメントコンソールから有効化できず、AWS CLI経由で有効化する必要がある
  • 便利な点
    • コンテナイメージを変更する必要がない
    • セキュリティグループで特定のポートを解放する必要がない
    • 操作をログに記録してくれる
    • IAMベースでの権限管理ができる
  • ECS Exec自体にハマってしまったら

ECS Execについては、下記の記事なども参考になるかと思います。

入門編のLT会ながら幅広いトピックが揃ったイベントでした

EKS Anywhere + IAM Roles Anywhere といった新サービスの組み合わせから、FargateにおけるSystem Callのキャプチャから、プロダクション運用におけるトラブルシューティングまで、かなり幅広いトピックが揃ったイベントになっていたかと思います。

5〜10分程度でどんどん話題が入れ替わるLT会は、物理開催ということもありなかなか怒涛でした。大変楽しかったです!

以上、prismatixのとばち(@toda_kk)でした。