CodeCommit

AWS는 CodeCommit을 “AWS CodeCommit은 안전한 Git 기반 리포지토리를 호스팅하는 완전관리형 소스 제어 서비스입니다.” 라고 소개하고 있습니다. 즉 GitHub의 AWS 버전입니다. CodePipeline등 AWS의 CI/CD 서비스와도 긴밀하게 연결되었고 후술할 여러 이벤트 Hook이 있어 자동화도 편리하기까지 합니다. 그래서 현재 프로젝트는 모두 CodeCommit으로 형상관리를 하고 있습니다.

서론

Devops 업무를 하다보면 CodeCommit의 여러 이벤트를 자동화하여 처리하여 효율을 높히는 방법을 고민하게 됩니다.

예를들어 PR이 생성되거나 새로운 브렌치가 생성되면 관계자에게 슬랙으로 알림을 전달하는 것 부터 보안이 철저한 회사라면 허용된 IP이외에서 레포를 다운받는걸 알람으로 받는다던지(예시입니다. 사실 이 경우는 IAM Policy를 통해 원천적으로 차단이 가능합니다.) 여러 가지 시나리오를 처리할 수 있겠지요.

CodeCommit에서는 이러한 이벤트 알람을 처리하는 방법은 크게 3가지가 있습니다.

  • CodeCommit에서 제공하는 알람을 통해 SNS호출
  • CloudWatch(EventBridge) Event Rule로 CodeCommit 이벤트를 잡아 SNS 호출
  • CloudWatch “AWS API Call via CloudTrail” 로 API 호출을 잡아 SNS호출

각 케이스에 대해서 간단히 살펴보겠습니다.

자세히 보기

AWS Config

이전 포스트에서 소개한 것 처럼 제가 관리하고 있는 AWS계정은 모든 리소스에 “Service” Tag가 붙어있어야 한다는 규칙이 AWS Config에 적용되어 모니터링 되고 있습니다. 즉, 어떤 리소스가 “Service” 태그가 붙지 않은 상태로 생성된다면 바로 슬랙으로 알림이 옵니다.

태깅이 없는 S3버킷이 생성된다면 슬랙 봇으로 이렇게 알림이 오게 됩니다.

알림이 오지 않는다?

며칠 전 Transcribe 서비스를 테스트 해 볼 일이 있어 S3 버킷을 하나 임시로 생성해서 사용하였습니다. 급하게 테스트 해볼 목적이었기 때문에 따로 태깅을 넣지 않았고 당연히 Config메세지가 슬랙으로 올 것을 기대하고 있었지만 몇 시간이 지나도 감감 무소식이었습니다. 이전에도 이런 일이 몇 차례 있었기 때문에 저는 AWS Support 티켓을 끊어서 물어보기로 했습니다. (저희 회사는 Business Plan에 가입되어 있어서 빠르게 응답을 받을 수 있습니다.)

대충 대화 내용은 이렇습니다.

  • 나: AWS Config에 태깅을 검사하는 규칙을 만들어놓고 모니터링 중인데, 태깅 없이 S3 버킷을 생성해도 알람이 울리지 않는다. 벌써 1시간 반이 지났다.
  • 상담원: AWS Conifg 인벤토리에 해당 버킷이 있는가?
  • 나: (찾아보고) 없다.
  • 상담원: 보통 몇 분 안에 인벤토리에 등록되는게 정상이다. 원인을 알아보겠다. 다른 버킷을 생성해도 그런가?
  • 나: (다른 버킷을 생성 후) 방금 생성한 버킷은 잘 등록된다.
  • 상담원: 흠… 해당 부서에 티켓을 끊어 자세히 알아보겠다.
  • 나: 부탁한다.

그렇게 채팅은 종료되었고 해당 케이스를 좀 더 조사해보겠다고 팔로우업 이메일이 왔습니다.

갑자기 알림이 울렸다.

버킷 생성후 약 4시간 반이 지났을 무렵 갑자기 알림이 똑 하고 나타났습니다. 아예 알림이 울리지 않은것도 아니라 4시간이나 딜레이 되었다는 것이 이 사건을 더욱 아리송하게 만들었습니다.

결국 알림이 오긴 왔습니다.

며칠 후 답변이 오다.

바쁜 일정에 잊고 지낸 며칠이 지난 후, 장문의 답장이 아래처럼 도착했습니다.내용 하나하나가 중요하기에 전문을 인용하겠습니다.

자세히 보기