Automatisieren Sie ereignisgesteuerte Backups von CodeCommit zu Amazon S3 mithilfe CodeBuild von und Events CloudWatch - AWS Prescriptive Guidance

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Automatisieren Sie ereignisgesteuerte Backups von CodeCommit zu Amazon S3 mithilfe CodeBuild von und Events CloudWatch

Erstellt von Kirankumar Chandrashekar () AWS

Umwelt: Produktion

Technologien: DevOps; Speicher und Backup

Arbeitslast: Alle anderen Workloads

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

Übersicht

In der Amazon Web Services (AWS) Cloud können AWS CodeCommit Sie sichere Git-basierte Repositorys hosten. CodeCommit ist ein vollständig verwalteter Dienst zur Quellcodeverwaltung. Wenn ein CodeCommit Repository jedoch versehentlich gelöscht wird, wird sein Inhalt ebenfalls gelöscht und kann nicht wiederhergestellt werden

Dieses Muster beschreibt, wie ein CodeCommit Repository automatisch in einem Amazon Simple Storage Service (Amazon S3) -Bucket gesichert wird, nachdem eine Änderung am Repository vorgenommen wurde. Wenn das CodeCommit Repository später gelöscht wird, bietet Ihnen diese Backup-Strategie eine point-in-time Wiederherstellungsoption.

Voraussetzungen und Einschränkungen

Voraussetzungen

  • Ein aktives AWS-Konto.

  • Ein vorhandenes CodeCommit Repository, dessen Benutzerzugriff gemäß Ihren Anforderungen konfiguriert ist. Weitere Informationen finden Sie AWS CodeCommit in der CodeCommit Dokumentation unter Einrichtung für.  

  • Ein S3-Bucket zum Hochladen der CodeCommit Backups. 

Einschränkungen

  • Dieses Muster sichert automatisch alle Ihre CodeCommit Repositorys. Wenn Sie einzelne CodeCommit Repositorys sichern möchten, müssen Sie die Amazon CloudWatch Events-Regel ändern.

Architektur

Das folgende Diagramm veranschaulicht den Arbeitsablauf für dieses Muster.

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

Der Workflow besteht aus folgenden Schritten:

  1. Der Code wird in ein CodeCommit Repository übertragen.

  2. Das CodeCommit Repository benachrichtigt CloudWatch Events über eine Änderung des Projektarchivs (z. B. einen git push Befehl).

  3. CloudWatch Events ruft die CodeCommit Repository-Informationen auf AWS CodeBuild und sendet sie.

  4. CodeBuild klont das gesamte CodeCommit Repository und packt es in eine ZIP-Datei.

  5. CodeBuild lädt die ZIP-Datei in einen S3-Bucket hoch.

Technologie-Stack

  • CloudWatch Ereignisse

  • CodeBuild

  • CodeCommit

  • Amazon S3

Tools

  • Amazon CloudWatch Events — CloudWatch Events bietet einen Stream von Systemereignissen, die Änderungen an AWS Ressourcen beschreiben, nahezu in Echtzeit.

  • AWS CodeBuild— CodeBuild ist ein vollständig verwalteter Continuous-Integration-Service, der Quellcode kompiliert, Tests durchführt und Softwarepakete erstellt, die sofort einsatzbereit sind. 

  • AWS CodeCommit— CodeCommit ist ein vollständig verwalteter Quellcodeverwaltungsdienst, der sichere Git-basierte Repositorys hostet. 

  • AWSIdentity and Access Management (IAM) — IAM ist ein Webdienst, mit dem Sie den Zugriff auf AWS Ressourcen sicher kontrollieren können.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) ist Speicher für das Internet.

Epen

AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie eine CodeBuild Servicerolle.

Melden Sie sich bei der AWS Management Console an und öffnen Sie die IAM Konsole. Wählen Sie Rollen und anschließend Rolle erstellen aus. Erstellen Sie eine Servicerolle für das CodeBuild Klonen des CodeCommit Repositorys, das Hochladen von Dateien in den S3-Bucket und das Senden von Protokollen an Amazon CloudWatch. Weitere Informationen finden Sie in der CodeBuild Dokumentation unter Eine CodeBuild Servicerolle erstellen.

Cloud-Administrator
Erstellen Sie ein CodeBuild Projekt.

Wählen Sie in der CodeBuild Konsole die Option CodeBuild Projekt erstellen aus. Erstellen Sie ein CodeBuild Projekt mithilfe der buildspec.yml Vorlage aus dem Abschnitt Zusätzliche Informationen. Hilfe zu dieser Geschichte finden Sie in der CodeBuild Dokumentation unter Erstellen eines Build-Projekts

Cloud-Administrator
AufgabeBeschreibungErforderliche Fähigkeiten
Erstellen Sie eine IAM Rolle für CloudWatch Ereignisse.

Wählen Sie in der IAM Konsole Rollen aus und erstellen Sie eine IAM Rolle für CloudWatch Ereignisse. Weitere Informationen dazu finden Sie in der IAM Dokumentation unter IAMRolle „CloudWatch Ereignisse“.

Wichtig: Sie müssen der IAM Rolle für CloudWatch Ereignisse codebuild:StartBuild Berechtigungen hinzufügen.

Cloud-Administrator
Erstellen Sie eine CloudWatch Ereignisregel.
  1. Wählen Sie auf der CloudWatch Konsole Ereignisse und dann Regeln aus. Wählen Sie Regel erstellen aus und verwenden Sie die Regel CloudWatch Ereignisse aus dem Abschnitt Zusätzliche Informationen. Dadurch wird eine Regel erstellt, die auf Änderungen an Ereignissen (z. B. git commit Befehle) in Ihren git push CodeCommit Repositorys wartet. Weitere Informationen finden Sie in der Dokumentation unter Erstellen einer CloudWatch Ereignisregel für eine CodeCommit Quelle. AWS CodePipeline

  2. Wählen Sie Ziele, Thema und anschließend Eingabe konfigurieren aus. Wählen Sie „Eingangstransformator“ und verwenden Sie den Eingabepfad und die Eingabevorlage aus dem Abschnitt „Zusätzliche Informationen“. Dadurch wird sichergestellt, dass Ihre CodeCommit Repository-Details analysiert und als Umgebungsvariablen an das CodeBuild Projekt gesendet werden. Weitere Informationen finden Sie im Tutorial zum Eingangstransformator in der CloudWatch Dokumentation. 

  3. Wählen Sie „Details konfigurieren“ und geben Sie einen Namen und eine Beschreibung für die Regel ein. Wählen Sie Regel erstellen aus.

Wichtig: Diese CloudWatch Ereignisregel beschreibt Änderungen in all Ihren CodeCommit Repositorys. Sie müssen die CloudWatch Ereignisregel ändern, wenn Sie einzelne CodeCommit Repositorys sichern oder separate S3-Buckets für verschiedene Repository-Backups verwenden möchten.

Cloud-Administrator

Zugehörige Ressourcen

Ein CodeBuild Projekt erstellen

Eine CloudWatch Ereignisregel erstellen und konfigurieren

Zusätzliche Informationen

CodeBuild buildspec.yml-Vorlage

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 Regel für Ereignisse

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

Beispiel für einen Eingangstransformator für das Regelziel „ CloudWatch Ereignisse“

Eingabepfad:

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

Eingabevorlage (bitte geben Sie die entsprechenden Werte ein):

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