기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.
CodeBuild 및 이벤트를 사용하여 에서 Amazon S3 CodeCommit 로 CloudWatch 이벤트 기반 백업 자동화
작성자: Kirankumar Chandrashekar(AWS)
환경: 프로덕션 | 기술: DevOps, 스토리지 및 백업 | 워크로드: 기타 모든 워크로드 |
AWS 서비스: Amazon S3, Amazon CloudWatch, AWS CodeBuild, AWS CodeCommit |
요약
Amazon Web Services(AWS) 클라우드에서 AWS CodeCommit 를 사용하여 보안 Git 기반 리포지토리를 호스팅할 수 있습니다. CodeCommit 는 완전 관리형 소스 제어 서비스입니다. 그러나 CodeCommit 리포지토리가 실수로 삭제된 경우 해당 콘텐츠도 삭제되며 복원할 수 없습니다
이 패턴은 CodeCommit 리포지토리를 변경한 후 Amazon Simple Storage Service(Amazon S3) 버킷에 리포지토리를 자동으로 백업하는 방법을 설명합니다. CodeCommit 리포지토리가 나중에 삭제되면 이 백업 전략은 point-in-time 복구 옵션을 제공합니다.
사전 조건 및 제한 사항
사전 조건
활성 상태의 AWS 계정.
요구 사항에 따라 사용자 액세스가 구성된 기존 CodeCommit 리포지토리입니다. 자세한 내용은 CodeCommit 설명서의 용 설정을 AWS CodeCommit 참조하세요.
CodeCommit 백업을 업로드하기 위한 S3 버킷입니다.
제한 사항
이 패턴은 모든 CodeCommit 리포지토리를 자동으로 백업합니다. 개별 CodeCommit 리포지토리를 백업하려면 Amazon CloudWatch Events 규칙을 수정해야 합니다.
아키텍처
이 다이어그램은 이 패턴의 워크플로우를 보여줍니다.
이 워크플로우는 다음 단계로 구성됩니다.
코드가 리 CodeCommit 포지토리로 푸시됩니다.
CodeCommit 리포지토리는 리포지토리 변경 사항(예:
git push
명령)을 CloudWatch Events에 알립니다.CloudWatch 이벤트는 CodeCommit 리포지토리 정보를 호출AWS CodeBuild 하고 전송합니다.
CodeBuild 는 전체 CodeCommit 리포지토리를 복제하여 .zip 파일로 패키징합니다.
CodeBuild 는 .zip 파일을 S3 버킷에 업로드합니다.
기술 스택
CloudWatch 이벤트
CodeBuild
CodeCommit
Amazon S3
도구
Amazon CloudWatch Events – CloudWatch Events는 AWS 리소스의 변경 사항을 설명하는 시스템 이벤트의 거의 실시간 스트림을 제공합니다.
AWS CodeBuild 는 소스 코드를 컴파일하고, 테스트를 실행하고, 배포할 준비가 된 소프트웨어 패키지를 생성하는 완전 관리형 지속적 통합 서비스 CodeBuild 입니다.
AWS CodeCommit –보안 Git 기반 리포지토리 CodeCommit 를 호스팅하는 완전 관리형 소스 제어 서비스입니다.
AWS 자격 증명 및 액세스 관리(IAM) - AWS 리소스에 대한 액세스를 안전하게 제어하는 데 도움이 되는 웹 서비스IAM입니다.
Amazon S3 – Amazon Simple Storage Service(S3)는 인터넷 스토리지 서비스입니다.
에픽
작업 | 설명 | 필요한 기술 |
---|---|---|
CodeBuild 서비스 역할을 생성합니다. | AWS 관리 콘솔에 로그인하고 IAM 콘솔을 엽니다. 역할을 선택하고 역할 생성을 선택합니다. 에 대한 서비스 역할을 생성 CodeBuild 하여 CodeCommit 리포지토리를 복제하고, S3 버킷에 파일을 업로드하고, Amazon 에 로그를 전송합니다 CloudWatch. 자세한 내용은 CodeBuild 설명서의 CodeBuild 서비스 역할 생성을 참조하세요. | 클라우드 관리자 |
CodeBuild 프로젝트를 생성합니다. | CodeBuild 콘솔에서 CodeBuild 프로젝트 생성을 선택합니다. 추가 정보 섹션의 | 클라우드 관리자 |
작업 | 설명 | 필요한 기술 |
---|---|---|
CloudWatch 이벤트에 대한 IAM 역할을 생성합니다. | IAM 콘솔에서 역할을 선택하고 CloudWatch 이벤트에 대한 IAM 역할을 생성합니다. 이에 대한 자세한 내용은 IAM 설명서의 CloudWatch 이벤트 IAM 역할을 참조하세요. 중요 : CloudWatch 이벤트에 대한 IAM 역할에 | 클라우드 관리자 |
CloudWatch 이벤트 규칙을 생성합니다. |
중요 : 이 CloudWatch 이벤트 규칙은 모든 CodeCommit 리포지토리의 변경 사항을 설명합니다. 개별 리 CodeCommit 포지토리를 백업하거나 다른 리포지토리 백업에 별도의 S3 버킷을 사용하려면 CloudWatch 이벤트 규칙을 수정해야 합니다. | 클라우드 관리자 |
관련 리소스
CodeBuild 프로젝트 생성
CloudWatch 이벤트 규칙 생성 및 구성
추가 정보
CodeBuild buildspec.yml 템플릿
version: 0.2 phases: install: commands: - pip install git-remote-codecommit build: commands: - env - git clone -b $REFERENCE_NAME codecommit::$REPO_REGION://$REPOSITORY_NAME - dt=$(date '+%d-%m-%Y-%H:%M:%S'); - echo "$dt" - zip -yr $dt-$REPOSITORY_NAME-backup.zip ./ - aws s3 cp $dt-$REPOSITORY_NAME-backup.zip s3:// #substitute a valid S3 Bucket Name here
CloudWatch 이벤트 규칙
{ "source": [ "aws.codecommit" ], "detail-type": [ "CodeCommit Repository State Change" ], "detail": { "event": [ "referenceCreated", "referenceUpdated" ] } }
CloudWatch 이벤트 규칙 대상의 샘플 입력 변환기
입력 경로:
{"referenceType":"$.detail.referenceType","region":"$.region","repositoryName":"$.detail.repositoryName","account":"$.account","referenceName":"$.detail.referenceName"}
입력 템플릿(값을 적절히 입력하세요):
{ "environmentVariablesOverride": [ { "name": "REFERENCE_NAME", "value": "" }, { "name": "REFERENCE_TYPE", "value": "" }, { "name": "REPOSITORY_NAME", "value": "" }, { "name": "REPO_REGION", "value": "" }, { "name": "ACCOUNT_ID", "value": "" } ] }