Automatizza i backup basati sugli eventi da Amazon CodeCommit S3 utilizzando and Events CodeBuild CloudWatch - Prontuario AWS

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Automatizza i backup basati sugli eventi da Amazon CodeCommit S3 utilizzando and Events CodeBuild CloudWatch

Creato da Kirankumar Chandrashekar () AWS

Ambiente: produzione

Tecnologie: DevOps; Archiviazione e backup

Carico di lavoro: tutti gli altri carichi di lavoro

AWSservizi: Amazon S3; Amazon CloudWatch; AWS CodeBuild AWS CodeCommit

Riepilogo

Sul cloud Amazon Web Services (AWS), puoi utilizzarlo AWS CodeCommit per ospitare repository sicuri basati su Git. CodeCommit è un servizio di controllo del codice sorgente completamente gestito. Tuttavia, se un CodeCommit repository viene eliminato accidentalmente, anche il relativo contenuto viene eliminato e non può essere ripristinato. 

Questo modello descrive come eseguire automaticamente il backup di un CodeCommit repository su un bucket Amazon Simple Storage Service (Amazon S3) dopo aver apportato una modifica al repository. Se il CodeCommit repository viene successivamente eliminato, questa strategia di backup offre un'opzione di ripristino. point-in-time

Prerequisiti e limitazioni

Prerequisiti

  • Un account AWS attivo.

  • Un CodeCommit repository esistente, con accesso utente configurato in base alle esigenze dell'utente. Per ulteriori informazioni, consulta Configurazione AWS CodeCommit nella CodeCommit documentazione.  

  • Un bucket S3 per caricare i backup. CodeCommit  

Limitazioni

  • Questo modello esegue automaticamente il backup di tutti i tuoi repository. CodeCommit Se desideri eseguire il backup di singoli CodeCommit repository, devi modificare la regola di Amazon CloudWatch Events.

Architettura

Il diagramma seguente illustra il flusso di lavoro per questo modello.

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

Il flusso di lavoro consiste nei seguenti passaggi:

  1. Il codice viene inviato a un repository. CodeCommit

  2. Il CodeCommit repository notifica a CloudWatch Events una modifica del repository (ad esempio, un comando). git push

  3. CloudWatch Events richiama AWS CodeBuild e invia le informazioni del repository. CodeCommit

  4. CodeBuild clona l'intero CodeCommit repository e lo impacchetta in un file.zip.

  5. CodeBuild carica il file.zip in un bucket S3.

stack tecnologico

  • CloudWatch Eventi

  • CodeBuild

  • CodeCommit

  • Amazon S3

Strumenti

  • Amazon CloudWatch Events — CloudWatch Events offre un flusso quasi in tempo reale di eventi di sistema che descrivono i cambiamenti nelle AWS risorse.

  • AWS CodeBuild— CodeBuild è un servizio di integrazione continua completamente gestito che compila il codice sorgente, esegue test e produce pacchetti software pronti per l'implementazione. 

  • AWS CodeCommit— CodeCommit è un servizio di controllo del codice sorgente completamente gestito che ospita repository sicuri basati su Git. 

  • AWSIdentity and Access Management (IAM): IAM è un servizio Web che consente di controllare in modo sicuro l'accesso alle AWS risorse.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) è uno storage per Internet.

Epiche

AttivitàDescrizioneCompetenze richieste
Crea un ruolo CodeBuild di servizio.

Accedi alla console di AWS gestione e apri la IAM console. Scegli Ruoli e scegli Crea ruolo. Crea un ruolo di servizio per CodeBuild clonare il CodeCommit repository, caricare file nel bucket S3 e inviare log ad Amazon. CloudWatch Per ulteriori informazioni, consulta Creare un ruolo di CodeBuild servizio nella documentazione. CodeBuild

Amministratore cloud
Crea un CodeBuild progetto.

Sulla CodeBuild console, scegli Crea CodeBuild progetto. Crea un CodeBuild progetto utilizzando il buildspec.yml modello dalla sezione Informazioni aggiuntive. Per informazioni su questa storia, consulta Creare un progetto di compilazione nella CodeBuild documentazione. 

Amministratore cloud
AttivitàDescrizioneCompetenze richieste
Crea un IAM ruolo per CloudWatch Events.

Sulla IAM console, scegli Ruoli e crea un IAM ruolo per CloudWatch Eventi. Per ulteriori informazioni su questo argomento, consulta il IAMruolo CloudWatch Events nella IAM documentazione.

Importante: è necessario aggiungere codebuild:StartBuild le autorizzazioni al IAM ruolo per CloudWatch gli eventi.

Amministratore cloud
Crea una regola per CloudWatch gli eventi.
  1. Sulla CloudWatch console, scegli Eventi, quindi scegli Regole. Scegli Crea regola e utilizza la regola CloudWatch Eventi nella sezione Informazioni aggiuntive. In questo modo viene creata una regola che rileva le modifiche agli eventi (ad esempio git push o git commit i comandi) nei CodeCommit repository. Per ulteriori informazioni, consulta Creare una regola CloudWatch Events per una CodeCommit fonte nella AWS CodePipeline documentazione.

  2. Scegliete Obiettivi, scegliete Argomento, quindi scegliete Configura input. Scegli Input transformer e usa il percorso di input e il modello di input nella sezione Informazioni aggiuntive. Ciò garantisce che i dettagli del CodeCommit repository vengano analizzati e inviati come variabili di ambiente al progetto. CodeBuild Per ulteriori informazioni, consultate il tutorial sul trasformatore di input nella documentazione. CloudWatch  

  3. Scegli Configura dettagli e inserisci un nome e una descrizione per la regola. Scegli Crea regola.

Importante: questa regola CloudWatch degli eventi descrive le modifiche in tutti i tuoi CodeCommit repository. È necessario modificare la regola CloudWatch Events se si desidera eseguire il backup di singoli CodeCommit repository o utilizzare bucket S3 separati per backup di repository diversi.

Amministratore cloud

Risorse correlate

Creazione di un CodeBuild progetto

Creazione e configurazione di una regola Events CloudWatch

Informazioni aggiuntive

CodeBuild modello 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 Regola degli eventi

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

Esempio di trasformatore di input per l'obiettivo della regola CloudWatch Events

Percorso di input:

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

Modello di input (inserisci i valori appropriati):

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