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호출

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

자세히 보기

Windows 10에서 VScode의 Git을 사용하다보면 같은 Host를 가진 Git주소에 서로 다른 계정을 사용시 미리 저장된 인증정보를 불러오지 못하는 경우가 있다.

예를들어 AWS에서 제공하는 Git 저장소 서비스인 CodeCommit의 경우 회사에서도 사용하고 필자의 개인적인 프로젝트도 저장하고 있다. 그래서 한번 회사 계정으로 CodeCommit을 사용한 경우 개인 계정의 인증정보가 먹통이 되면서 Git 저장소를 찾을 수 없다는 메세지를 뿜는다.

아예 403에러가 뜬다.

이 경우에는 우선 해결책은 윈도우즈의 자격증명관리자->Windows 자격증명에서 기존의 저장된 자격증명을 지우는것이다.

여기서 충돌이 발생하는 Git 호스트를 지운다.

다만 이 경우에는 매번 이렇게 인증정보를 지우고 암호를 입력해야 하기 때문에 매우 번거롭다.

따라서 다음 명령어로 여러 계정의 Git 인증정보를 저장해 둘 수 있다.

1
2
git config --global credential.useHttpPath true

이렇게 입력하면 서로 다른 Git(CodeCommit) 저장소를 사용할때 서로 다른 인증정보를 저장할 수 있다.

WRITTEN BY
Dev Lead | Certified Professional AWS Solutions Architect/Devops Engineer