View a markdown version of this page

테스트 환경 생성 - AWS DevOps 에이전트

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

테스트 환경 생성

이 가이드에서는 샘플 아키텍처를 사용하여 AWS DevOps 에이전트의 인시던트 대응 기능을 검증하기 위한 실습 테스트를 제공합니다. 프로덕션 시스템을 연결하기 전에 DevOps 에이전트를 테스트하려면이 추가 기능을 사용합니다.

사전 조건

  • AWS 관리 액세스 권한이 있는 계정

  • AWS DevOps 에이전트 역할 자동 생성 흐름을 사용하여 생성 및 구성된 DevOps 에이전트 공간

  • EC2 테스트의 경우: 배포할 리전에 서브넷이 하나 이상 있는 기존 VPC입니다.

비용 및 안전 개요

비용 보호

  • EC2 테스트: 2시간 동안 무료(AWS 프리 티어) 또는 ~$0.02

  • Lambda 테스트: 무료(1백만 요청/월 프리 티어)

  • CloudWatch: 무료(경보 10개, 기본 지표 포함)

  • 예상 총 비용: 전체 테스트의 경우 0.00~0.05 USD

이러한 테스트의 안전 기능

  • 자동 종료: 기본 제공 자동 종료

  • 프리 티어 적격: 가장 작은 인스턴스 유형 사용

  • 제한된 범위: 최소한의 격리된 테스트 리소스

  • 간편한 정리: 모든 것을 제거하는 간단한 콘솔 단계

  • 프로덕션 영향 없음: 테스트 환경을 완전히 분리

테스트를 위한 AWS 계정 설정

중요

인프라 리소스는 DevOps Agent Space의 기본 클라우드 AWS 계정을 생성한 계정에 배포해야 합니다. 특정 리전은 중요하지 않습니다.

  1. AWS 콘솔에 로그인: https://console.aws.amazon.com

  2. DevOps 에이전트 스페이스가 위치한 동일한 AWS 계정에서 작업하고 있는지 확인합니다.

  3. 테스트 리소스에 모든 리전을 사용할 수 있습니다.

참고

DevOps 에이전트의 기본 계정과 생성 중인 테스트 환경 리소스 간의 1:1 매핑은 테스트 설정을 간소화합니다. DevOps 에이전트 공간을 쉽게 확장하여 보조 계정을 포함하고 교차 계정 조사를 활성화할 수 있습니다.

테스트 선택

테스트를 독립적으로 실행하거나 둘 다 함께 실행할 수 있습니다.

테스트 옵션 A: EC2 CPU 용량 테스트

용도: EC2 성능 문제를 감지하고 조사하는 Validate AWS DevOps 에이전트의 기능

예상 시간: 5분 설정 + 10분 자동 실행

난이도: 완전 자동화(수동 단계가 필요하지 않음)

테스트 옵션 B: Lambda 오류율 테스트

용도: Lambda 함수 오류를 감지하고 조사하는 Validate AWS DevOps 에이전트의 기능

예상 시간: 설정 10분 + 트리거 2분

난이도: 매우 쉬움

테스트 옵션 A: EC2 CPU 용량 테스트

1단계: EC2 테스트를 위한 CloudFormation 스택 배포

CloudFormation을 사용하여 테스트 리소스를 생성하면 AWS DevOps 에이전트가 리소스를 올바르게 추적하고 조사할 수 있습니다.

  1. CloudFormation으로 이동합니다.

    1. AWS 콘솔에서 "CloudFormation"을 검색하고 CloudFormation을 클릭합니다.

    2. 스택 생성 > 새 리소스 사용(표준)을 클릭합니다.

  2. 업로드 템플릿:

    1. 라는 새 로컬 파일 생성AWS-DevOpsAgent-ec2-test.yaml

    2. 이 CloudFormation 템플릿을 복사하여 파일에 붙여 넣습니다.

      1. AWSTemplateFormatVersion: '2010-09-09' Description: 'AWS DevOps Agent EC2 CPU Test Stack' Parameters: VpcId: Type: AWS::EC2::VPC::Id Description: ID of an existing VPC where the test instance will be launched. SubnetId: Type: AWS::EC2::Subnet::Id Description: ID of an existing subnet within the selected VPC. Choose a subnet that routes to an internet gateway if you plan to connect via SSH. 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: GroupDescription: AWS DevOps Agent beta testing security group VpcId: !Ref VpcId 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 # IAM Role for Session Manager access SSMInstanceRole: Type: AWS::IAM::Role Properties: AssumeRolePolicyDocument: Version: '2012-10-17' Statement: - Effect: Allow Principal: Service: ec2.amazonaws.com Action: sts:AssumeRole ManagedPolicyArns: - arn:aws:iam::aws:policy/AmazonSSMManagedInstanceCore Tags: - Key: Name Value: AWS-DevOpsAgent-Test-SSMRole - Key: Purpose Value: AWS-DevOpsAgent-Testing # Instance profile wrapping the SSM role SSMInstanceProfile: Type: AWS::IAM::InstanceProfile Properties: Roles: - !Ref SSMInstanceRole # 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 SubnetId: !Ref SubnetId SecurityGroupIds: - !GetAtt TestSecurityGroup.GroupId IamInstanceProfile: !Ref SSMInstanceProfile InstanceInitiatedShutdownBehavior: terminate 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: !GetAtt TestSecurityGroup.GroupId 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}'
    3. CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.

    4. 파일 선택을 클릭합니다.

    5. AWS-DevOpsAgent-ec2-test.yaml 파일 선택

    6. 다음을 클릭합니다.

  3. 스택 구성:

    1. 스택 이름:AWS-DevOpsAgent-EC2-Test

    2. 파라미터:

      1. VpcId: 드롭다운에서 기존 VPC를 선택합니다.

      2. SubnetId: 선택한 VPC 내에서 서브넷을 선택합니다. SSH 액세스의 경우 서브넷이 인터넷 게이트웨이로 라우팅되고 인스턴스에 퍼블릭 IPv4 주소가 연결되어 있어야 합니다. 그렇지 않으면 SSHCommand 출력이 비어 있고 SSH 연결이 성공하지 못합니다.

      3. MyIP: 기본값으로 둡니다0.0.0.0/0(필요한 경우 나중에 보호할 수 있음).

    3. 다음을 클릭합니다.

  4. 스택 옵션 구성:

    1. 기본값을 그대로 두고 다음을 클릭합니다.

  5. 검토 및 생성

    1. AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.

    2. 제출을 클릭합니다.

  6. 완료될 때까지 기다립니다.

    1. 스택 생성에는 3~5분이 소요됩니다.

    2. 상태가에서 CREATE_IN_PROGRESS로 변경됩니다.CREATE_COMPLETE

    3. 중요: 이제 EC2 인스턴스가 AWS DevOpsAgent가 추적할 수 있는 CloudFormation 스택의 일부입니다!

선택 사항: SSH 액세스 보호(인스턴스에 연결하려는 경우에만 해당)

자동 테스트를 실행하려는 경우이 단계를 건너뜁니다.

  1. 보안 그룹을 찾습니다.

    1. AWS 콘솔에서 CloudFormation으로 이동하여 AWS-DevOpsAgent-EC2-Test 스택을 선택합니다.

    2. 출력 탭을 열고 값을 복사합니다SecurityGroupId(로 시작sg-).

    3. EC2보안 그룹으로 이동하여 ID를 검색 창에 붙여 넣어 보안 그룹을 엽니다.

  2. SSH 규칙 업데이트:

    1. 보안 그룹 선택 → 인바운드 규칙 탭 → 인바운드 규칙 편집

    2. SSH 규칙 찾기(포트 22)

    3. 소스를에서 IP0.0.0.0/0로 변경합니다.[YOUR_IP]/32

    4. https://whatismyipaddress.com IP 가져오기

    5. 규칙 저장을 클릭합니다.

2단계: 자동 테스트 실행 대기

  1. 자동 테스트 실행:

    • CPU 스트레스 테스트는 인스턴스 시작 후 5분 후에 자동으로 시작됩니다.

    • 수동 개입 필요 없음 - 대기하면 테스트가 백그라운드에서 완전히 실행됩니다.

  2. 테스트를 모니터링합니다.

    • 인스턴스가 자동으로 테스트를 부팅하고 준비합니다.

    • 스크립트는 5분 동안 실행되고 >70% CPU 사용량을 생성합니다.

    • CloudWatch 경보는 총 8~10분(5분 지연 + 경보의 경우 3~5분) 이내에 트리거되어야 합니다.

  3. 선택 사항: 수동 재실행(추가 테스트용):

    • 인스턴스에 연결: EC2 콘솔 → AWS-DevOpsAgent-Test-Instance연결세션 관리자

    • 스트레스 테스트를 다시 실행합니다../cpu-stress-test.sh

    • testing AWS DevOpsAgent의 응답에 여러 번 적합

테스트 옵션 B: Lambda 오류율 테스트

1단계: Lambda 테스트를 위한 CloudFormation 스택 배포

  1. CloudFormation으로 이동합니다.

    1. AWS 콘솔에서 CloudFormation으로 이동합니다.

    2. 스택 생성새 리소스 사용(표준)을 클릭합니다.

  2. 템플릿 업로드:

    1. 라는 새 로컬 파일 생성AWS-DevOpsAgent-lambda-test.yaml

    2. 이 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'
    3. CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.

    4. 파일 선택을 클릭합니다.

    5. AWS-DevOpsAgent-lambda-test.yaml 파일 선택

    6. 다음을 클릭합니다.

  3. 스택 구성:

    1. 스택 이름:AWS-DevOpsAgent-Lambda-Test

    2. 다음을 클릭합니다.

  4. 스택 옵션 구성:

    1. 기본값을 그대로 두고 다음을 클릭합니다.

  5. 검토 및 생성

    1. AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.

    2. 제출을 클릭합니다.

  6. 완료될 때까지 기다립니다.

    1. 스택 생성에는 2~3분이 소요됩니다.

    2. 상태가 로 변경됩니다.CREATE_COMPLETE

2단계: Lambda 오류 트리거

  1. Lambda 콘솔로 이동합니다.

    1. AWS Lambda 콘솔로 이동

    2. 함수 찾기AWS-DevOpsAgent-test-lambda

  2. 함수를 테스트합니다.

    1. 테스트 탭을 클릭합니다.

    2. 새 이벤트 생성을 클릭합니다.

    3. 이벤트 이름:AWS-DevOpsAgent-test-event

    4. 이 JSON 페이로드를 사용합니다.

      1. { "test": "AWS DevOpsAgent validation", "timestamp": "2024-01-01T00:00:00Z" }
    5. 저장을 클릭합니다.

  3. 오류 생성:

    1. 테스트 버튼을 3번 클릭합니다(각각 간에 10초 대기).

    2. 각 테스트는 의도적인 오류를 생성합니다.

    3. CloudWatch 경보는 2~3분 이내에 트리거되어야 합니다.

    4. 이제 AWS DevOpsAgent는 다음에 설정할 운영자 앱에서 조사를 통해 경보를 감지할 수 있습니다.

Validate AWS DevOps 에이전트 감지

1단계: CloudWatch 경보 안전성 검사(선택 사항)

이 단계는 위의 테스트가 이제 경보 상태인지 확인하기 위한 것입니다.

EC2 테스트의 경우:

  • CloudWatch 콘솔에서 경보로 이동합니다.

  • 스트레스 테스트를 시작한 후 3~5분 정도 기다립니다.

  • 경보에 경보 상태가 표시되어야 합니다.

  • 여전히 “확인”인 경우: 2~3분 더 기다립니다(CloudWatch 지표가 지연될 수 있음).

Lambda 테스트의 경우:

  • AWS-DevOpsAgent-Lambda-Error-Test경보 확인

  • 테스트 실행 후 2~3분 이내에 경보가 표시되어야 합니다.

2단계: a AWS DevOps 에이전트 조사 시작

  1. AWS DevOps Agent AgentSpace 열기

  2. 관리자 액세스를 클릭합니다. 그러면 DevOps 에이전트 스페이스 웹 앱이 새 창에서 열립니다.

  3. 화면 오른쪽에 있는 조사 시작 버튼을 클릭합니다.

  4. 다음 양식을 작성합니다.

    1. 조사 세부 정보: 실행하려는 조사를 설명합니다. 조사 목표, 탐색할 영역 또는 관련 정보에 대해 가능한 모든 세부 정보를 포함합니다.

    2. 조사 시작점: 조사를 시작하려는 정보를 설명합니다. 경보, 지표, 로그 조각 등을 언급하여 DevOps Agent에 작업 시작점을 제공할 수 있습니다. 이 경우 방금 생성한 경보의 요약을 제공합니다.

    3. 인시던트 날짜 및 시간(ISO 8601 선호): YYYY-MM-DDTHH:MMZ

    4. 조사 이름 지정: 예: Oncall_investigation_1:2025-10-27

    5. 인시던트의 AWS 계정 ID

    6. 인시던트가 발생한 리전

    7. Priority - AWS DevOpsAgent는 두 개의 동시 조사를 허용합니다. 우선 순위를 사용하면 조사 실행 순서를 정의할 수 있습니다.

  5. 조사를 클릭하여 조사를 시작합니다.

  6. 대시보드에 나열된 조사를 클릭합니다. DevOps 에이전트가 수행하는 세분화된 단계를 볼 수 있는 조사 세부 정보 화면으로 이동합니다.

예상 결과

EC2 테스트 결과:

  • EC2 CPU 경보 감지

  • 근본 원인 식별: "CPU 스트레스 테스트 워크로드"

  • 타임라인 표시: 스트레스 테스트 → CPU 스파이크 → 경보

  • 모니터링 및 조정에 대한 권장 사항을 제공합니다.

Lambda 테스트 결과:

  • Lambda 오류율 스파이크 감지

  • 근본 원인 식별: "의도적 테스트 예외"

  • 타임라인 표시: 함수 호출 → 오류 → 경보

  • 오류 처리 및 모니터링에 대한 권장 사항을 제공합니다.

정리 지침

정리 테스트 A(EC2 테스트)

자동 정리

  • 인스턴스는 2시간 후에 자동 종료됩니다(CloudFormation 템플릿에 빌드됨).

수동 정리(즉시)

  1. CloudFormation 스택 삭제:

    1. CloudFormation 콘솔로 이동

    2. AWS-DevOpsAgent-EC2-Test스택 선택

    3. 삭제를 클릭합니다.

    4. 삭제 확인

    5. 그러면 EC2 인스턴스, 보안 그룹, 키 페어 및 CloudWatch 경보와 같은 모든 리소스가 자동으로 삭제됩니다.

정리 테스트 B(Lambda 테스트)

  1. CloudFormation 스택 삭제:

    1. CloudFormation 콘솔로 이동

    2. AWS-DevOpsAgent-Lambda-Test스택 선택

    3. 삭제를 클릭합니다.

    4. 삭제 확인

    5. 그러면 Lambda 함수, IAM 역할 및 CloudWatch 경보와 같은 모든 리소스가 자동으로 삭제됩니다.

문제 해결

일반적인 문제

"EC2 인스턴스에 연결할 수 없음"

  • 보안 그룹 확인: SSH(포트 22)가 IP에 열려 있는지 확인합니다.

  • 키 권한 확인: 실행chmod 400 AWS-DevOpsAgent-test-key.pem

  • 퍼블릭 IP 확인: 인스턴스에 퍼블릭 IP가 할당되어 있어야 합니다.

  • 인스턴스 대기: 인스턴스가 “실행 중” 상태인지 확인합니다.

“경보가 트리거되지 않음”

  • 지표 대기: CloudWatch 지표가 표시되는 데 2~5분이 걸릴 수 있습니다.

  • CPU 로드 확인: 인스턴스에 대한 SSH 및를 실행top하여 CPU >70% 확인

  • 스트레스 테스트 확인:를 실행ps aux | grep yes하여 로드 프로세스가 실행 중인지 확인

  • 대기 시간 연장: 첫 번째 경보 트리거에 최대 7~8분이 걸리는 경우도 있음

테스트 검증

Your AWS DevOp 에이전트 테스트는 다음과 같은 경우에 성공합니다.

기술 검증

  • 조사 정확도: EC2 테스트 결과에 CPU 로드로 인해 경보가 트리거되었음을 올바르게 표시해야 합니다. Lambda 테스트 결과는 이것이 의도적인 실패였음을 나타내야 합니다.

  • 타임라인 정확도: 표시된 이벤트의 올바른 시퀀스

  • 권장 품질: 실행 가능한 제안 제공