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

AWS DevOps Agent x ECS on Fargate検証 / AWS DevOp...

AWS DevOps Agent x ECS on Fargate検証 / AWS DevOps Agent x ECS on Fargate

第47回 JAWS-UG札幌 勉強会 コンテナ特集!
https://jawsug-sapporo.connpass.com/event/380166/

Avatar for Masanori Yamaguchi

Masanori Yamaguchi

February 13, 2026
Tweet

More Decks by Masanori Yamaguchi

Other Decks in Technology

Transcript

  1. © 2025, Amazon Web Services, Inc. or its affiliates. All

    rights reserved. 山口 正徳 JAWS-UG千葉支部 AWS re:Inforce 最後の日本人登壇者 グローバル認定/表彰 ・AWS Community HERO ・AWS Ambassador ・APJ AWS Community Leaders Award 2回受賞(2022、2024) ・AWS Gold Jacket Club 日本国内認定/表彰 ・AWS Samurai 2020 ・Japan AWS Top Engineer 2019 – 2023、2025 ・APN ALL AWS Certifications Engineers 2023 – 2024 自己紹介
  2. ソフトウェア開発を再定義する3つの FRONTIER AGENTS バックログの複雑なタスク (機能追加、バグ修正、コ ードカバレッジ改善など) を割り当てると、Kuroは自 律的に計画を立て実行。 チームの状況やパターンも 学習する。

    設計段階からソフトウェア にセキュリティを組み込む。 設計書をレビュー、コード のセキュリティスキャン、 オンデマンドの侵入テスト を行い。エージェント自身 もスケールし全てのアプリ ケーションをテストする。 インシデントの調査や改善 点の特定を、まるで経験豊 富なDevOpsエンジニアの ように対応する。 相関関係の理解、根本原因 の特定、将来の障害予防ま でエージェントが対応。
  3. 9 AWS DevOps Agentとは 導入時に得られるメリット ・平均復旧時間 (MTTR) の短縮 ・再発防止とシステム回復力の向上 ・既存のツールやワークフローとのシームレスな統合

    ・運用に関するトイルを削減し、生産性の高い作業に集中 ※ 現時点でDevOps Agentは書き込み操作はできず、 緩和策の実行は 他のツールが必要
  4. 10 Agent Spaces 独立した環境 各スペースは独立して動作し、固有 のAWSアカウント設定、外部ツー ル統合、ユーザー権限を設定可能。 AWSアカウントの分離 専用のIAMロールを使用し、設定さ れたリソースのみにアクセスを制限。

    環境の分離 本番環境と開発環境など、エージェ ントが調査可能なスペースに分ける ことで、誤操作を防止。 外部ツールとの連携 GitHubやNew Relicなどの外部ツ ールへの連携も可能。外部ツールの 接続もスペースごとに分離。
  5. 11 デュアルコンソール 管理者向け 管理者は AWSマネージメントコン ソールから操作 オペレーター用 オペレーターは専用のWebアプリ から操作 設定と管理

    ・Agent Spaceの作成 ・AWSリソース連携設定 ・サードパーティツール統合 ・IAMによるアクセス権限管理 日々の運用と対応 ・インシデント調査の実行 ・自然言語チャットでの対話 ・トポロジーの確認 ・予防的推奨事項のレビュー
  6. 14 プロンプトインジェクションによる悪意ある変更からの保護 多層的な防御策(Safeguards) ・限定的な書き込み能力: リソースを変更する調査は行わないのが基本。 ・アカウント境界の強制: 設定されたIAMロールの権限囲内でのみ動作。 ・AIセーフティ保護: Claude Sonnet

    4.5に組み込まれたASL-3保護 機能が攻撃を検知・防止。 ・変更不可能な監査証跡: エージェントジャーナルにより、悪意のある アクションの隠蔽を防止。 ユーザーの責任範囲とリスク ・ カスタムMCPサーバーツール: 独自のツールは追加のリスクとなる可能性がある。 ・承認済みユーザーによる攻撃: データソースを変更できる権限を持つユーザーは 注意が必要。
  7. 15 インシデント対応フロー(専用Webアプリケーションから実施) 検知 自動調査 原因調査 チャット対話 緩和策提示 振り返り 恒久予防 ・アラート受信

    ・Webhookなどを トリガーにして 調査を自動開始 ・手動で調査指示 を開始 ・調査状況をリアル タイムで確認可能 ・チャットで調査方 針や詳細節名など 追加指示が可能 ・具体的なアクショ ンプラン、検証、 ロールバック手順 を提示。 ・Slackへの通知や AWS Supportの 起票も可能。 ・将来のインシデン トを予防する対応 策も提示
  8. 16 • Agent Spaceの作成数: 最大10個 • インシデント解決(Resolution)の利用時間: 月間20時間 • インシデント予防(Prevention)の利用時間:

    月間10時間 • チャットメッセージ数: 月間1,000件 • 同時実行タスク数: ◦ インシデント解決調査タスク:同時に3つまで ◦ インシデント予防評価タスク:同時に1つまで プレビュー中の制限
  9. 20 検証環境(全体構成) バージニア北部 (us-east-1) Availability Zone Availability Zone Public subnet

    Public subnet Session Manager DevOps Agent CloudWatch Logs CodePipeline CodeCommit CodeBuild ECR
  10. 21 リポジトリ内のファイル一覧 . ├── app │ ├── main.py ・・・ FastAPI

    アプリケーション │ └── requirements.txt ├── buildspec │ ├── buildspec-build.yml ・・・ コンテナビルド用ビルドプロジェクト │ └── buildspec-deploy.yml ・・・ ecspresso実行用ビルドプロジェクト ├── Dockerfile └── ecspresso ├── ecs-service-def.json ├── ecs-task-def.json ・・・ タスク定義テンプレート └── ecspresso.yml
  11. 22 Dockerfile FROM public.ecr.aws/docker/library/python:3.12-slim WORKDIR /app COPY app/requirements.txt . RUN

    pip install --no-cache-dir -r requirements.txt # psコマンドのインストール RUN apt-get update && apt-get install -y --no-install-recommends procps && rm -rf /var/lib/apt/lists/* COPY app/main.py . EXPOSE 8080 # uvicornでFastAPIを起動 CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8080"]
  12. 23 アプリケーション # FastAPI アプリケーション # /health エンドポイントのみ200 OKを返すシンプルなモック from

    fastapi import FastAPI from fastapi.responses import JSONResponse app = FastAPI( title=“DevOps Agent テスト用", description="ヘルスチェック用のモックAPI" ) @app.get("/health") async def health_check(): """ ヘルスチェック用エンドポイント 正常時は200 OKを返す """ return JSONResponse( status_code=200, content={"status": "healthy", "message": "アプリケーションは正常に動作しています"} )
  13. 24 1. ECSタスク 異常終了時の原因調査深度 "healthCheck": { "command": ["CMD-SHELL", "python -c

    \"import urllib.request; urllib.request.urlopen('http://localhost:8080/health')\" || exit 1"], ... "healthCheck": { "command": ["CMD-SHELL", "python -c \"import urllib.request; urllib.request.urlopen('http://localhost:8080/healthcheck')\" || exit 1"], ... ① タスク定義を書き換え ② 書き換え済 タスク定義で デプロイ ③ ヘルスチェック失敗によるタスク起動エラーが発生 ( /healthcheck パスは公開していないため)
  14. 26 1. ECSタスク 異常終了時の原因調査深度 The deployment of the ECS task

    arn:aws:ecs:us-east-1:504301818838:task/ecs-healthcheck-lab- cluster/2d28dc1047c24cb98a942b30b8c06d10 has failed. Please identify the root cause of this issue. DevOps Agentへの指示プロンプト ※前ページのタスクIDとプロンプトで指示しているタスクIDが異なるが、 タスクID 2d28dc1047c24cb98a942b30b8c06d10 でも同事象が発生しているため検証内容に問題はない 日本語訳: ECSタスク arn:aws:ecs:AWSアカウントID:task/ecs-healthcheck-lab- cluster/2d28dc1047c24cb98a942b30b8c06d10のデプロイに失敗しています。 を特定してください。
  15. 30 1. ECSタスク 異常終了時の原因調査深度 Please specify the file name containing

    the application code and the exact line number where the relevant code is written, in order to clearly indicate that the application container does not expose a health check endpoint. アプリケーションコードとヘルスチェックの矛盾を特定させるべく追加指示を行う。 DevOps Agentへチェットで追加指示を実行。 日本語訳: アプリケーション コンテナーがヘルス チェック エンドポイントを公開しないことを明確に示すために、 アプリケーション コードを含むファイル名と、関連するコードが記述されている正確な行番号を指定し てください。
  16. 35 2. VPC構成におけるタスク起動エラーの原因調査と緩和計画の深度 バージニア北部 (us-east-1) Availability Zone Availability Zone Public

    subnet Public subnet Session Manager DevOps Agent CloudWatch Logs CodePipeline CodeCommit CodeBuild ECR ① ルートテーブルからInternet Gateway へのデフォルトルートを削除 ② ECRへのコンテナイメージ取得失敗し、 タスクエラーが発生
  17. 37 2. VPC構成におけるタスク起動エラーの原因調査と緩和計画の深度 The deployment of the ECS task arn:aws:ecs:us-east-1:504301818838:task/ecs-healthcheck-lab-

    cluster/879d9e1b97394652be1a6921d5772b61 has failed. Please identify the root cause of this issue. DevOps Agentへの指示プロンプト 日本語訳: ECSタスク arn:aws:ecs:us-east-1:AWSアカウントID:task/ecs-healthcheck-lab- cluster/879d9e1b97394652be1a6921d5772b61のデプロイに失敗しています。原因を特定してくだ さい。
  18. 43 3. ECRイメージスキャン結果に対する原因調査と緩和計画の深度 バージニア北部 (us-east-1) Availability Zone Availability Zone Public

    subnet Public subnet Session Manager DevOps Agent CloudWatch Logs CodePipeline CodeCommit CodeBuild ECR ① CodeBuildでコンテナイメージを ビルドし、ECRにPush ②ECRイメージスキャンが 脆弱性を検出
  19. 45 3. ECRイメージスキャン結果に対する原因調査と緩和計画の深度 A medium-severity vulnerability was detected in the

    ECR security scan results for the container image 504301818838.dkr.ecr.us-east-1.amazonaws.com/ecs-healthcheck-lab-app:9566ca8. Please investigate how to remediate this vulnerability. DevOps Agentへの指示プロンプト 日本語訳: コンテナイメージ504301818838.dkr.ecr.us-east-1.amazonaws.com/ecs-healthcheck-lab- app:9566ca8に対するECRセキュリティスキャンの結果で緊急度中の脆弱性が発見されました。 脆弱性の対応方法を調べてください。
  20. 48 3. ECRイメージスキャン結果に対する原因調査と緩和計画の深度 Please review the Dockerfile and create a

    mitigation plan describing how to update the sqlite3 package to a patched version. DevOps AgentへチャットでDockerfileをコピペし、下記のリクエストを実施。 日本語訳: Dockerfileを確認し、sqlite3 パッケージをパッチ適用済みバージョンに更新する方法を緩和計画として 作成してください。
  21. 51 1. ECSタスク 異常終了時の原因調査深度 CloudTrail、CodeBuildのログなどから作業履歴を追って原因調査を 行うことは可能。リポジトリにあるコードを参照し、調査することは エージェントのガードレイルによりブロックされる。 2. VPC構成におけるタスク起動エラーの原因調査と緩和計画の深度 問題なく原因特定、緩和計画の提案が可能。ベストプラクティスを意識し

    た緩和計画は明確な提案指示が必要。 3. ECRイメージスキャン結果に対する原因調査と緩和計画の深度 脆弱性対応については、Dockerfileを調査指示開始時、またはチャット から情報として渡すことで緩和計画の提案が可能となる。 検証結果まとめ