Automatize backups orientados por eventos para o Amazon CodeCommit S3 usando e Eventos CodeBuild CloudWatch - Recomendações da AWS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Automatize backups orientados por eventos para o Amazon CodeCommit S3 usando e Eventos CodeBuild CloudWatch

Criado por Kirankumar Chandrashekar () AWS

Resumo

Na nuvem Amazon Web Services (AWS), você pode usar AWS CodeCommit para hospedar repositórios seguros baseados em Git. CodeCommit é um serviço de controle de origem totalmente gerenciado. No entanto, se um CodeCommit repositório for excluído acidentalmente, seu conteúdo também será excluído e não poderá ser restaurado

Esse padrão descreve como fazer backup automático de um CodeCommit repositório em um bucket do Amazon Simple Storage Service (Amazon S3) após uma alteração ser feita no repositório. Se o CodeCommit repositório for excluído posteriormente, essa estratégia de backup fornecerá uma opção de point-in-time recuperação.

Pré-requisitos e limitações

Pré-requisitos

  • Uma conta da AWS ativa.

  • Um CodeCommit repositório existente, com acesso do usuário configurado de acordo com seus requisitos. Para obter mais informações, consulte Configuração para AWS CodeCommit na CodeCommit documentação.  

  • Um bucket S3 para fazer o upload dos CodeCommit backups. 

Limitações

  • Esse padrão faz backup automático de todos os seus CodeCommit repositórios. Se quiser fazer backup de CodeCommit repositórios individuais, você deve modificar a regra do Amazon CloudWatch Events.

Arquitetura

O diagrama a seguir ilustra o fluxo de trabalho deste padrão.

Nuvem AWS architecture showing Git push workflow from Users to S3 bucket via CodeCommit and CodeBuild.

O fluxo de trabalho consiste nas seguintes etapas:

  1. O código é enviado para um CodeCommit repositório.

  2. O CodeCommit repositório notifica CloudWatch os eventos de uma alteração no repositório (por exemplo, um git push comando).

  3. CloudWatch Events invoca AWS CodeBuild e envia as informações do CodeCommit repositório.

  4. CodeBuild clona o CodeCommit repositório inteiro e o empacota em um arquivo.zip.

  5. CodeBuild carrega o arquivo.zip em um bucket do S3.

Pilha de tecnologia

  • CloudWatch Eventos

  • CodeBuild

  • CodeCommit

  • Amazon S3

Ferramentas

  • Amazon CloudWatch Events — CloudWatch Events fornece um fluxo quase em tempo real de eventos do sistema que descrevem mudanças nos AWS recursos.

  • AWS CodeBuild— CodeBuild é um serviço de integração contínua totalmente gerenciado que compila o código-fonte, executa testes e produz pacotes de software prontos para implantação. 

  • AWS CodeCommit— CodeCommit é um serviço de controle de origem totalmente gerenciado que hospeda repositórios seguros baseados em Git. 

  • AWSIdentity and Access Management (IAM) — IAM é um serviço web que ajuda você a controlar com segurança o acesso aos AWS recursos.

  • Amazon S3: o Amazon Simple Storage Service (Amazon S3) serve como armazenamento para a internet.

Épicos

TarefaDescriçãoHabilidades necessárias
Crie uma função CodeBuild de serviço.

Faça login no Console de Gerenciamento da AWS e abra o console do IAM. Selecione Perfis e, depois, Criar perfil. Crie uma função de serviço CodeBuild para clonar o CodeCommit repositório, fazer upload de arquivos para o bucket do S3 e enviar registros para a Amazon. CloudWatch Para obter mais informações, consulte Criar uma função de CodeBuild serviço na CodeBuild documentação.

Administrador de nuvem
Crie um CodeBuild projeto.

No CodeBuild console, escolha Criar CodeBuild projeto. Crie um CodeBuild projeto usando o buildspec.yml modelo da seção Informações adicionais. Para obter ajuda com essa história, consulte Criar um projeto de construção na CodeBuild documentação. 

Administrador de nuvem
TarefaDescriçãoHabilidades necessárias
Crie uma IAM função para CloudWatch Eventos.

No IAM console, escolha Funções e crie uma IAM função para CloudWatch Eventos. Para obter mais informações sobre isso, consulte IAMFunção de CloudWatch eventos na IAM documentação.

Importante

Você deve adicionar codebuild:StartBuild permissões à IAM função para CloudWatch Eventos.

Administrador de nuvem
Crie uma regra de CloudWatch eventos.
  1. No CloudWatch console, escolha Eventos e, em seguida, escolha Regras. Escolha Criar regra e use a regra CloudWatch Eventos na seção Informações adicionais. Isso cria uma regra que escuta alterações de eventos (por exemplo, git push ou git commit comandos) em seus CodeCommit repositórios. Para obter mais informações, consulte Criar uma regra de CloudWatch eventos para uma CodeCommit fonte na AWS CodePipeline documentação.

  2. Escolha Destinos, escolha Tópico e, em seguida, escolha Configurar entrada. Escolha Transformador de entrada e use o caminho e o modelo de entrada na seção Informações adicionais. Isso garante que os detalhes CodeCommit do seu repositório sejam analisados e enviados como variáveis de ambiente para o CodeBuild projeto. Para obter mais informações, consulte o tutorial do transformador de entrada na CloudWatch documentação. 

  3. Escolha Configurar detalhes, e insira um nome e uma descrição para a regra. Escolha Criar regra.

Importante

Essa regra de CloudWatch eventos descreve as alterações em todos os seus CodeCommit repositórios. Você deve modificar a regra de CloudWatch Eventos se quiser fazer backup de CodeCommit repositórios individuais ou usar buckets S3 separados para backups de repositórios diferentes.

Administrador de nuvem

Recursos relacionados

Criando um CodeBuild projeto

Criando e configurando uma regra de CloudWatch eventos

Mais informações

CodeBuild modelo 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 Regra de eventos

{ "source": [ "aws.codecommit" ], "detail-type": [ "CodeCommit Repository State Change" ], "detail": { "event": [ "referenceCreated", "referenceUpdated" ] } }

Transformador de entrada de amostra para o alvo da regra de CloudWatch eventos

Caminho de entrada:

{"referenceType":"$.detail.referenceType","region":"$.region","repositoryName":"$.detail.repositoryName","account":"$.account","referenceName":"$.detail.referenceName"}

Modelo de entrada (preencha os valores conforme apropriado):

{ "environmentVariablesOverride": [ { "name": "REFERENCE_NAME", "value": "" }, { "name": "REFERENCE_TYPE", "value": "" }, { "name": "REPOSITORY_NAME", "value": "" }, { "name": "REPO_REGION", "value": "" }, { "name": "ACCOUNT_ID", "value": "" } ] }