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.
El flujo de trabajo consta de los pasos siguientes:
El código se envía a un CodeCommit repositorio.
El CodeCommit repositorio notifica a CloudWatch Events cualquier cambio en el repositorio (por ejemplo, un
git push
comando).CloudWatch Events invoca AWS CodeBuild y envía la información del CodeCommit repositorio.
CodeBuild clona todo el CodeCommit repositorio y lo empaqueta en un archivo.zip.
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
Tarea | Descripción | Habilidades 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 | Administrador de la nube |
Tarea | Descripción | Habilidades 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 | Administrador de la nube |
Cree una regla de CloudWatch eventos. |
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": "" } ] }