

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# テスト環境の作成
<a name="getting-started-with-aws-devops-agent-creating-a-test-environment"></a>

このガイドでは、サンプルアーキテクチャを使用して AWS DevOps Agent のインシデント対応機能を検証するための実践的なテストを提供します。本番稼働用システムを接続する前に DevOps エージェントをテストする場合は、この補足を使用します。

## 前提条件
<a name="prerequisites"></a>
+ AWS 管理アクセス権を持つ アカウント
+ AWS DevOps エージェントの自動作成ロールフローを使用して作成および設定された DevOps エージェントスペース

## コストと安全性の概要
<a name="cost-and-safety-overview"></a>

### コスト保護
<a name="cost-protection"></a>
+ **EC2 テスト**: 2 時間無料 (AWS 無料利用枠) または \$10.02 USD
+ **Lambda テスト**: 無料 (1 か月あたりの無料利用枠あたり 100 万リクエスト)
+ **CloudWatch**: 無料 (10 個のアラーム、基本メトリクスを含む)
+ **予想される総コスト**: テスト完了時に 0.00～0.05 USD

### これらのテストにおける安全機能
<a name="safety-features-in-these-tests"></a>
+ **自動終了**: 組み込みの自動シャットダウン
+ **無料利用枠対象**: 最小のインスタンスタイプを使用
+ **制限された範囲**: 最小の分離されたテストリソース
+ **簡単なクリーンアップ**: すべてを削除するためのシンプルなコンソールステップ
+ **本番環境への影響なし**: テスト環境を完全に分離する

## テスト用に AWS アカウントをセットアップする
<a name="set-up-your-aws-account-for-testing"></a>

**重要**  
** インフラストラクチャリソースは、DevOps エージェントスペースのプライマリクラウド AWS アカウントを作成したアカウントにデプロイする必要があります。特定のリージョンは関係ありません。

1.  AWS コンソールにログインする: [https://console.aws.amazon.com](https://console.aws.amazon.com/)

1. DevOps エージェントスペースがあるのと同じ AWS アカウントで作業していることを確認します。

1. テストリソースには任意のリージョンを使用できます

**注記**  
DevOps エージェントのプライマリアカウントと作成するテスト環境リソース間の 1:1 マッピングにより、テストのセットアップが簡素化されます。DevOps エージェントスペースを簡単に拡張してセカンダリアカウントを含めたり、クロスアカウント調査を有効にしたりできます。

## テストを選択する
<a name="choose-your-test"></a>

テストは個別に実行することも、両方を同時に実行することもできます。

### テストオプション A: EC2 CPU 容量テスト
<a name="test-option-a-ec2-cpu-capacity-test"></a>

**目的**: EC2 パフォーマンスの問題を検出して調査する AWS DevOps Agent の機能を検証する

**推定時間**: 5 分のセットアップ \$1 10 分の自動実行

**難易度**: 完全自動化 (手動ステップは不要)

### テストオプション B: Lambda エラー率テスト
<a name="test-option-b-lambda-error-rate-test"></a>

**目的**: Lambda 関数エラーを検出して調査する AWS DevOps エージェントの機能を検証する

**推定時間**: 10 分のセットアップ \$1 トリガーまで 2 分

**難易度**: 非常に簡単

## テストオプション A: EC2 CPU 容量テスト
<a name="test-option-a-ec2-cpu-capacity-test"></a>

### ステップ 1: EC2 テスト用に CloudFormation スタックをデプロイする
<a name="step-1-deploy-cloudformation-stack-for-ec2-test"></a>

CloudFormation を使用してテストリソースを作成します。これにより、 AWS DevOps Agent はテストリソースを適切に追跡して調査できます。

1. **CloudFormation に移動します**。

   1.  AWS コンソールでCloudFormation」を検索し、**CloudFormation** をクリックします。

   1. **スタックの作成** > **新しいリソースを使用する (標準)** をクリックします。

1. **テンプレートのアップロード**:

   1. という名前の新しいローカルファイルを作成する`AWS-DevOpsAgent-ec2-test.yaml`

   1. この CloudFormation テンプレートをコピーしてファイルに貼り付けます。

      1. 

         ```
         AWSTemplateFormatVersion: '2010-09-09'
         Description: 'AWS DevOps Agent EC2 CPU Test Stack'
         Parameters:
           MyIP:
             Type: String
             Description: Your current IP address for SSH access (find at https://whatismyipaddress.com)
             Default: '0.0.0.0/0'
         Resources:
           # Security Group for SSH access
           TestSecurityGroup:
             Type: AWS::EC2::SecurityGroup
             Properties:
               GroupName: AWS-DevOpsAgent-test-sg
               GroupDescription: AWS DevOps Agent beta testing security group
               SecurityGroupIngress:
                 - IpProtocol: tcp
                   FromPort: 22
                   ToPort: 22
                   CidrIp: !Ref MyIP
                   Description: SSH access from your IP
               Tags:
                 - Key: Name
                   Value: AWS-DevOpsAgent-Test-SG
                 - Key: Purpose
                   Value: AWS-DevOpsAgent-Testing
           # Key Pair for SSH access
           TestKeyPair:
             Type: AWS::EC2::KeyPair
             Properties:
               KeyName: AWS-DevOpsAgent-test-key
               KeyType: rsa
               Tags:
                 - Key: Name
                   Value: AWS-DevOpsAgent-Test-Key
                 - Key: Purpose
                   Value: AWS-DevOpsAgent-Testing
           # EC2 Instance for CPU testing
           TestInstance:
             Type: AWS::EC2::Instance
             Properties:
               InstanceType: t3.micro
               ImageId: '{{resolve:ssm:/aws/service/ami-amazon-linux-latest/al2023-ami-kernel-6.1-x86_64}}'
               KeyName: !Ref TestKeyPair
               SecurityGroupIds:
                 - !Ref TestSecurityGroup
               UserData:
                 Fn::Base64: !Sub |
                   #!/bin/bash
                   yum update -y
                   yum install -y htop
                   
                   # Create the CPU stress test script
                   cat > /home/ec2-user/cpu-stress-test.sh << 'EOF'
                   #!/bin/bash
                   echo "Starting AWS DevOpsAgent CPU Stress Test"
                   echo "Time: $(date)"
                   echo "Instance: $(curl -s http://169.254.169.254/latest/meta-data/instance-id)"
                   echo ""
                   
                   # Get number of CPU cores
                   CORES=$(nproc)
                   echo "CPU Cores: $CORES"
                   echo ""
                   
                   echo "Starting stress test (5 minutes)..."
                   echo "This will generate >70% CPU usage to trigger CloudWatch alarm"
                   echo ""
                   
                   # Create CPU load using yes command
                   echo "Starting CPU load processes..."
                   for i in $(seq 1 $CORES); do
                       (yes > /dev/null) &
                       CPU_PID=$!
                       echo "Started CPU load process $i (PID: $CPU_PID)"
                       echo $CPU_PID >> /tmp/cpu_test_pids
                   done
                   
                   # Auto-cleanup after 5 minutes
                   (sleep 300 && echo "Stopping CPU load processes..." && kill $(cat /tmp/cpu_test_pids 2>/dev/null) 2>/dev/null && rm -f /tmp/cpu_test_pids) &
                   
                   echo ""
                   echo "CPU load processes started for 5 minutes"
                   echo "Check CloudWatch for alarm trigger in 3-5 minutes"
                   EOF
                   
                   chmod +x /home/ec2-user/cpu-stress-test.sh
                   chown ec2-user:ec2-user /home/ec2-user/cpu-stress-test.sh
                   
                   # Create auto-shutdown script (safety mechanism)
                   cat > /home/ec2-user/auto-shutdown.sh << 'SHUTDOWN_EOF'
                   #!/bin/bash
                   echo "Auto-shutdown scheduled for 2 hours from now: $(date)"
                   sleep 7200
                   echo "Auto-shutdown executing at: $(date)"
                   sudo shutdown -h now
                   SHUTDOWN_EOF
                   
                   chmod +x /home/ec2-user/auto-shutdown.sh
                   nohup /home/ec2-user/auto-shutdown.sh > /home/ec2-user/auto-shutdown.log 2>&1 &
                   
                   echo "AWS DevOpsAgent test setup completed at $(date)" > /home/ec2-user/setup-complete.txt
               Tags:
                 - Key: Name
                   Value: AWS-DevOpsAgent-Test-Instance
                 - Key: Purpose
                   Value: AWS-DevOpsAgent-Testing
           # CloudWatch Alarm for CPU utilization
           CPUAlarm:
             Type: AWS::CloudWatch::Alarm
             Properties:
               AlarmName: AWS-DevOpsAgent-EC2-CPU-Test
               AlarmDescription: AWS-DevOpsAgent beta test - EC2 CPU utilization alarm
               MetricName: CPUUtilization
               Namespace: AWS/EC2
               Statistic: Average
               Period: 60
               EvaluationPeriods: 1
               Threshold: 70
               ComparisonOperator: GreaterThanThreshold
               Dimensions:
                 - Name: InstanceId
                   Value: !Ref TestInstance
               TreatMissingData: notBreaching
         Outputs:
           InstanceId:
             Description: EC2 Instance ID for testing
             Value: !Ref TestInstance
           
           SecurityGroupId:
             Description: Security Group ID
             Value: !Ref TestSecurityGroup
             
           AlarmName:
             Description: CloudWatch Alarm Name
             Value: !Ref CPUAlarm
             
           SSHCommand:
             Description: SSH command to connect to instance
             Value: !Sub 'ssh -i "AWS-DevOpsAgent-test-key.pem" ec2-user@${TestInstance.PublicDnsName}'
         ```

   1. CloudFormation コンソールで、**テンプレートファイルのアップロード**を選択します。

   1. **ファイルの選択** をクリックします。

   1. `AWS-DevOpsAgent-ec2-test.yaml` ファイルを選択する

   1. **[次へ]** をクリックします。

1. **スタックの設定**:

   1. **スタック名**:`AWS-DevOpsAgent-EC2-Test`

   1. **パラメータ :**

      1. **MyIP**: デフォルトのままにします `0.0.0.0/0` (必要に応じて後で保護できます)

   1. **[次へ]** をクリックします。

1. **スタックオプションを設定します**。

   1. デフォルトのまま、**次へ** をクリックします。

1. **確認と作成**:

   1. ** AWS CloudFormation が IAM リソースを作成する可能性があることを確認する**

   1. **送信** をクリックします。

1. **完了まで待ち**ます。

   1. スタックの作成には 3～5 分かかります

   1. ステータスは から `CREATE_IN_PROGRESS`に変わります`CREATE_COMPLETE`

   1. **重要**: EC2 インスタンスは、 AWS DevOpsAgent が追跡できる CloudFormation スタックの一部になりました。

#### オプション: 安全な SSH アクセス (インスタンスに接続する場合のみ)
<a name="optional-secure-ssh-access-only-if-you-plan-to-connect-to-the-instance"></a>

自動テストを実行するだけの場合は、このステップをスキップします。

1. **EC2 セキュリティグループに移動します**。

   1.  AWS コンソールで、**EC2** → **セキュリティグループ**に移動します。

   1. 検索`AWS-DevOpsAgent-test-sg`

1. **SSH ルールを更新します**。

   1. セキュリティグループの選択 → **インバウンドルール**タブ → **インバウンドルールの編集**

   1. SSH ルールを検索する (ポート 22)

   1. ソース`0.0.0.0/0`を から IP に変更します。`[YOUR_IP]/32`

   1. [https://whatismyipaddress.com](https://whatismyipaddress.com/) から IP を取得する

   1. **ルールの保存** をクリックします。

### ステップ 2: 自動テスト実行を待機する
<a name="step-2-wait-for-automatic-test-execution"></a>

1. **自動テスト実行**:
   + CPU ストレステストはインスタンスの起動から **5 分後に自動的に開始**されます
   + 手動による介入は不要 - 待機するだけで、テストは完全にバックグラウンドで実行されます

1. **テストをモニタリング**します。
   + インスタンスはテストを自動的に起動して準備します
   + スクリプトは 5 分間実行され、>70% の CPU 使用率を生成します。
   + CloudWatch アラームは合計 8～10 分以内にトリガーされます (5 分の遅延 \$1 アラームの場合は 3～5 分)

1. **オプション: 手動再実行** (追加テスト用):
   + インスタンスに接続する: EC2 コンソール → `AWS-DevOpsAgent-Test-Instance`→ **Connect** → **Session Manager**
   + ストレステストを再度実行します。`./cpu-stress-test.sh`
   +  AWS DevOpsAgent のレスポンスを複数回テストするのに最適です

## テストオプション B: Lambda エラー率テスト
<a name="test-option-b-lambda-error-rate-test"></a>

### ステップ 1: Lambda テスト用に CloudFormation スタックをデプロイする
<a name="step-1-deploy-cloudformation-stack-for-lambda-test"></a>

1. **CloudFormation に移動します**。

   1.  AWS コンソールで、**CloudFormation** に移動します。

   1. **スタックの作成** → **新しいリソースを使用する (標準)** をクリックします。

1. **テンプレートをアップロード**します。

   1. という名前の新しいローカルファイルを作成する`AWS-DevOpsAgent-lambda-test.yaml`

   1. この CloudFormation テンプレートをコピーしてファイルに貼り付けます。

      1. 

         ```
         AWSTemplateFormatVersion: '2010-09-09'
         Description: 'AWS DevOpsAgent Lambda Error Test Stack'
         Resources:
           # IAM Role for Lambda function
           LambdaExecutionRole:
             Type: AWS::IAM::Role
             Properties:
               RoleName: AWS-DevOpsAgentLambdaTestRole
               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-DevOpsAgent-Lambda-Test-Role
                 - Key: Purpose
                   Value: AWS-DevOpsAgent-Testing
           # Lambda function that generates errors
           TestLambdaFunction:
             Type: AWS::Lambda::Function
             Properties:
               FunctionName: AWS-DevOpsAgent-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 DevOpsAgent 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 DevOpsAgent 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 DevOpsAgent Test Error: {error_message}")
               Description: AWS DevOpsAgent beta test function - intentionally generates errors
               Timeout: 30
               Tags:
                 - Key: Name
                   Value: AWS-DevOpsAgent-Test-Lambda
                 - Key: Purpose
                   Value: AWS-DevOpsAgent-Testing
           # CloudWatch Alarm for Lambda errors
           LambdaErrorAlarm:
             Type: AWS::CloudWatch::Alarm
             Properties:
               AlarmName: AWS-DevOpsAgent-Lambda-Error-Test
               AlarmDescription: AWS-DevOpsAgent 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 DevOpsAgent validation\"}" response.json'
         ```

   1. CloudFormation コンソールで、**テンプレートファイルのアップロード**を選択します。

   1. **ファイルの選択** をクリックします。

   1. `AWS-DevOpsAgent-lambda-test.yaml` ファイルを選択する

   1. **[次へ]** をクリックします。

1. **スタックの設定**:

   1. **スタック名**:`AWS-DevOpsAgent-Lambda-Test`

   1. **[次へ]** をクリックします。

1. **スタックオプションを設定します**。

   1. デフォルトのまま、**次へ** をクリックします。

1. **確認と作成**:

   1. ** AWS CloudFormation が IAM リソースを作成する可能性があることを確認する**

   1. **送信** をクリックします。

1. **完了まで待ち**ます。

   1. スタックの作成には 2～3 分かかります

   1. ステータスは に変わります`CREATE_COMPLETE`

### ステップ 2: Lambda エラーをトリガーする
<a name="step-2-trigger-lambda-errors"></a>

1. **Lambda コンソールに移動します**。

   1. **AWS Lambda** コンソールに移動する

   1. 関数を検索する`AWS-DevOpsAgent-test-lambda`

1. **関数をテスト**します。

   1. **テスト**タブをクリックします。

   1. **新しいイベントの作成** をクリックします。

   1. **イベント名**:`AWS-DevOpsAgent-test-event`

   1. この JSON ペイロードを使用します。

      1. 

         ```
         {
         "test": "AWS DevOpsAgent validation",
         "timestamp": "2024-01-01T00:00:00Z"
         }
         ```

   1. **保存 **をクリックします。

1. **エラーの生成**:

   1. **テスト**ボタンを 3 回クリックします (それぞれ 10 秒待機)

   1. 各テストは意図的なエラーを生成します

   1. **CloudWatch アラーム**は 2～3 分以内にトリガーされます

   1. **AWS DevOpsAgent** は、次にセットアップする**オペレーターアプリ**で**調査**を使用してアラームを検出できるようになりました。

## AWS DevOps エージェントの検出を検証する
<a name="validate-aws-devops-agent-detection"></a>

### ステップ 1: CloudWatch アラームのサニティチェック (オプション)
<a name="step-1-sanity-check-cloudwatch-alarms-optional"></a>

このステップは、上記のテストがアラーム状態になったことを確認するためのものです。

**EC2 テストの場合:**
+ CloudWatch コンソールで、**アラームに移動します。**
+ ストレステストを開始してから **3～5 分**待ちます。
+ アラームに**アラーム**状態が表示されます
+ **それでも「OK**」の場合: さらに 2～3 分待ちます (CloudWatch メトリクスは遅延する可能性があります)

**Lambda テストの場合:**
+ `AWS-DevOpsAgent-Lambda-Error-Test`アラームを確認する
+ テストが実行されてから 2～3 **分以内にアラーム**内が表示されるはずです

### ステップ 2: AWS DevOps エージェント調査を開始する
<a name="step-2-start-a-aws-devops-agent-investigation"></a>

1. **AWS DevOps Agent AgentSpace **を開く

1. **管理者アクセス**をクリックします。これにより、DevOps エージェントスペースウェブアプリが新しいウィンドウで開きます。

1. 画面の右側にある**調査の開始**ボタンをクリックします。

1. 次のフォームに入力します。

   1. **調査の詳細:** 実行する調査を記述します。調査目標、調査対象領域、または関連情報についての詳細を含めます。

   1. **調査の開始点**: 調査を開始する情報を記述します。アラーム、メトリクス、ログスニペットなどについて言及して、DevOps エージェントに作業の開始点を与えることができます。この場合、先ほど作成したアラームの概要を入力します。

   1. **インシデント日時** (ISO 8601 推奨): YYYY-MM-DDTHH:MMZ

   1. **調査に名前を付けます。**例: `Oncall_investigation_1:2025-10-27`

   1. インシデントの**AWS アカウント ID** 

   1. インシデントが発生した**リージョン ** 

   1. **Priority** - AWS DevOpsAgent では、2 つの同時調査が可能です。Priority を使用すると、調査の実行順序を定義できます。

1. 調査をクリックして調査を開始します。

1. ダッシュボードにリストされている調査をクリックします。調査の詳細画面が表示され、DevOps エージェントが実行している詳細な手順を表示できます。

### 期待される結果
<a name="expected-results"></a>

#### EC2 テスト結果:
<a name="ec2-test-results"></a>
+ EC2 CPU アラームを検出する
+ 根本原因を特定します：「CPU ストレステストワークロード」
+ タイムラインを表示: ストレステスト → CPU スパイク → アラーム
+ モニタリングとスケーリングに関する推奨事項を提供します

**Lambda テスト結果:**
+ Lambda エラー率の急増を検出
+ 根本原因を特定します：「意図的なテスト例外」
+ タイムラインを表示: 関数の呼び出し → エラー → アラーム
+ エラー処理とモニタリングに関する推奨事項を提供します

## クリーンアップ手順
<a name="cleanup-instructions"></a>

### クリーンアップテスト A (EC2 テスト)
<a name="cleanup-test-a-ec2-test"></a>

#### 自動クリーンアップ
<a name="automatic-cleanup"></a>
+ インスタンスは 2 時間後に自動終了します (CloudFormation テンプレートに組み込まれています)

#### 手動クリーンアップ (即時)
<a name="manual-cleanup-immediate"></a>

1. **CloudFormation スタックの削除**:

   1. CloudFormation コンソールに移動する

   1. `AWS-DevOpsAgent-EC2-Test`スタックの選択

   1. **削除**をクリックします

   1. 削除の確認

   1. **これにより、EC2 インスタンス、セキュリティグループ、キーペア、CloudWatch アラームなどのすべてのリソースが自動的に削除されます**。 EC2 CloudWatch 

### クリーンアップテスト B (Lambda テスト)
<a name="cleanup-test-b-lambda-test"></a>

1. **CloudFormation スタックの削除**:

   1. CloudFormation コンソールに移動する

   1. `AWS-DevOpsAgent-Lambda-Test`スタックの選択

   1. **削除** をクリックします。

   1. 削除の確認

   1. **これにより、Lambda 関数、IAM ロール、CloudWatch アラームなどのすべてのリソースが自動的に削除されます**。 CloudWatch 

## トラブルシューティング
<a name="troubleshooting"></a>

### 一般的な問題
<a name="common-issues"></a>

#### EC2 インスタンスに接続できません」
<a name="cant-connect-to-ec2-instance"></a>
+ **セキュリティグループを確認する**: SSH (ポート 22) が IP に対して開いていることを確認します。
+ **キーアクセス許可の確認**: 実行`chmod 400 AWS-DevOpsAgent-test-key.pem`
+ **パブリック IP の検証**: インスタンスにはパブリック IP を割り当てる必要があります
+ **インスタンスの待機**: インスタンスが「実行中」状態であることを確認します

#### 「アラームがトリガーされない」
<a name="alarm-not-triggering"></a>
+ **メトリクスの待機**: CloudWatch メトリクスが表示されるまでに 2～5 分かかる場合があります
+ **CPU 負荷の確認**: インスタンスへの SSH と を実行して CPU >70% `top`を検証する
+ **ストレステストの検証**: を実行して`ps aux | grep yes`、ロードプロセスが実行されているかどうかを確認します。
+ **延長待機**: 最初のアラームトリガーには最大 7～8 分かかることがあります

## テスト検証
<a name="test-validation"></a>

Your AWS DevOp エージェントのテストは、次の場合に成功します。

### 技術検証
<a name="technical-validation"></a>
+ **調査精度**: EC2 テストの結果は、CPU 負荷が原因でアラームがトリガーされたことを正しく示す必要があります。Lambda テストの結果は、これが意図的な失敗であることを示す必要があります。
+ **タイムラインの精度**: 表示されているイベントの正しいシーケンス
+ **Recommendation Quality**: 提示された実用的な提案