기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
테스트 환경 생성
이 가이드에서는 샘플 아키텍처를 사용하여 AWS DevOps 에이전트의 인시던트 대응 기능을 검증하기 위한 실습 테스트를 제공합니다. 프로덕션 시스템을 연결하기 전에 DevOps 에이전트를 테스트하려면이 추가 기능을 사용합니다.
사전 조건
AWS 관리 액세스 권한이 있는 계정
AWS DevOps 에이전트 역할 자동 생성 흐름을 사용하여 생성 및 구성된 DevOps 에이전트 공간
비용 및 안전 개요
비용 보호
EC2 테스트: 2시간 동안 무료(AWS 프리 티어) 또는 ~$0.02
Lambda 테스트: 무료(1백만 요청/월 프리 티어)
CloudWatch: 무료(경보 10개, 기본 지표 포함)
예상 총 비용: 전체 테스트의 경우 0.00~0.05 USD
이러한 테스트의 안전 기능
자동 종료: 기본 제공 자동 종료
프리 티어 적격: 가장 작은 인스턴스 유형 사용
제한된 범위: 최소한의 격리된 테스트 리소스
간편한 정리: 모든 것을 제거하는 간단한 콘솔 단계
프로덕션 영향 없음: 완전히 분리된 테스트 환경
테스트용 AWS 계정 설정
중요
인프라 리소스는 DevOps Agent Space의 기본 클라우드 AWS 계정을 생성한 계정에 배포해야 합니다. 특정 리전은 중요하지 않습니다.
AWS 콘솔에 로그인: https://console.aws.amazon.com
DevOps 에이전트 스페이스가 위치한 동일한 AWS 계정에서 작업하고 있는지 확인합니다.
테스트 리소스에 모든 리전을 사용할 수 있습니다.
참고
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 에이전트가 리소스를 올바르게 추적하고 조사할 수 있도록 합니다.
CloudFormation으로 이동합니다.
AWS 콘솔에서 "CloudFormation"을 검색하고 CloudFormation을 클릭합니다.
스택 생성 > 새 리소스 사용(표준)을 클릭합니다.
템플릿 업로드:
라는 새 로컬 파일 생성
AWS-DevOpsAgent-ec2-test.yaml이 CloudFormation 템플릿을 복사하여 파일에 붙여 넣습니다.
-
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}'
-
CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.
파일 선택을 클릭합니다.
AWS-DevOpsAgent-ec2-test.yaml파일 선택다음을 클릭합니다.
스택 구성:
스택 이름:
AWS-DevOpsAgent-EC2-Test파라미터:
MyIP: 기본값으로 둡니다
0.0.0.0/0(필요한 경우 나중에 보호할 수 있음).
다음을 클릭합니다.
스택 옵션 구성:
기본값을 그대로 두고 다음을 클릭합니다.
검토 및 생성
AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.
제출을 클릭합니다.
완료될 때까지 기다립니다.
스택 생성에는 3~5분이 소요됩니다.
상태가에서
CREATE_IN_PROGRESS로 변경됩니다.CREATE_COMPLETE중요: 이제 EC2 인스턴스가 AWS DevOpsAgent가 추적할 수 있는 CloudFormation 스택의 일부입니다!
선택 사항: SSH 액세스 보호(인스턴스에 연결하려는 경우에만 해당)
자동 테스트를 실행하려는 경우이 단계를 건너뜁니다.
EC2 보안 그룹으로 이동합니다.
AWS 콘솔에서 EC2 → 보안 그룹으로 이동합니다.
찾기
AWS-DevOpsAgent-test-sg
SSH 규칙 업데이트:
보안 그룹 선택 → 인바운드 규칙 탭 → 인바운드 규칙 편집
SSH 규칙 찾기(포트 22)
소스를에서 IP
0.0.0.0/0로 변경합니다.[YOUR_IP]/32https://whatismyipaddress.com
IP 가져오기 규칙 저장을 클릭합니다.
2단계: 자동 테스트 실행 대기
자동 테스트 실행:
CPU 스트레스 테스트는 인스턴스 시작 후 5분 후에 자동으로 시작됩니다.
수동 개입 필요 없음 - 대기하면 테스트가 백그라운드에서 완전히 실행됩니다.
테스트를 모니터링합니다.
인스턴스가 테스트를 자동으로 부팅하고 준비합니다.
스크립트는 5분 동안 실행되고 >70% CPU 사용량을 생성합니다.
CloudWatch 경보는 총 8~10분(5분 지연 + 경보의 경우 3~5분) 이내에 트리거되어야 합니다.
선택 사항: 수동 재실행(추가 테스트용):
인스턴스에 연결: EC2 콘솔 →
AWS-DevOpsAgent-Test-Instance→ 연결 → 세션 관리자스트레스 테스트를 다시 실행합니다.
./cpu-stress-test.shtesting AWS DevOpsAgent의 응답에 여러 번 적합
테스트 옵션 B: Lambda 오류율 테스트
1단계: Lambda 테스트를 위한 CloudFormation 스택 배포
CloudFormation으로 이동합니다.
AWS 콘솔에서 CloudFormation으로 이동합니다.
스택 생성 → 새 리소스 사용(표준)을 클릭합니다.
템플릿 업로드:
라는 새 로컬 파일 생성
AWS-DevOpsAgent-lambda-test.yaml이 CloudFormation 템플릿을 복사하여 파일에 붙여 넣습니다.
-
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'
-
CloudFormation 콘솔에서 템플릿 파일 업로드를 선택합니다.
파일 선택을 클릭합니다.
AWS-DevOpsAgent-lambda-test.yaml파일 선택다음을 클릭합니다.
스택 구성:
스택 이름:
AWS-DevOpsAgent-Lambda-Test다음을 클릭합니다.
스택 옵션 구성:
기본값을 그대로 두고 다음을 클릭합니다.
검토 및 생성
AWS CloudFormation에서 IAM 리소스를 생성할 수 있음을 확인합니다.
제출을 클릭합니다.
완료될 때까지 기다립니다.
스택 생성에는 2~3분이 소요됩니다.
상태가 로 변경됩니다.
CREATE_COMPLETE
2단계: Lambda 오류 트리거
Lambda 콘솔로 이동합니다.
AWS Lambda 콘솔로 이동
함수 찾기
AWS-DevOpsAgent-test-lambda
함수를 테스트합니다.
테스트 탭을 클릭합니다.
새 이벤트 생성을 클릭합니다.
이벤트 이름:
AWS-DevOpsAgent-test-event이 JSON 페이로드를 사용합니다.
-
{ "test": "AWS DevOpsAgent validation", "timestamp": "2024-01-01T00:00:00Z" }
-
저장을 클릭합니다.
오류 생성:
테스트 버튼을 3번 클릭합니다(각각 간에 10초 대기).
각 테스트는 의도적인 오류를 생성합니다.
CloudWatch 경보는 2~3분 이내에 트리거되어야 합니다.
이제 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 에이전트 조사 시작
AWS DevOps Agent AgentSpace 열기
관리자 액세스를 클릭합니다. 그러면 DevOps 에이전트 스페이스 웹 앱이 새 창에서 열립니다.
화면 오른쪽에 있는 조사 시작 버튼을 클릭합니다.
다음 양식을 작성합니다.
조사 세부 정보: 실행하려는 조사를 설명합니다. 조사 목표, 탐색할 영역 또는 관련 정보에 대해 가능한 모든 세부 정보를 포함합니다.
조사 시작점: 조사를 시작하려는 정보를 설명합니다. 경보, 지표, 로그 조각 등을 언급하여 DevOps Agent에 작업 시작점을 제공할 수 있습니다. 이 경우 방금 생성한 경보의 요약을 제공합니다.
인시던트 날짜 및 시간(ISO 8601 선호): YYYY-MM-DDTHH:MMZ
조사 이름 지정: 예:
Oncall_investigation_1:2025-10-27인시던트의 AWS 계정 ID
인시던트가 발생한 리전
Priority - AWS DevOpsAgent는 두 개의 동시 조사를 허용합니다. 우선 순위를 사용하면 조사 실행 순서를 정의할 수 있습니다.
조사를 클릭하여 조사를 시작합니다.
대시보드에 나열된 조사를 클릭합니다. DevOps 에이전트가 수행하는 세분화된 단계를 볼 수 있는 조사 세부 정보 화면으로 이동합니다.
예상 결과
EC2 테스트 결과:
EC2 CPU 경보 감지
근본 원인 식별: "CPU 스트레스 테스트 워크로드"
타임라인 표시: 스트레스 테스트 → CPU 스파이크 → 경보
모니터링 및 조정에 대한 권장 사항을 제공합니다.
Lambda 테스트 결과:
Lambda 오류율 스파이크 감지
근본 원인 식별: "의도적 테스트 예외"
타임라인 표시: 함수 호출 → 오류 → 경보
오류 처리 및 모니터링에 대한 권장 사항을 제공합니다.
정리 지침
정리 테스트 A(EC2 테스트)
자동 정리
인스턴스는 2시간 후에 자동 종료됩니다(CloudFormation 템플릿에 빌드됨).
수동 정리(즉시)
CloudFormation 스택 삭제:
CloudFormation 콘솔로 이동
AWS-DevOpsAgent-EC2-Test스택 선택삭제를 클릭합니다.
삭제 확인
그러면 EC2 인스턴스, 보안 그룹, 키 페어 및 CloudWatch 경보와 같은 모든 리소스가 자동으로 삭제됩니다.
정리 테스트 B(Lambda 테스트)
CloudFormation 스택 삭제:
CloudFormation 콘솔로 이동
AWS-DevOpsAgent-Lambda-Test스택 선택삭제를 클릭합니다.
삭제 확인
그러면 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 테스트 결과는 이것이 의도적인 실패였음을 나타내야 합니다.
타임라인 정확도: 표시된 이벤트의 올바른 시퀀스
권장 품질: 실행 가능한 제안 제공