감지에서 해결까지: AWS CloudFormation 드리프트 관리를 위한 폐쇄 루프 시스템

발행: (2025년 12월 3일 오후 12:50 GMT+9)
7 min read
원문: Dev.to

Source: Dev.to

솔루션: 인터랙티브 드리프트 관리 도구

알림 피로도를 높이는 또 다른 알림 시스템을 추가하는 대신, 이 솔루션은 인터랙티브 워크플로우를 생성합니다. 엔지니어가 Slack에서 직접 결정을 내릴 수 있도록 하는 실행 가능한 알림을 제공하며, 팀이 감지된 드리프트를 “Acknowledge”(확인) 혹은 “Ignore”(무시) 로 공식적으로 처리하도록 허용함으로써 시스템은:

  • 혼돈에 질서를 부여하고
  • 명확한 감사 추적을 만들며
  • 팀이 가장 중요한 일에 집중할 수 있게 합니다

아키텍처 청사진: 클로즈드‑루프 시스템

이 솔루션은 단순 알림을 넘어 규모에 맞는 구성 드리프트 관리를 위한 완전한 클로즈드‑루프 시스템을 구현합니다. 이벤트‑드리븐, 서버리스 컴포넌트를 기반으로 하여 정보뿐 아니라 제어 기능도 제공합니다.

트리거 (AWS Config)

프로세스는 AWS Config 서비스에서 시작됩니다. 내장 규칙 cloudformation-stack-drift-detection-check를 사용해 Config는 CloudFormation 스택을 지속적으로 모니터링합니다. 스택의 실제 구성이 템플릿과 달라지면 Config는 이를 NON_COMPLIANT 상태로 표시합니다.

라우터 (Amazon EventBridge)

NON_COMPLIANT 상태는 이벤트로 발행됩니다. Amazon EventBridge 규칙이 AWS Config에서 발생한 이러한 이벤트를 수신하고, 이벤트 페이로드를 첫 번째 AWS Lambda 함수로 전달합니다.

알림자 (AWS Lambda)

첫 번째 Lambda 함수는 초기 알림 메커니즘 역할을 합니다. EventBridge 이벤트에 의해 트리거되며 두 가지 핵심 작업을 수행합니다:

  1. 드리프트된 스택에 MONITOR_DRIFT 태그가 true 값으로 존재하는지 확인합니다.
  2. 태그가 존재한다면 **“Acknowledge”**와 “Ignore” 버튼이 포함된 풍부한 알림을 구성하여 지정된 Slack 채널로 전송하고, 즉시 가시성과 직접적인 행동 호출을 제공합니다.

상태 관리자 (AWS Lambda, API Gateway & DynamoDB)

두 번째, 별도 워크플로우가 인터랙티브 상태 관리를 담당합니다:

  • AWS Lambda 함수가 드리프트된 스택의 상세 정보를 Amazon DynamoDB 테이블에 저장하여 중앙 집중식 진실 소스를 만듭니다.
  • 엔지니어가 Slack 메시지에서 “Acknowledge” 또는 “Ignore” 를 클릭하면 해당 동작이 Amazon API Gateway 엔드포인트로 전송됩니다.
  • API Gateway 호출이 상태‑관리 Lambda를 호출하고, Lambda는 DynamoDB에 있는 해당 스택의 상태를 업데이트합니다. 이를 통해 팀은 우선순위를 관리하고, 알려진 드리프트를 무시함으로써 알림 소음을 줄이며, 명확한 감사 추적을 유지할 수 있습니다.

실전 적용

스택을 이 관리 시스템에 등록하는 과정은 매우 간단합니다. 어떤 CloudFormation 스택이든 드리프트 감지와 인터랙티브 알림을 활성화하려면 다음 한 가지 작업만 수행하면 됩니다:

스택에 MONITOR_DRIFT 태그를 true 값으로 추가합니다.

태그가 붙으면 시스템이 자동으로 스택을 감지합니다. 이후 발생하는 모든 드리프트는 Slack에서 인터랙티브 알림을 트리거하여 팀이 즉시 관리할 수 있게 합니다.

코드 뒤편: 인터랙티브 Slack 메시지

이 워크플로우의 핵심은 인터랙티브 Slack 메시지입니다. 아래는 액션 버튼이 포함된 메시지를 만들 때 사용되는 JSON 페이로드의 간소화된 예시입니다.

// A simplified look at an interactive Slack message payload
const slackMessage = {
    channel: 'your-drift-alerts-channel',
    text: `*Drift Detected in Stack: YourStackName*`,
    attachments: [
        {
            text: 'A drift from the expected template has been detected. Please review and choose an action.',
            fallback: 'You are unable to choose an action.',
            callback_id: 'drift_action_callback',
            color: '#F35B5B',
            attachment_type: 'default',
            fields: [
                { title: 'Account', value: '123456789012', short: true },
                { title: 'Region', value: 'us-east-1', short: true }
            ],
            actions: [
                {
                    name: 'acknowledge',
                    text: 'Acknowledge',
                    type: 'button',
                    value: 'acknowledged',
                    style: 'primary'
                },
                {
                    name: 'ignore',
                    text: 'Ignore',
                    type: 'button',
                    value: 'ignored'
                }
            ]
        }
    ]
};

이 스니펫은 Slack 메시지에 액션 버튼을 추가하여 인터랙티브 워크플로우를 구현하는 방법을 보여줍니다.

결론

규모에 맞는 효율적인 인프라 관리에는 수동적인 감지를 넘어 적극적인 해결이 필요합니다. 클로즈드‑루프, 인터랙티브 시스템을 구축함으로써 엔지니어가 매일 사용하는 도구(Slack)에서 직접 CloudFormation 드리프트를 효율적으로 관리할 수 있게 됩니다. 이 아키텍처는 다음을 제공합니다:

  • 견고한 감사 추적
  • 알림 피로도 감소
  • 인프라 무결성을 유지하기 위한 보다 조직적이고 우선순위가 명확한 접근 방식

지속적인 운영상의 과제를 간소화되고 관리 가능한 프로세스로 전환합니다.

Back to Blog

관련 글

더 보기 »