Automatisez les sauvegardes basées sur les événements depuis Amazon S3 CodeCommit à l'aide CodeBuild de and Events CloudWatch - Recommandations AWS

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Automatisez les sauvegardes basées sur les événements depuis Amazon S3 CodeCommit à l'aide CodeBuild de and Events CloudWatch

Créée par Kirankumar Chandrashekar () AWS

Environnement : Production

Technologies : DevOps ; Stockage et sauvegarde

Charge de travail : toutes les autres charges de travail

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

Récapitulatif

Sur le cloud Amazon Web Services (AWS), vous pouvez l'utiliser AWS CodeCommit pour héberger des référentiels sécurisés basés sur Git. CodeCommit est un service de contrôle de source entièrement géré. Toutefois, si un CodeCommit dépôt est supprimé accidentellement, son contenu est également supprimé et ne peut pas être restauré

Ce modèle décrit comment sauvegarder automatiquement un CodeCommit référentiel dans un compartiment Amazon Simple Storage Service (Amazon S3) après qu'une modification a été apportée au référentiel. Si le CodeCommit référentiel est supprimé ultérieurement, cette stratégie de sauvegarde vous propose une option point-in-time de restauration.

Conditions préalables et limitations

Prérequis

  • Un compte AWS actif.

  • Un CodeCommit référentiel existant, avec un accès utilisateur configuré en fonction de vos besoins. Pour plus d'informations, consultez la section Configuration pour AWS CodeCommit dans la CodeCommit documentation.  

  • Un compartiment S3 pour le téléchargement des CodeCommit sauvegardes. 

Limites

  • Ce modèle sauvegarde automatiquement tous vos CodeCommit référentiels. Si vous souhaitez sauvegarder des CodeCommit référentiels individuels, vous devez modifier la règle Amazon CloudWatch Events.

Architecture

Le schéma suivant illustre le flux de travail pour ce modèle.

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

Le flux de travail se compose des étapes suivantes :

  1. Le code est transféré vers un CodeCommit dépôt.

  2. Le CodeCommit référentiel informe CloudWatch Events d'une modification du référentiel (par exemple, une git push commande).

  3. CloudWatch Events invoque AWS CodeBuild et lui envoie les informations du CodeCommit référentiel.

  4. CodeBuild clone l'intégralité du CodeCommit dépôt et l'empaquette dans un fichier .zip.

  5. CodeBuild télécharge le fichier .zip dans un compartiment S3.

Pile technologique

  • CloudWatch Évènements

  • CodeBuild

  • CodeCommit

  • Amazon S3

Outils

  • Amazon CloudWatch Events — CloudWatch Events fournit un flux en temps quasi réel d'événements système décrivant les modifications apportées aux AWS ressources.

  • AWS CodeBuild— CodeBuild est un service d'intégration continue entièrement géré qui compile le code source, exécute des tests et produit des progiciels prêts à être déployés. 

  • AWS CodeCommit— CodeCommit est un service de contrôle de source entièrement géré qui héberge des référentiels sécurisés basés sur Git. 

  • AWSIdentity and Access Management (IAM) IAM est un service Web qui vous permet de contrôler en toute sécurité l'accès aux AWS ressources.

  • Amazon S3 — Amazon Simple Storage Service (Amazon S3) est un service de stockage pour Internet.

Épopées

TâcheDescriptionCompétences requises
Créez un rôle CodeBuild de service.

Connectez-vous à la console AWS de gestion et IAM ouvrez-la. Choisissez Rôles, puis sélectionnez Créer un rôle. Créez un rôle de service CodeBuild pour cloner le CodeCommit référentiel, télécharger des fichiers dans le compartiment S3 et envoyer des journaux à Amazon CloudWatch. Pour plus d'informations, consultez la section Créer un rôle de CodeBuild service dans la CodeBuild documentation.

Administrateur du cloud
Créez un CodeBuild projet.

Sur la CodeBuild console, choisissez Create CodeBuild project. Créez un CodeBuild projet en utilisant le buildspec.yml modèle de la section Informations supplémentaires. Pour obtenir de l'aide sur cette histoire, voir Créer un projet de construction dans la CodeBuild documentation. 

Administrateur du cloud
TâcheDescriptionCompétences requises
Créez un IAM rôle pour les CloudWatch événements.

Sur la IAM console, choisissez Rôles et créez un IAM rôle pour CloudWatch Events. Pour plus d'informations à ce sujet, consultez la section IAMRôle CloudWatch des événements dans la IAM documentation.

Important : vous devez ajouter codebuild:StartBuild des autorisations au IAM rôle pour les CloudWatch événements.

Administrateur du cloud
Créez une règle d' CloudWatch événements.
  1. Sur la CloudWatch console, choisissez Events, puis Rules. Choisissez Créer une règle, puis utilisez la règle CloudWatch Événements dans la section Informations supplémentaires. Cela crée une règle qui écoute les modifications d'événements (par exemple, git push ou git commit les commandes) dans vos CodeCommit référentiels. Pour plus d'informations, consultez la section Créer une règle d' CloudWatch événements pour une CodeCommit source dans la AWS CodePipeline documentation.

  2. Choisissez Cibles, sélectionnez Sujet, puis sélectionnez Configurer la saisie. Choisissez Transformateur d'entrée, puis utilisez le chemin d'entrée et le modèle d'entrée de la section Informations supplémentaires. Cela garantit que les détails de votre CodeCommit dépôt sont analysés et envoyés sous forme de variables d'environnement au CodeBuild projet. Pour plus d'informations, consultez le didacticiel sur le transformateur d'entrée dans la CloudWatch documentation. 

  3. Choisissez Configurer les détails, puis entrez le nom et la description de la règle. Choisissez Créer une règle.

Important : cette règle CloudWatch relative aux événements décrit les modifications apportées à tous vos CodeCommit référentiels. Vous devez modifier la règle CloudWatch des événements si vous souhaitez sauvegarder des CodeCommit référentiels individuels ou utiliser des compartiments S3 distincts pour différentes sauvegardes de référentiels.

Administrateur du cloud

Ressources connexes

Création d'un CodeBuild projet

Création et configuration d'une règle d' CloudWatch événements

Informations supplémentaires

CodeBuild modèle 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 Règle des événements

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

Exemple de transformateur d'entrée pour la cible de la règle CloudWatch Events

Chemin d'entrée :

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

Modèle de saisie (veuillez renseigner les valeurs appropriées) :

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