들어가기 앞서
현재 운영중인 서비스는 AWS Control Tower 환경에 구축되어 있다. Control Tower 의 각 계정의 리소스는 Monitoring 계정에서 중앙 집중화로 메트릭을 수집하여 Monitoring 계정의 CloudWatch 에서 대시보드를 구성하고 경보를 생성하고 있다. 중앙 모니터링 계정 활성화에 대한 방법은 아래의 링크를 확인하도록 하자
[Hands-On]Amazon CloudWatch를 이용한 모니터링 중앙화 – 교보DTS 기술 블로그
안녕하세요. 교보정보통신 클라우드 기술팀에서 Solutions Architect를 업무를 하고 있는 배은정입니다. 오늘은 Amazon CloudWatch를 이용한 모니터링 중앙화에 관해 이야기해 보겠습니다. Amazon CloudWatch로
blog.kyobodts.co.kr
위의 포스팅은 중앙 모니터링 계정을 통해 CloudWatch 에서 각 계정의 메트릭을 수집하는 방법에 대해 소개한다.
첫번째 문제점
Production 계정에서는 CloudFront(CDN)를 사용하고 있다. CloudFront는 글로벌 서비스이므로, 실제 리소스는 서울 리전이 아닌 미국 버지니아 북부(us-east-1) 리전에 생성된다. 이로 인해 다음과 같은 문제가 발생한다. Production 계정의 서울 리전에 위치한 리소스나 서비스의 메트릭은 Monitoring 계정(서울 리전)에서 정상적으로 수집되고 확인할 수 있다. 그러나 CloudFront처럼 미국 버지니아 리전에 생성된 리소스의 메트릭은 동일한 방식으로 수집되지 않는다.
이는 대부분의 CloudWatch Metric 및 Cross-Account Metric 접근 정책이 리전 단위로 설정되기 때문이며, 미국 버지니아 리전에서 생성된 CloudFront 메트릭은 해당 리전에서 명시적으로 공유하지 않으면 모니터링 계정에서 확인할 수 없다.
해결 방법 (멀티 계정 멀티 리전 활성화) - 소스 계정
이를 해결하기 위해서는 멀티 계정 멀티 리전 기능을 활성화해야 한다.
- 우선, 소스 계정 (여기서는 Production 계정) 에서 CloudWatch 콘솔의 설정 탭으로 이동한다.

- 하단의 계정 전환 활성화의 'CloudWatch 데이터 공유' 를 확인할 수 있다. 해당 설정의 구성을 선택한다.

- 공유 탭의 계정 ID 에 대상 계정 (여기서는 Monitoring 계정) 의 ID 를 입력한다.
- 권한에 대해 설정을 선택한다.
- CloudWatch 지표, 대시보드 및 알람에 대한 읽기 전용 액세스 제공 : 이 옵션을 선택하면 모니터링 계정에서 소스 계정의 CloudWatch 데이터를 포함하는 위젯이 있는 교차 계정 대시보드를 생성할 수 있다.
- CloudWatch 자동 대시보드를 포함 : 이 옵션을 선택하면 모니터링 계정의 사용자도 소스 계정의 자동 대시보드에 있는 정보를 볼 수 있다.
- X-Ray 추적 맵에 대한 읽기 전용 액세스를 포함 : 이 옵션을 선택하면 모니터링 계정의 사용자도 소스 계정의 X-Ray 추적 맵과 X-Ray 추적 정보를 볼 수 있다.
- 계정의 모든 항목에 대한 전체 읽기 전용 액세스 : 이 옵션을 선택하면 공유 대상 계정에서 소스 계정의 CloudWatch 데이터를 포함하는 위젯이 있는 교차 계정 대시보드를 생성할 수 있다. 또한 해당 계정에서 소스 계정을 더 깊이 들여다보고 다른 AWS 서비스 콘솔을 통해 귀하 계정의 데이터를 확인할 수 있다.
- CloudFomation 템플릿 시작 버튼 클릭

- 해당 부분은 모두 기본값으로 두고 넘어가도 무방하다.
- 스택 생성 버튼을 클릭한다.
앞선 절차를 완료하면, 하나의 계정과 데이터를 공유할 수 있는 IAM 역할이 생성된다. 조직 내의 모든 계정과 데이터를 공유하려면, IAM 역할을 새로 만들거나 기존 역할을 수정해야 한다. 단, 조직 내의 모든 계정을 신뢰하는 경우에만 이 작업을 수행해야 한다.
조직 전체와 CloudWatch 데이터를 공유하려면?
- 아직 앞선 절차(특정 하나의 계정과 공유)를 수행하지 않았다면, 먼저 완료한다
- AWS Management Console에 로그인한 후 IAM 콘솔 접근
- 좌측 탐색 창에서 Roles를 선택
- 역할 목록에서 CloudWatch-CrossAccountSharingRole을 선택
- Trust relationships 탭을 선택한 다음, Edit trust relationship을 클릭
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::123456789012:root"
},
"Action": "sts:AssumeRole"
}
]
}
- 위 정책을 다음과 같이 변경. "org-id"는 본인의 AWS Organization ID를 입력
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "*"
},
"Action": "sts:AssumeRole",
"Condition": {
"StringEquals": {
"aws:PrincipalOrgID": "org-id"
}
}
}
]
}
- Update Trust Policy를 선택하여 변경사항을 저장
해결 방법 (멀티 계정 멀티 리전 활성화) - 모니터링 계정
- 모니터링 계정으로 이동하여 CloudWatch 설정 탭으로 이동한다.

- 이번엔 하단의 '교차 계정 교차 리전 보기' 의 구성을 선택한다. (전 이미 설정하여 편집으로 되어 있습니다)

- 매번 계정 ID를 입력하거나, 조직 계정 사용시 계정 선택기를 생성하거나 혹은 사용자 지정 계정 선택기를 선택할 수 있다.
- Account Id Input : 교차 계정 데이터를 조회할 때마다 전환하려는 계정 ID를 수동으로 입력
- AWS Organization account selector : AWS Organizations와의 교차 계정 통합을 완료할 때 지정한 계정들이 드롭다운 목록에 표시된다. 이후 콘솔을 사용할 때, CloudWatch는 이 목록을 보여주며 교차 계정 데이터를 조회할 계정을 선택
- Custom account selector : 직접 계정 ID 목록을 입력하라는 메시지가 표시
- 쉽게 하려면 사용자 지정 계정 선택기를 선택하여 아래에 계정ID 와 레이블을 추가해주는 것이 좋다.
- 입력을 완료하고 변경 사항 저장을 클릭한다.
구성 완료 및 주의점
자, 이렇게 하면 멀티 계정 멀티 리전에 대한 설정은 모두 끝이 났다. 설정이 완료되고 Monitoring 계정으로 이동하면 CloudWatch 콘솔 메인 화면 상단에 계정과 리전을 선택할 수 있다. 혹은 '모든 지표' 탭에서도 계정별 및 리전별로 지표를 확인할 수 있다.
주의할 점은 SSO로 접근하는 모든 사용자마다 '교차 계정 교차 리전 보기' 에서 편집을 통해 계정ID 와 레이블을 입력하여 '사용자 지정 계정 선택기'를 활성화해야 한다. 한번 설정하면 유지되긴 하지만, 신경쓰인다면 'AWS 조직 계정 선택기' 를 사용하도록 하자
두번째 문제점 발생 - 해결 방안
대시보드에 멀티 계정 멀티 리전의 메트릭이 등록되니 기분이 좋았지만 두번째 문제점이 있었다. 현재 모니터링 계정에서 경보가 발생하면 AWS SNS 를 사용하여 Lambda 를 대상으로 사용해 IDC 센터의 UMS 서버와 통신하고 있다. 하지만 버지니아 북부 리전의 메트릭을 Monitoring 계정 (서울 리전) 에서 경보 생성이 불가능하다는 점이였다.
AWS Support 에 문의하였지만 결론적으로 현재로써는 경보 생성은 불가능 하다는 답변을 받았다. 이를 해결하기 위해 아래와 같은 아키텍처를 통해 해결하였다.

서울 리전 - 소스 계정 구조
- 서울 리전에 위치한 소스 계정은 중앙 집중 모니터링 계정 활성화 기능을 통해 구성되어 있다.
- 이 구조에서는 소스 계정의 CloudWatch 메트릭이 모니터링 계정의 CloudWatch로 수집된다.
- 모니터링 계정에서는 해당 메트릭을 기반으로 CloudWatch 경보를 생성하고, 이 경보는 SNS 주제로 트리거된다.
- SNS에 구독된 Lambda 함수는 이벤트를 수신한 후, IDC 센터에 위치한 UMS 서버로 전문(메시지)을 생성 및 전달한다.
버지니아 북부 리전 - 소스 계정 구조
- 버지니아 북부 리전에 위치한 소스 계정 역시 전체적인 구조는 서울 리전과 동일하다.
- 버지니아 리전에서는 소스 계정 내에서 직접 CloudWatch 경보를 생성하고,
- 해당 경보를 소스 계정 내 SNS로 트리거한 뒤,
- 구독된 Lambda 함수가 이벤트를 수신하여, 이를 모니터링 계정의 SNS 주제로 재전달한다.
- 이후의 경보 처리 흐름은 서울 리전과 동일하게 동작한다.
'AWS > 솔루션 사례 & 문제 해결' 카테고리의 다른 글
| [AWS] MSK 업그레이드 (Console & Terraform) (0) | 2025.10.28 |
|---|---|
| [AWS] AI 캐리커처 생성 이벤트 Solution Architect (2) | 2025.07.31 |
| AWS: 재부팅 후 UserData 적용 실패 사례 (MIME 구성 관련) (0) | 2025.04.22 |
| AWS: Cross-Account 환경에서 중앙 집중형 이벤트 알람 구성 (0) | 2025.04.18 |
| AWS: 재부팅 시에도 EC2 UserData를 실행하는 방법 (0) | 2025.04.14 |