ENGINEER BLOG ENGINEER BLOG
  • 公開日
  • 最終更新日

【DevOps Agent】クロスリージョンでのインシデント解決を試してみる

この記事を共有する

目次

はじめに

こんにちは!パーソル&サーバーワークスの Endo です。
AWS re:Invent 2025 で発表されました、AWS DevOps Agent(以下、DevOps Agent)が、現在プレビュー版としてバージニア北部(us-east-1)にて利用可能となっています。
今回は、日本のリージョンである東京リージョン(ap-northeast-1)にあるリソースの情報取得やインシデント対応ができるのかを試してみたいと思います。

結論

最初に結論から申し上げると、DevOps Agent が存在するリージョン以外の情報取得やインシデント対応が可能です。
次項から DevOps Agent についての説明や実際の検証内容について触れていきたいと思います。

DevOps Agent とは

DevOps Agentについては、AWS 製品ページ にて、以下のように紹介されています。

AWS DevOps エージェントは、インシデントを解決、予防し、信頼性とパフォーマンスを継続的に向上させるフロンティアエージェントです。 経験豊富な DevOps エンジニアと同じようにインシデントを調査し、運用上の改善点を特定します。

DevOps Agent は、常時稼働している自立型のエージェントです。
インシデントを優先順位づけ、根本原因解析や解決までのアクションを実行します。

また、フロンティアエージェントについては、AWS ブログでは以下のように紹介されています。

フロンティア エージェントは、自律的で、非常にスケーラブルであり、継続的な介入なしに何時間または何日間も動作する、新しいクラスの AI エージェントを表します。

同タイミングで発表された、Kiro Autonomous Agentや、AWS Security Agentもフロンティアエージェントに含まれるサービスです。

DevOps Agent の操作

ここからは、実際に東京リージョンに存在するリソースに対してインシデント解決ができるか、確認していきたいと思います。

1. 設定

設定方法については、当社ブログ記事AWS DevOps Agentを触ってみたにて紹介されていますので、こちらをご参照ください。
Agent Space の作成をしたら、さっそく問い合わせたいと思います。

2. 問い合わせ

AWS Lambda から Amazon S3 バケット内の特定のオブジェクトを取得したいのですが、うまくいかない(ような構成にした ※)ので、以下のように聞いてみました。
※ AWS Lambda 用 IAM ロールのポリシーに AWSLambdaBasicExecutionRole のみをアタッチしており、Amazon S3 への権限を付与していない状態

Please investigate the following resources located in ap-northeast-1.
We are developing a program that retrieves objects from the S3 bucket (devops-test-s3bucket-XXXXXXXXXXXX) via a Lambda function (devops-test-function), but we cannot retrieve any information.
Please tell us the cause of the retrieval failure and which settings need to be corrected.

AgentSpace_5.png AgentSpace_6.png AgentSpace_7.png

3. 調査

Start investigating... を押下すると、画面が遷移し調査が開始されます。
調査画面ではトポロジ(構成要素の可視化)とタイムラインが表示され、タイムラインはリアルタイムに更新されていきました。

AgentSpace_8.png

タイムライン上では User Request として、先ほど入力の入力内容に、タイトルやインシデント情報が追加された以下の文章が出力されます。
原文は英語ですが、本記事用に日本語訳しております。

TITLE: Investigation 2026-01-26T13:35:08.808Z
DESCRIPTION: 調査詳細: ap-northeast-1 に存在する以下のリソースを調査してください。Lambda 関数(devops-test-function)を介して S3 バケット(devops-test-s3bucket-XXXXXXXXXXXX)からオブジェクトを取得するプログラムを開発していますが、情報を取得できません。取得できない原因と、修正が必要な設定について教えてください。
調査の開始点: なし
インシデント発生日時: 2026-01-26T13:35:08.808Z
インシデントの AWS アカウント ID: XXXXXXXXXXXX
インシデント発生リージョン: us-east-1

なお、インシデント発生リージョンがバージニア北部(us-east-1)となっていますが、これは DevOps Agentが稼働しているリージョンであり、問い合わせ時点で明記していなかったために設定されたものと思われます。

今回の場合は、以下の流れで調査が行われました。

  1. Assistant Response: User Request の内容を受けてどのリソースを調査するかを出力

    AgentSpace_10.png

  2. Get XXX: 調査内容に合わせてリソース情報取得

    AgentSpace_11.png

  3. Check XXX: 関連する権限やログなどの情報を取得

    AgentSpace_12.png

    ※ 2、3 を何度か往復して情報取得されました。

  4. Finding: 被疑箇所を確認

    AgentSpace_18.png

    Finding では以下のように出力されました。
    Lambda 関数にアタッチされているロールのポリシーに問題があるようです。

  5. Root cause: 根本原因を出力

    原因に関する情報が出力されました。

    AgentSpace_19.png

    AgentSpace_20.png

    ここまでで約 6 分程度の時間で根本原因特定に至っています。
    調査が終わったので、次はプラン作成に移っていきます。

4. プランの確認および実行

Root cause タブにて Generate mitigation plan を実行すると、問題を緩和するためのプランが作成されます。
今回のプランでは、AWS CLI を使ったリソースの修正コマンドが提案されました。
Step ごとにコマンドを実行していきます。

  1. Step1: 事前準備

    事前準備ステップでは、修正対象の現在のリソース情報を取得します。

    AgentSpace_21.png

  2. Step2: 事前検証

    事前検証ステップでは、前提条件をテストし、システムが変更に対応できる状態であることを確認します。

    AgentSpace_22.png

  3. Step3: 適用

    適用ステップでは、実際にリソースの変更を行います。

    AgentSpace_23.png

  4. Step4: 事後検証

    事後検証ステップでは、変更によって問題が緩和されたことを確認します。

    AgentSpace_24.png

    もしも問題が発生した場合には、ロールバック用のコマンドも用意されていますので、そちらを実行することが可能です。
    今回は上記の流れを CloudShell で実行しました。

ここを押すと展開します

~ $ aws iam get-role --role-name devops-test-role
{
    "Role": {
        "Path": "/",
        "RoleName": "devops-test-role",
        "RoleId": "AROAXXXXXXXXXXXXXX",
        "Arn": "arn:aws:iam::XXXXXXXXXX:role/devops-test-role",
        "CreateDate": "2026-01-26T12:54:39+00:00",
        "AssumeRolePolicyDocument": {
            "Version": "2012-10-17",
            "Statement": [
                {
                    "Effect": "Allow",
                    "Principal": {
                        "Service": "lambda.amazonaws.com"
                    },
                    "Action": "sts:AssumeRole"
                }
            ]
        },
        "Description": "Allows Lambda functions to call AWS services on your behalf.",
        "MaxSessionDuration": 3600,
        "RoleLastUsed": {
            "LastUsedDate": "2026-01-26T13:34:58+00:00",
            "Region": "ap-northeast-1"
        }
    }
}
~ $ 
~ $ aws iam list-attached-role-policies --role-name devops-test-role
{
    "AttachedPolicies": [
        {
            "PolicyName": "AWSLambdaBasicExecutionRole",
            "PolicyArn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
        }
    ]
}
~ $ 
~ $ aws iam list-role-policies --role-name devops-test-role
{
    "PolicyNames": []
}
~ $ aws iam get-role-policy --role-name devops-test-role --policy-name S3ReadAccessPolicy
An error occurred (NoSuchEntity) when calling the GetRolePolicy operation: The role policy with name S3ReadAccessPolicy cannot be found.
~ $ 
~ $ aws s3api head-bucket --bucket devops-test-s3bucket-XXXXXXXXXXX --region ap-northeast-1
{
    "BucketArn": "arn:aws:s3:::devops-test-s3bucket-XXXXXXXXXXX",
    "BucketRegion": "ap-northeast-1",
    "AccessPointAlias": false
}
~ $ 
~ $ aws lambda get-function --function-name devops-test-function --region ap-northeast-1
{
    "Configuration": {
        "FunctionName": "devops-test-function",
        "FunctionArn": "arn:aws:lambda:ap-northeast-1:XXXXXXXXXX:function:devops-test-function",
        "Runtime": "python3.14",
        "Role": "arn:aws:iam::XXXXXXXXXXX:role/devops-test-role",
        "Handler": "lambda_function.lambda_handler",
        "CodeSize": 1049,
        "Description": "",
        "Timeout": 3,
        "MemorySize": 128,
        "LastModified": "2026-01-26T13:34:46.000+0000",
        "CodeSha256": "XXXXXXXXXXXXXX",
        "Version": "$LATEST",
        "TracingConfig": {
            "Mode": "PassThrough"
        },
        "RevisionId": "XXXXXXXXXXXXXX",
        "State": "Active",
        "LastUpdateStatus": "Successful",
        "PackageType": "Zip",
        "Architectures": [
            "x86_64"
        ],
        "EphemeralStorage": {
            "Size": 512
        },
        "SnapStart": {
            "ApplyOn": "None",
            "OptimizationStatus": "Off"
        },
        "RuntimeVersionConfig": {
            "RuntimeVersionArn": "arn:aws:lambda:ap-northeast-1::runtime:XXXXXXXXXXXXXX"
        },
        "LoggingConfig": {
            "LogFormat": "Text",
            "LogGroup": "/aws/lambda/devops-test-function"
        }
    },
    "Code": {
        "RepositoryType": "S3",
        "Location": "https://awslambda-ap-ne-1-tasks.s3.ap-northeast-1.amazonaws.com/snapshots/XXXXXXXXXX/devops-test-function-XXXXXXXXXXXXXX?versionId=XXXXXXXXXXXXXX&X-Amz-Security-Token=XXXXXXXXXXXXXX&X-Amz-Algorithm=XXXXXXXXXXXXXX&X-Amz-Date=20260126T141938Z&X-Amz-SignedHeaders=XXXXXXXXXXXXXX&X-Amz-Expires=600&X-Amz-Credential=XXXXXXXXXXXXXXFap-northeast-1%2Fs3%2Faws4_request&X-Amz-Signature=XXXXXXXXXXXXXX"
    }
}
~ $ aws iam list-attached-role-policies --role-name devops-test-role
{
    "AttachedPolicies": [
        {
            "PolicyName": "AWSLambdaBasicExecutionRole",
            "PolicyArn": "arn:aws:iam::aws:policy/service-role/AWSLambdaBasicExecutionRole"
        }
    ]
}
~ $ 
~ $ aws iam put-role-policy --role-name devops-test-role --policy-name S3ReadAccessPolicy --policy-document '{"Version": "2012-10-17", "Statement": [{"Effect": "Allow", "Action": ["s3:GetObject", "s3:ListBucket"], "Resource": ["arn:aws:s3:::devops-test-s3bucket-XXXXXXXXXXX", "arn:aws:s3:::devops-test-s3bucket-XXXXXXXXXXX/*"]}]}'
~ $ 
~ $ aws iam list-role-policies --role-name devops-test-role
{
    "PolicyNames": [
        "S3ReadAccessPolicy"
    ]
}
~ $ aws iam get-role-policy --role-name devops-test-role --policy-name S3ReadAccessPolicy
{
    "RoleName": "devops-test-role",
    "PolicyName": "S3ReadAccessPolicy",
    "PolicyDocument": {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:ListBucket"
                ],
                "Resource": [
                    "arn:aws:s3:::devops-test-s3bucket-XXXXXXXXXXX",
                    "arn:aws:s3:::devops-test-s3bucket-XXXXXXXXXXX/*"
                ]
            }
        ]
    }
}
~ $ aws lambda invoke --function-name devops-test-function --invocation-type RequestResponse --region ap-northeast-1 response.json
{
    "StatusCode": 200,
    "ExecutedVersion": "$LATEST"
}
~ $ 

ステータスコードが 200 となり、処理が成功しました!

おわりに

プレビュー版では DevOps Agent を無料で利用可能ですので、お試しいただければと思います。
本記事がどなかたの参考になりましたら幸いです。

この記事は私が書きました

S.Endo

記事一覧

コーヒーインストラクター検定2級を所持しているエンジニアです。コーヒーを飲みながら仕事をしています。

S.Endo

この記事を共有する

クラウドのご相談

CONTACT

クラウド導入や運用でお悩みの方は、お気軽にご相談ください。
専門家がサポートします。

サービス資料ダウンロード

DOWNLOAD

ビジネスをクラウドで加速させる準備はできていますか?
今すぐサービス資料をダウンロードして、詳細をご確認ください。