【AWS re:Invent 2025】新サービス「AWS DevOps Agent」を検証してみた

目次
1. はじめに
こんにちは!ベンジャミンの松延(まつのぶ)です!
AWS re:Invent 2025に現地参加しKeynoteに参加しました。AWS re:Invent期間中に様々な新サービスや新機能が発表されましたので、最新情報をシェアできればと考えております。
2. AWS DevOps Agentとは
AWS re:Invent 2025のKeynote(Opening Keynote with Matt Garman: KEY001)にて、新サービスである「AWS DevOps Agent」が発表されました。
AWS DevOps Agentは、インシデント対応を加速しシステム信頼性を高めるために設計された「Frontier Agent(フロンティアエージェント)」と呼ばれる自律型AIエージェントです。
1. 主な機能
AWS DevOps Agentの主な機能は下記になります。
- インシデント発生時の対応支援
- メトリクス、ログ、トレース、最近のコードデプロイ情報など、運用ツールチェーンに跨るデータを自動分析
- 根本原因の候補を提示し、復旧のための具体的な緩和策も提案
- チケット管理システム(例:ServiceNow)、外部監視ツール、チャットツール(例:Slack)との連携が可能で、ステークホルダーへの通知や調査経過の記録も行う
- 運用改善・将来の障害予防
- 過去のインシデントや運用パターンを分析し、「どこに観測性が足りないか/どういう構成がリスクか」などを可視化し、改善案(runbook)を出してくれる
2. DevOps Agent Spaceについて
DevOps Agent Space(エージェントスペース)とは、AWS DevOps Agentがアクセスできるツール・AWSアカウント・インフラ・ユーザ権限をまとめた独立した論理コンテナを指すようです。
各Agent Spaceは完全に独立して動作し、使用できるAWSアカウント、接続する外部ツール(GitHub、Datadogなど)、アクセスできるユーザがスペースごとに分離されています。
そのため、環境・チーム・サービス単位でDevOps Agentの権限とデータを隔離することができます。
- AWS アカウントの分離
- スペースごとに専用IAMロールを使用し、そのスペースに許可されたAWSアカウントやリソースにのみアクセス可能
- 外部ツール統合の分離
- CI/CD、観測ツール、チャットツールなどへの接続はスペース単位で独立
- 例外としてGitHub Appなど一部の認証情報はアカウントレベル共有
- ユーザアクセスの分離
- どのユーザがどのスペースを操作できるかを細かく制御できる
- 組織構造に合わせたアクセス制御が実現できる
- データの分離
- インシデント履歴、調査内容、推奨事項などの情報はスペースごとに独立
3. DevOps Agent Space Web Appについて
各スペースには専用のWebアプリがあり、運用チームはコンソールにログインしなくてもインシデント対応が可能になっています。
| 用途 | 説明 |
|---|---|
| チーム分離 | チーム・部門ごとにスペースを分け、責務を明確化 |
| 環境分離 | 本番・検証・開発環境を分けて誤操作を防止 |
| サービス単位管理 | マイクロサービスごとにスペースを作成 |
| コンプライアンス要件 | アクセス制御やデータ保持ポリシーを分離して適用したい場合 |
4. DevOps Agent runbookについて
AWS DevOps Agentがインシデント対応や予防評価を行う際に参照するガイドライン・ヒント集です。
特に、組織固有の環境構成や運用ルールを事前にrunbookとして登録しておくことで、エージェントがより正確で高速な調査・分析を行えるようになります。
5. Topologyについて
AWS DevOps AgentにおけるTopology(トポロジー)は、アプリケーションを構成するAWSリソースや、その間の関係性を自動的に可視化したものです。
AWS DevOps Agentがアプリケーション内部のリソースを自動検出し、それらがどのように接続され、依存しあっているかをグラフとして表現します。このトポロジーは、インシデント調査や原因分析、再発防止のための推奨事項を生成する際の重要になります。
6. Capabilitiesについて
AWS DevOps Agentは単体でもインシデント調査を自動化できますが、既存のDevOpsエコシステム(CI/CD、EKS、監視基盤、チケット管理、Slackなど)と接続することで、さらに強力なインシデント調査・自動化を実現することが可能になっています。
6-1. Cloud
複数の AWS アカウントにまたがるリソースを調査できるようにするための設定です。
企業や組織では、「本番」「開発」「検証」や「複数ビジネスユニット」など、AWSアカウントが分かれていることが一般的です。
アプリケーションが複数アカウントにまたがって構築されている場合、インシデント調査でも横断的なリソース可視化が不可欠です。
AWS DevOps Agentにセカンダリアカウントを追加することで、複数アカウント間のリソース依存関係を一元的に調査・分析できるようになります。
6-2. Telemetry
インシデント調査を高度化するために、外部の監視・観測(Telemetry)システムと連携できる機能を提供しています。
① Built-in, 2-way integration(双方向組み込み連携:Dynatrace)
Dynatraceで実現できることは下記となります。
- Dynatrace MCP serverのデータを直接取り込み、トポロジーを拡張
- Dynatrace側からAWS DevOps Agentの調査を開始できる
- DevOps AgentがDynatraceのメトリクス/ログなどを直接参照して分析
- DevOps Agentの調査結果・根本原因・推奨対策がDynatrace UIに反映される
② Built-in, 1-way integration(片方向組み込み連携:CloudWatch, Datadog, New Relic, Splunk)
CloudWatchで実現できることは下記になります。
- 追加設定なしで即利用可能
- トポロジー拡張&Telemetry introspectionが可能
- AWSアカウントに設定したIAM ロール経由で操作
Datadog, New Relic, Splunkで実現できることは下記になります。
- 監視ツール側のイベント → DevOps Agentの調査を開始(Webhooks)
- DevOps Agent が各監視ツールのMCP serverへ接続しメトリクス確認
6-3. Pipeline
DevOps AgentをGitHubやGitLabなどのCI/CDパイプラインと連携させることが可能になっています。
CI/CDと接続することで、DevOps Agentは以下を自動的に行えるようになります。
「どのデプロイが原因で障害が起きたのか」 を機械的に突き止めることができるようになると考えています。
- デプロイイベントの監視
- コード変更とインシデントの関連付け
- デプロイが原因の問題を素早く特定
6-4. Communications
DevOps AgentをServiceNowやPagerDutyなどのチケット管理システム、Slackなどのチャットツールと連携させることが可能になっています。
インシデント対応ワークフローに DevOps Agent を組み込み、MTTR(平均復旧時間)を短縮することが目的になっています。
チケットやアラートが発生したタイミングで DevOps Agentが自動で調査を開始し、Slackなどに状況を通知したり要約を送ってくれるようになります。
6-5. MCP Server
DevOps AgentはMCP(Model Context Protocol)サーバーを利用することが可能です。
MCPを使用することで、DevOps Agentの分析能力を強化することが可能になっています。
- 外部システムのデータを調査時に利用
- カスタムメトリクス・ログ・状態データを参照
- 提供されたMCPツールを通じて、高度な分析が可能
6-6. Webhook
Webhookを利用すると、外部システム(監視ツール・チケットシステム・アラート基盤など)がHTTP リクエストを送信するだけで AWS DevOps Agentのインシデント調査を自動で開始することが可能になっています。前提条件は下記となっています。
- DevOps AgentでAgent Spaceが作成済みであること
- AWS DevOps Agentコンソールへアクセス可能であること
- Webhookリクエストを送信する外部システムが準備できていること
7. パブリックプレビュー期間中の利用料金について
AWS DevOps Agentはバージニア北部リージョン(us-east-1)でパブリックプレビュー版として提供されています。パブリックプレビュー期間中は無料利用可能となっています。
ただし、他のAWSサービスやAWS以外のサービスへのクエリやAPI呼び出しに対して利用料金が発生する場合があります。例えば、インシデント解決調査中にAWS DevOps Agentがメトリクスやログクエリを実行する場合などです。
8. 利用制限について
パブリックプレビュー期間中の制限は下記となっています。
- エージェントスペース: 10
- DevOps Agentのインシデント解決時間:20時間
- DevOps Agent のインシデント予防時間:10時間
- チャットメッセージ数:1,000件/月
同時実行可能なインシデント解決調査タスクの数は3件、同時実行可能なインシデント予防評価タスクの数は1件です。
3. AWS DevOps Agentを設定してみる
キーノートが終了した後にAWS DevOps Agentについて簡単にハンズオンしてみましたので、内容シェアさせていただきます。
3-1. DevOps Agentの設定
1. AWSマネジメントコンソールにアクセスし、リージョンをバージニア北部を選択
AWS DevOps Agentは発表時点ではバージニア北部(us-east-1)のみ提供されていますので、必ずリージョンをバージニア北部に指定してください。
2. AWSマネジメントコンソールから「DevOps」と入力し、検索結果から「AWS DevOps Agent」を選択

3. AWS DevOps Agentコンソールが表示される

4. 「Begin setup」を選択

5. Agent Space作成画面に遷移する

Agent Spaceの作成画面では下記を設定する必要があります。
| 設定項目 | 説明 |
|---|---|
| Agent Space Name | Agent Space名を設定する |
| Description | Agent Spaceの説明を設定する |
| Give this Agent Space AWS resource access | このDevOps Agent用のIAMロールを指定する (1)DevOps Agent用のIAMロールを新規作成する (2)既存のDevOps Agent用のIAMロールを指定する (3)IAMポリシーテンプレートを指定する |
| Include AWS tags | タグを指定 |
| Enable web app | WebアプリがAgent SpaceにアクセスするためのIAMロールを指定する (1)Webアプリが使用するAgent Space用IAMロールを新規作成する (2)Webアプリが使用する既存のAgent Space用IAMロールを指定する (3)IAMポリシーテンプレートを指定する |
6. Agent Spaceの各種を設定し、「Create」を選択
検証目的のため、下記設定値としました。
| 設定項目 | 説明 |
|---|---|
| Agent Space Name | test-matsunobu-agent-space |
| Description | hands-on |
| Give this Agent Space AWS resource access | Auto-create a new DevOps Agent role |
| Include AWS tags | – |
| Enable web app | Auto-create a new DevOps Agent role |

7. Agent Spaceの作成が完了すると、Agent Spaceの詳細画面が表示される
Topology画面は下記になります。AWSアカウント内に構築されているリソースが検出されています。「Topology sources」には、AWSアカウント内に構築されているAWSリソース数が上位表示されています。画像の例だと、「AWS::AppSync::FunctionConfiguration」がリソース数が一番多いことがわかります。

「Topology graph」には、各AWSリソース間の依存関係をグラフ表示しています。画像の例だと、Containerカテゴリにて各AWSリソース間の依存関係をグラフ表示しています。

グラフ化できるカテゴリは、System/Container/Components/All Resourcesから選択可能となっています。
Capabilities画面は下記になります。

Web app画面は下記になります。

「Operator access」を選択すると専用Webアプリが表示されます。


3-2. 補足:自動作成されるAgent Space用IAMロールについて
Agent Space用に自動作成されるIAMロールについても確認してみました。
3-2-1. DevOpsAgentRole-AgentSpace
DevOps Agent用のIAMロールです。

AIOpsAssistantPolicy
AWSマネージドポリシーである「AIOpsAssistantPolicy」が付与されていました。
AIDevOpsAllowAwsSupportActionsPolicy
こちらはカスタマーマネージドポリシーが付与されており、下記のようなポリシーとなっています。
DevOps Agentがsupport/aidevops/eks/synthetics/route53/resource-explorer-2/codedeployへアクセスするためのポリシーが記載されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowAwsSupportActions",
"Effect": "Allow",
"Action": [
"support:CreateCase",
"support:DescribeCases"
],
"Resource": [
"*"
]
},
{
"Sid": "AllowExpandedAIOpsAssistantPolicy",
"Effect": "Allow",
"Action": [
"aidevops:GetKnowledgeItem",
"aidevops:ListKnowledgeItems",
"eks:AccessKubernetesApi",
"synthetics:GetCanaryRuns",
"route53:GetHealthCheckStatus",
"resource-explorer-2:Search",
"codedeploy:GetDeploymentTarget"
],
"Resource": [
"*"
]
}
]
}
信頼ポリシー
信頼ポリシーについては下記のようになっています。プリンシパルに新たに「aidevops.amazonaws.com」が追加されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "aidevops.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:aidevops:us-east-1:123456789012:agentspace/*"
}
}
}
]
}
3-2-2. DevOpsAgentRole-WebappAdmin
Webアプリがアクセスするために必要なIAMロールです。

AIDevOpsBasicOperatorActionsPolicy
こちらはカスタマーマネージドポリシーが付与されており、下記のようなポリシーとなっています。
Webアプリがaidevopsやsupportへアクセスするためのポリシーが記載されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowBasicOperatorActions",
"Effect": "Allow",
"Action": [
"aidevops:GetAgentSpace",
"aidevops:GetAssociation",
"aidevops:ListAssociations",
"aidevops:CreateBacklogTask",
"aidevops:GetBacklogTask",
"aidevops:UpdateBacklogTask",
"aidevops:ListBacklogTasks",
"aidevops:ListJournalRecords",
"aidevops:DiscoverTopology",
"aidevops:InvokeAgent",
"aidevops:ListGoals",
"aidevops:ListRecommendations",
"aidevops:ListExecutions",
"aidevops:GetRecommendation",
"aidevops:UpdateRecommendation",
"aidevops:CreateKnowledgeItem",
"aidevops:ListKnowledgeItems",
"aidevops:GetKnowledgeItem",
"aidevops:UpdateKnowledgeItem",
"aidevops:DeleteKnowledgeItem",
"aidevops:ListPendingMessages",
"aidevops:InitiateChatForCase",
"aidevops:EndChatForCase",
"aidevops:DescribeSupportLevel",
"aidevops:GetAccountUsage",
"aidevops:SendChatMessage"
],
"Resource": "arn:aws:aidevops:us-east-1:123456789012:agentspace/*"
},
{
"Sid": "AllowSupportOperatorActions",
"Effect": "Allow",
"Action": [
"support:DescribeCases",
"support:InitiateChatForCase",
"support:DescribeSupportLevel"
],
"Resource": "*"
}
]
}
信頼ポリシー
信頼ポリシーについては下記のようになっています。プリンシパルに新たに「aidevops.amazonaws.com」が追加されています。
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"Service": "aidevops.amazonaws.com"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:SourceAccount": "123456789012"
},
"ArnLike": {
"aws:SourceArn": "arn:aws:aidevops:us-east-1:123456789012:agentspace/*"
}
}
}
]
}
4. テストシナリオをハンズオンしてみる(1)
AWS公式ドキュメントにてテストシナリオが提供されています。Lambda関数のテストシナリオについて、ハンズオンしてみました。
1. 下記CloudFormation(Cfn)テンプレートを「AWS-AIDevOps-lambda-test.yaml」というファイル名で保存します。
AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS AIDevOps Lambda Error Test Stack'
Resources:
# IAM Role for Lambda function
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: AWS-AIDevOpsLambdaTestRole
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Tags:
- Key: Name
Value: AWS-AIDevOps-Lambda-Test-Role
- Key: Purpose
Value: AWS-AIDevOps-Testing
# Lambda function that generates errors
TestLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: AWS-AIDevOps-test-lambda
Runtime: python3.12
Handler: index.lambda_handler
Role: !GetAtt LambdaExecutionRole.Arn
Code:
ZipFile: |
import json
import random
import time
from datetime import datetime
def lambda_handler(event, context):
print(f"AWS AIDevOps Test Lambda - {datetime.now()}")
print(f"Event: {json.dumps(event)}")
# Intentionally generate errors for testing
error_scenarios = [
"Simulated database connection timeout",
"Test API rate limit exceeded",
"Intentional validation error for AWS AIDevOps testing"
]
# Always throw an error for testing purposes
error_message = random.choice(error_scenarios)
print(f"Generating test error: {error_message}")
# This will create a Lambda error that CloudWatch will detect
raise Exception(f"AWS AIDevOps Test Error: {error_message}")
Description: AWS AIDevOps beta test function - intentionally generates errors
Timeout: 30
Tags:
- Key: Name
Value: AWS-AIDevOps-Test-Lambda
- Key: Purpose
Value: AWS-AIDevOps-Testing
# CloudWatch Alarm for Lambda errors
LambdaErrorAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: AWS-AIDevOps-Lambda-Error-Test
AlarmDescription: AWS-AIDevOps beta test - Lambda error rate alarm
MetricName: Errors
Namespace: AWS/Lambda
Statistic: Sum
Period: 60
EvaluationPeriods: 1
Threshold: 0
ComparisonOperator: GreaterThanThreshold
Dimensions:
- Name: FunctionName
Value: !Ref TestLambdaFunction
TreatMissingData: notBreaching
Outputs:
LambdaFunctionName:
Description: Lambda Function Name for testing
Value: !Ref TestLambdaFunction
LambdaFunctionArn:
Description: Lambda Function ARN
Value: !GetAtt TestLambdaFunction.Arn
AlarmName:
Description: CloudWatch Alarm Name
Value: !Ref LambdaErrorAlarm
TestCommand:
Description: AWS CLI command to test the function
Value: !Sub 'aws lambda invoke --function-name ${TestLambdaFunction} --payload "{\"test\":\"AWS AIDevOps validation\"}" response.json'
2. Cfnコンソールで、テンプレートファイルのアップロードを選択
3. ファイルを選択から先ほど保存した「AWS-AIDevOps-lambda-test.yaml」を選択
4. スタック名を「AWS-AIDevOps-Lambda-Test」と入力
5. Cfnスタックをデプロイ

下記のように、Lambda関数、Lambda関数用IAMロール、CloudWatchアラームが作成されているはずです。

Lambda関数のソースコードは下記となっています。
import json
import random
import time
from datetime import datetime
def lambda_handler(event, context):
print(f"AWS AIDevOps Test Lambda - {datetime.now()}")
print(f"Event: {json.dumps(event)}")
# Intentionally generate errors for testing
error_scenarios = [
"Simulated database connection timeout",
"Test API rate limit exceeded",
"Intentional validation error for AWS AIDevOps testing"
]
# Always throw an error for testing purposes
error_message = random.choice(error_scenarios)
print(f"Generating test error: {error_message}")
# This will create a Lambda error that CloudWatch will detect
raise Exception(f"AWS AIDevOps Test Error: {error_message}")
また、CloudWatchアラームでは、Lambda関数にてエラーが発生した際にアラート発報されるようになっています。

6. Lambda関数にて、テストイベントを作成しテスト実行
テスト用のペイロードはこちらになります。
{
"test": "AWS AIDevOps validation",
"timestamp": "2024-01-01T00:00:00Z"
}
ソースコードから各テストは意図的なエラーを生成しているようなので、テスト結果はエラーとなります。

7. CloudWatchアラームにて、アラート状態であることを確認

8. DevOps AgentのWebアプリ画面にアクセス


9. 「Start an investigation」にて調査内容を記載し、「Start Investigation」を選択
英語で入力する必要があります。
I'm getting a Lambda error. Check the CloudWatch alarm for errors and investigate the cause.

10. DevOps Agentがエラー内容を調査し根本原因を特定する
(*)画面はブラウザの日本語訳で表示しています。
調査タイムライン上にトポロジーや調査状況が表示されるようになります。

DevOps AgentがCloudWatchアラーム内容を取得しています。


DevOps Agentがエラーが発生したLambda関数を特定しています。



DevOps AgentがLambda関数のErrorsメトリクスを調査しています。


DevOps AgentがLambda関数の実行時間についても確認しています。今回の問題はタイムアウトではないと分析しており、精度も概ね良いと思います。

DevOps AgentがLambda関数のスロットリングについても確認していますが、問題の原因ではないと分析しています。

数分待つと、DevOps AgentがLambda関数内の処理にて例外が発生していることを特定しました。

DevOps Agentが、Lambda関数で意図的にエラーを発生させていることを問題の原因と判断しています。

11. DevOps Agentが根本原因を特定
(*)画面はブラウザの日本語訳で表示しています。

12. 「緩和計画を作成する」(Generate mitigation plan)を選択
(*)画面はブラウザの日本語訳で表示しています。

テストシナリオで意図的なエラーを発生させているため、特に緩和措置は特定されませんでした。

5. テストシナリオをハンズオンしてみる(2)
AWS公式ドキュメントで提供されているLambda関数用のテストシナリオの場合、緩和措置が特定されませんでした。緩和措置が特定されるようテストシナリオを考えてみました。
シンプルなのですが、Lambda関数からDynamoDBにレコードを登録する処理において、Lambda関数内からDynamoDBレコードを登録する権限はあるが、処理に失敗するようなシナリオにしてみます。
1. 下記CloudFormation(Cfn)テンプレートを「AWS-AIDevOps-lambda-test-2.yaml」というファイル名で保存します。
AWSTemplateFormatVersion: '2010-09-09'
Description: 'AWS AIDevOps Lambda Error Test Stack'
Resources:
# DynamoDB Table for testing
TestDynamoDBTable:
Type: AWS::DynamoDB::Table
Properties:
TableName: AWS-AIDevOps-Test-Table-2
BillingMode: PAY_PER_REQUEST
AttributeDefinitions:
- AttributeName: id
AttributeType: S
- AttributeName: timestamp
AttributeType: N
KeySchema:
- AttributeName: id
KeyType: HASH
- AttributeName: timestamp
KeyType: RANGE
Tags:
- Key: Name
Value: AWS-AIDevOps-Test-Table
- Key: Purpose
Value: AWS-AIDevOps-Testing
# IAM Role for Lambda function
LambdaExecutionRole:
Type: AWS::IAM::Role
Properties:
RoleName: AWS-AIDevOpsLambdaTestRole-2
AssumeRolePolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Principal:
Service: lambda.amazonaws.com
Action: sts:AssumeRole
ManagedPolicyArns:
- arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole
Policies:
- PolicyName: DynamoDBAccessPolicy
PolicyDocument:
Version: '2012-10-17'
Statement:
- Effect: Allow
Action:
- dynamodb:PutItem
- dynamodb:GetItem
- dynamodb:Query
Resource: !GetAtt TestDynamoDBTable.Arn
Tags:
- Key: Name
Value: AWS-AIDevOps-Lambda-Test-Role-2
- Key: Purpose
Value: AWS-AIDevOps-Testing
# Lambda function that generates errors
TestLambdaFunction:
Type: AWS::Lambda::Function
Properties:
FunctionName: AWS-AIDevOps-test-lambda-2
Runtime: python3.12
Handler: index.lambda_handler
Role: !GetAtt LambdaExecutionRole.Arn
Environment:
Variables:
DYNAMODB_TABLE_NAME: !Ref TestDynamoDBTable
Code:
ZipFile: |
import json
import boto3
import os
from datetime import datetime
from decimal import Decimal
dynamodb = boto3.resource('dynamodb')
table_name = os.environ['DYNAMODB_TABLE_NAME']
table = dynamodb.Table(table_name)
def lambda_handler(event, context):
print(f"AWS AIDevOps Test Lambda - {datetime.now()}")
print(f"Event: {json.dumps(event)}")
try:
# 意図的にDynamoDBへの書き込みを失敗させる
# ケース1: 必須属性が不足している(timestampがない)
item = {
'id': 'test-id-123',
# 'timestamp' を意図的に省略してエラーを発生させる
'data': 'This will fail due to missing sort key'
}
print(f"Attempting to write to DynamoDB table: {table_name}")
print(f"Item: {json.dumps(item)}")
# この操作は失敗する(timestampがないため)
response = table.put_item(Item=item)
return {
'statusCode': 200,
'body': json.dumps('Success')
}
except Exception as e:
error_message = f"DynamoDB write failed: {str(e)}"
print(f"ERROR: {error_message}")
# エラーを再スローしてLambdaを失敗させる
raise Exception(f"AWS AIDevOps Test Error: {error_message}")
Description: AWS AIDevOps beta test function - intentionally generates errors
Timeout: 30
Tags:
- Key: Name
Value: AWS-AIDevOps-Test-Lambda
- Key: Purpose
Value: AWS-AIDevOps-Testing
# CloudWatch Alarm for Lambda errors
LambdaErrorAlarm:
Type: AWS::CloudWatch::Alarm
Properties:
AlarmName: AWS-AIDevOps-Lambda-Error-Test-2
AlarmDescription: AWS-AIDevOps beta test - Lambda error rate alarm
MetricName: Errors
Namespace: AWS/Lambda
Statistic: Sum
Period: 60
EvaluationPeriods: 1
Threshold: 0
ComparisonOperator: GreaterThanThreshold
Dimensions:
- Name: FunctionName
Value: !Ref TestLambdaFunction
TreatMissingData: notBreaching
Outputs:
DynamoDBTableName:
Description: DynamoDB Table Name
Value: !Ref TestDynamoDBTable
LambdaFunctionName:
Description: Lambda Function Name for testing
Value: !Ref TestLambdaFunction
LambdaFunctionArn:
Description: Lambda Function ARN
Value: !GetAtt TestLambdaFunction.Arn
AlarmName:
Description: CloudWatch Alarm Name
Value: !Ref LambdaErrorAlarm
TestCommand:
Description: AWS CLI command to test the function
Value: !Sub 'aws lambda invoke --function-name ${TestLambdaFunction} --payload "{\"test\":\"AWS AIDevOps validation\"}" response.json'
2. Cfnコンソールで、テンプレートファイルのアップロードを選択
3. ファイルを選択から先ほど保存した「AWS-AIDevOps-lambda-test-2.yaml」を選択
4. スタック名を「AWS-AIDevOps-Lambda-Test-2」と入力
5. Cfnスタックをデプロイ

下記のように、Lambda関数、Lambda関数用IAMロール、CloudWatchアラーム、DynamoDBが作成されているはずです。

6. Lambda関数にて、テストイベントを作成しテスト実行

7. CloudWatchアラームにて、アラート状態であることを確認

8. DevOps AgentのWebアプリ画面にアクセス


9. 「Start an investigation」にて調査内容を記載し、「Start Investigation」を選択
英語で入力する必要があります。
I'm getting a Lambda error. Check the CloudWatch alarm for errors and investigate the cause.

10. DevOps Agentがエラー内容を調査し根本原因を特定する
(*)画面はブラウザの日本語訳で表示しています。

DevOps AgentがCloudWatchアラームからエラー内容を確認しています。


DevOps Agentがエラーが発生したLambda関数を特定しています。


また、DevOps AgentがLambda関数がアクセスするDynamoDBテーブルを調査しています。


DevOps AgentがLambda関数でエラーが発生した時間帯を特定しています。

DevOps AgentはLambda関数のエラーがタイムアウトではないことを分析しています。

また、Lambda関数のエラーがスロットリングによるものではないことを分析しています。


Lambda関数内でputItem操作を実行するために必要な属性がないことでエラーが発生していることを確認しました。


DevOps Agentは、Lambda関数で発生している問題の根本原因が「DynamoDB PutItem操作で必要な属性であるtimestampがないこと」を特定しました!


11. DevOps Agentが根本原因を特定
処理に失敗する原因として、DynamoDBレコード登録に必要な属性がないことを特定しています。
(*)画面はブラウザの日本語訳で表示しています。

12. 「緩和計画を作成する」(Generate mitigation plan)を選択
(*)画面はブラウザの日本語訳で表示しています。

13. 「詳細を表示(View details)」を選択

14. Lambda関数の該当箇所を修正しデプロイ
今回はハンズオンのため、Lambda関数コンソール上から直接ソースコードを修正しデプロイします。
import json
import boto3
import os
import time
from datetime import datetime
from decimal import Decimal
dynamodb = boto3.resource('dynamodb')
table_name = os.environ['DYNAMODB_TABLE_NAME']
table = dynamodb.Table(table_name)
def lambda_handler(event, context):
print(f"AWS AIDevOps Test Lambda - {datetime.now()}")
print(f"Event: {json.dumps(event)}")
try:
item = {
'id': 'test-id-123',
'timestamp': int(time.time()),
'data': 'Successfully written to DynamoDB'
}
print(f"Attempting to write to DynamoDB table: {table_name}")
print(f"Item: {json.dumps(item)}")
response = table.put_item(Item=item)
return {
'statusCode': 200,
'body': json.dumps('Success')
}
except Exception as e:
error_message = f"DynamoDB write failed: {str(e)}"
print(f"ERROR: {error_message}")
raise Exception(f"AWS AIDevOps Test Error: {error_message}")
15. Lambda関数にて、テストイベントを作成しテスト実行
DevOps Agentが特定した根本原因を解消することで、Lambda関数の処理が成功するようになりました!

また、DynamoDBテーブルにレコードが正常に登録されています!

最後に、ハンズオンで作成したAWSリソースは削除しましょう。Cfnスタックを削除することでAWSリソースをクリーンアップできます。
6. まとめ
AWS DevOps Agentを活用することで、生成AIが自律的にAWSリソースに関するインシデント対応や調査をしてくれたり、過去のインシデントや運用パターンを分析することができることはすごく便利だと感じました。
実際に実案件にて「AWS DevOps Agent」を導入した際は、改めて所感等をシェアできればと思っています。
AWS re:Invent 2025参加中で取り急ぎのレポートとなりますが、皆さんの一助になれば幸いです!
