1- name : EC2-DIAGNOSTIC
1+ name : EC2-READ- DIAGNOSTIC
22
33on :
44 workflow_dispatch :
55
66jobs :
7- diagnose :
8- name : Diagnose EC2 Instance
7+ read-diag :
8+ name : Read S3 Diagnostic
99 runs-on : ubuntu-latest
1010
1111 steps :
@@ -16,81 +16,50 @@ jobs:
1616 aws-secret-access-key : ${{ secrets.AWS_PROD_SECRET_KEY }}
1717 aws-region : ap-northeast-2
1818
19- - name : Check IAM identity and permissions
19+ - name : Check latest CodeDeploy deployment
2020 run : |
21- echo "=== IAM 정보 ==="
22- aws sts get-caller-identity 2>&1 || true
23-
24- echo ""
25- echo "=== IAM 정책 확인 ==="
26- ACCOUNT=$(aws sts get-caller-identity --query Account --output text 2>/dev/null)
27- USER_NAME=$(aws sts get-caller-identity --query Arn --output text 2>/dev/null | awk -F'/' '{print $NF}')
28- echo "Account: $ACCOUNT"
29- echo "User: $USER_NAME"
30-
31- echo ""
32- echo "=== Attached Policies ==="
33- aws iam list-attached-user-policies --user-name "$USER_NAME" 2>&1 || echo "IAM 정책 조회 권한 없음"
34-
35- echo ""
36- echo "=== Inline Policies ==="
37- aws iam list-user-policies --user-name "$USER_NAME" 2>&1 || echo "IAM 인라인 정책 조회 권한 없음"
38-
39- - name : CodeDeploy deployment group info
40- run : |
41- echo "=== 배포 그룹 상세 ==="
42- aws deploy get-deployment-group \
43- --application-name runnect-prod-codedeploy \
44- --deployment-group-name runnect-prod-codedeploy-group \
45- --output json 2>&1 || echo "배포 그룹 조회 실패"
46-
47- - name : Latest deployment details
48- run : |
49- echo "=== 최근 배포 목록 ==="
5021 LATEST=$(aws deploy list-deployments \
5122 --application-name runnect-prod-codedeploy \
5223 --deployment-group-name runnect-prod-codedeploy-group \
5324 --query "deployments[0]" \
5425 --output text 2>/dev/null)
5526 echo "Latest deployment: $LATEST"
5627
57- if [ -n "$LATEST" ] && [ "$LATEST" != "None" ]; then
58- echo ""
59- echo "=== 배포 상세 ==="
60- aws deploy get-deployment --deployment-id "$LATEST" --output json 2>&1
61-
62- echo ""
63- echo "=== 배포 인스턴스 목록 ==="
64- aws deploy list-deployment-instances --deployment-id "$LATEST" --output json 2>&1 || echo "인스턴스 목록 조회 실패"
65-
66- echo ""
67- echo "=== 배포 타겟 상세 ==="
68- INSTANCE_IDS=$(aws deploy list-deployment-instances --deployment-id "$LATEST" --query "instancesList" --output text 2>/dev/null)
69- for INST in $INSTANCE_IDS; do
70- echo "--- Instance: $INST ---"
71- aws deploy get-deployment-instance --deployment-id "$LATEST" --instance-id "$INST" --output json 2>&1 || echo "조회 실패"
72- done
73- fi
28+ aws deploy get-deployment --deployment-id "$LATEST" \
29+ --query "deploymentInfo.{status:status, createTime:createTime, completeTime:completeTime}" \
30+ --output json 2>&1
7431
75- - name : Check SSM access
32+ - name : List S3 diagnostics
7633 run : |
77- echo "=== SSM 인스턴스 목록 ==="
78- aws ssm describe-instance-information --output json 2>&1 || echo "SSM 권한 없음"
79-
80- - name : Try EC2 describe (may fail)
81- run : |
82- echo "=== EC2 인스턴스 조회 시도 ==="
83- aws ec2 describe-instances --output json 2>&1 || echo "EC2 권한 없음"
34+ echo "=== S3 diagnostics 폴더 ==="
35+ aws s3 ls s3://runnect-prod-bucket/diagnostics/ 2>&1 || echo "diagnostics 폴더 없거나 접근 불가"
8436
8537 echo ""
86- echo "=== Elastic IP 조회 시도 ==="
87- aws ec2 describe-addresses --public-ips 3.35.195.11 2>&1 || echo "Elastic IP 조회 실패"
38+ echo "=== S3 버킷 전체 목록 ==="
39+ aws s3 ls s3://runnect-prod-bucket/ 2>&1 || echo "S3 접근 실패"
8840
89- echo ""
90- echo "=== 보안 그룹 조회 시도 ==="
91- aws ec2 describe-security-groups 2>&1 || echo "보안 그룹 조회 실패"
41+ - name : Download and display diagnostic file
42+ run : |
43+ echo "=== 진단 파일 다운로드 시도 ==="
44+ LATEST_FILE=$(aws s3 ls s3://runnect-prod-bucket/diagnostics/ --recursive 2>/dev/null | sort | tail -1 | awk '{print $4}')
9245
93- - name : Check S3 bucket
46+ if [ -n "$LATEST_FILE" ]; then
47+ echo "Found: $LATEST_FILE"
48+ aws s3 cp "s3://runnect-prod-bucket/$LATEST_FILE" /tmp/diagnostic.txt 2>&1
49+ echo ""
50+ echo "=== DIAGNOSTIC CONTENTS ==="
51+ cat /tmp/diagnostic.txt
52+ else
53+ echo "진단 파일이 없습니다."
54+ echo ""
55+ echo "S3에 직접 접근하여 모든 파일 확인..."
56+ aws s3 ls s3://runnect-prod-bucket/ --recursive 2>&1 | tail -20
57+ fi
58+
59+ - name : Health check from GitHub Actions
9460 run : |
95- echo "=== S3 버킷 확인 ==="
96- aws s3 ls s3://runnect-prod-bucket/ 2>&1 || echo "S3 접근 실패"
61+ echo "=== External Health Check ==="
62+ for PORT in 80 8081 8082; do
63+ HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" --connect-timeout 5 --max-time 10 http://3.35.195.11:$PORT/actuator/health 2>/dev/null || echo "000")
64+ echo "Port $PORT: HTTP $HTTP_CODE"
65+ done
0 commit comments