Automatice las copias de seguridad basadas en eventos desde CodeCommit Amazon S3 mediante CodeBuild and Events CloudWatch - Recomendaciones de AWS

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Automatice las copias de seguridad basadas en eventos desde CodeCommit Amazon S3 mediante CodeBuild and Events CloudWatch

Creado por Kirankumar Chandrashekar () AWS

Entorno: producción

Tecnologías: almacenamiento y respaldo DevOps

Carga de trabajo: todas las demás cargas de trabajo

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

Resumen

En la nube de Amazon Web Services (AWS), puedes utilizarla AWS CodeCommit para alojar repositorios seguros basados en Git. CodeCommit es un servicio de control de código fuente totalmente gestionado. Sin embargo, si un CodeCommit repositorio se elimina accidentalmente, su contenido también se elimina y no se puede restaurar

Este patrón describe cómo realizar automáticamente una copia de seguridad de un CodeCommit repositorio en un bucket de Amazon Simple Storage Service (Amazon S3) después de realizar un cambio en el repositorio. Si el CodeCommit repositorio se elimina posteriormente, esta estrategia de copia de seguridad le ofrece una opción point-in-time de recuperación.

Requisitos previos y limitaciones

Requisitos previos 

  • Una cuenta de AWS activa.

  • Un CodeCommit repositorio existente, con el acceso de los usuarios configurado de acuerdo con sus requisitos. Para obtener más información, consulte Configuración AWS CodeCommit en la CodeCommit documentación.  

  • Un bucket de S3 para cargar las CodeCommit copias de seguridad. 

Limitaciones

  • Este patrón hace copias de seguridad automáticas de todos sus CodeCommit repositorios. Si quieres hacer copias de seguridad de CodeCommit repositorios individuales, debes modificar la regla de Amazon CloudWatch Events.

Arquitectura

En el siguiente diagrama, se ilustra el flujo de trabajo de este patrón.

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

El flujo de trabajo consta de los pasos siguientes:

  1. El código se envía a un CodeCommit repositorio.

  2. El CodeCommit repositorio notifica a CloudWatch Events cualquier cambio en el repositorio (por ejemplo, un git push comando).

  3. CloudWatch Events invoca AWS CodeBuild y envía la información del CodeCommit repositorio.

  4. CodeBuild clona todo el CodeCommit repositorio y lo empaqueta en un archivo.zip.

  5. CodeBuild carga el archivo.zip en un bucket de S3.

Pila de tecnología

  • CloudWatch Eventos

  • CodeBuild

  • CodeCommit

  • Amazon S3

Herramientas

  • Amazon CloudWatch Events: CloudWatch Events ofrece una transmisión casi en tiempo real de los eventos del sistema que describen los cambios en AWS los recursos.

  • AWS CodeBuild— CodeBuild es un servicio de integración continua totalmente gestionado que compila el código fuente, ejecuta pruebas y produce paquetes de software listos para su implementación. 

  • AWS CodeCommit— CodeCommit es un servicio de control de código fuente totalmente gestionado que aloja repositorios seguros basados en Git. 

  • AWSIdentity and Access Management (IAM): IAM es un servicio web que le ayuda a controlar de forma segura el acceso a AWS los recursos.

  • Amazon S3: Amazon Simple Storage Service (Amazon S3) es un servicio de almacenamiento para Internet.

Epics

TareaDescripciónHabilidades requeridas
Crea un rol CodeBuild de servicio.

Inicie sesión en la consola AWS de administración y abra la IAM consola. Elija Roles y después Create Role (Crear rol). Cree un rol de servicio CodeBuild para clonar el CodeCommit repositorio, cargar archivos al bucket de S3 y enviar los registros a Amazon CloudWatch. Para obtener más información, consulte Crear un rol CodeBuild de servicio en la CodeBuild documentación.

Administrador de la nube
Cree un CodeBuild proyecto.

En la CodeBuild consola, selecciona Crear CodeBuild proyecto. Cree un CodeBuild proyecto mediante la buildspec.yml plantilla de la sección de información adicional. Para obtener ayuda con esta historia, consulte Crear un proyecto de compilación en la CodeBuild documentación. 

Administrador de la nube
TareaDescripciónHabilidades requeridas
Cree un IAM rol para CloudWatch los eventos.

En la IAM consola, elige Roles y crea un IAM rol para CloudWatch Eventos. Para obtener más información al respecto, consulte la IAMfunción de CloudWatch eventos en la IAM documentación.

Importante: Debe añadir codebuild:StartBuild permisos al IAM rol de CloudWatch Eventos.

Administrador de la nube
Cree una regla de CloudWatch eventos.
  1. En la CloudWatch consola, selecciona Eventos y, a continuación, elige Reglas. Elija Crear regla y utilice la regla CloudWatch Eventos de la sección Información adicional. Esto crea una regla que detecta los cambios de eventos (por ejemplo, git push o git commit los comandos) en sus CodeCommit repositorios. Para obtener más información, consulte Crear una regla de CloudWatch eventos para una CodeCommit fuente en la AWS CodePipeline documentación.

  2. Elija Destinos (Targets), elija Topic (Tema) y, a continuación, elija Configure input (Configurar entrada). Elija Input transformer (Transformador de entrada) y utilice la ruta de entrada y la plantilla de entrada de la sección Información adicional. Esto garantiza que los detalles CodeCommit del repositorio se analicen y se envíen como variables de entorno al CodeBuild proyecto. Para obtener más información, consulta el tutorial sobre el transformador de entrada en la CloudWatch documentación. 

  3. Elija Configure details (Configurar detalles), e ingrese un nombre y una descripción para la regla. Elija Create rule (Crear regla).

Importante: Esta regla de CloudWatch eventos describe los cambios en todos tus CodeCommit repositorios. Debes modificar la regla de CloudWatch eventos si quieres hacer copias de seguridad de CodeCommit repositorios individuales o usar depósitos de S3 independientes para las copias de seguridad de los distintos repositorios.

Administrador de la nube

Recursos relacionados

Crear un proyecto CodeBuild

Crear y configurar una regla de CloudWatch eventos

Información adicional

CodeBuild plantilla 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 Regla de eventos

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

Ejemplo de transformador de entrada para el objetivo de la regla de CloudWatch eventos

Ruta de entrada:

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

Plantilla de entrada (rellene los valores según corresponda):

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