Cree una canalización en las regiones de AWS que no sean compatibles con AWS CodePipeline - 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.

Cree una canalización en las regiones de AWS que no sean compatibles con AWS CodePipeline

Creado por Anand Krishna Varanasi (AWS)

Repositorio de código: invisible-codepipeline-unsupported-regions

Entorno: PoC o piloto

Tecnologías: infraestructura; DevOps

Servicios de AWS: AWS CodeBuild CodeCommit; AWS CodeDeploy; AWS CodePipeline

Resumen

AWS CodePipeline es un servicio de organización de entrega continua (CD) que forma parte de un conjunto de DevOps herramientas de Amazon Web Services (AWS). Se integra con una gran variedad de fuentes (como sistemas de control de versiones y soluciones de almacenamiento), productos y servicios de integración continua (CI) de AWS y sus socios, y productos de código abierto para proporcionar un servicio de end-to-end flujo de trabajo que permita una implementación rápida de aplicaciones e infraestructuras.

Sin embargo, CodePipeline no es compatible en todas las regiones de AWS y es útil tener un orquestador invisible que conecte los servicios de CI/CD de AWS. Este patrón describe cómo implementar una canalización de end-to-end flujo de trabajo en las regiones de AWS en las que aún CodePipeline no se admite mediante el uso de servicios de CI/CD de AWS, como CodeCommit AWS CodeBuild, AWS y AWS. CodeDeploy

Requisitos previos y limitaciones

Requisitos previos

  • Una cuenta de AWS activa

  • CLI del AWS Cloud Development Kit (AWS CDK) versión 2.28 o posterior

Arquitectura

Pila de tecnología de destino

En el siguiente diagrama se muestra una canalización que se creó en una región que no es compatible CodePipeline, como la región de África (Ciudad del Cabo). Un desarrollador envía los archivos de CodeDeploy configuración (también denominados scripts de enlace del ciclo de vida de despliegue) al repositorio de Git que aloja. CodeCommit (Consulta el GitHub repositorio que se proporciona con este patrón). Se inicia CodeBuild automáticamente una EventBridge regla de Amazon.

Los archivos CodeDeploy de configuración se obtienen CodeCommit como parte de la etapa de origen de la canalización y se transfieren a ella. CodeBuild 

En la siguiente fase, CodeBuild realiza las siguientes tareas: 

  1. Descargue el archivo TAR del código fuente de la aplicación. Puede configurar el nombre de este archivo mediante Parameter Store, una capacidad de AWS Systems Manager.

  2. Descarga los archivos CodeDeploy de configuración.

  3. Crea un archivo combinado de código fuente de la aplicación y archivos de CodeDeploy configuración específicos del tipo de aplicación.

  4. Inicia el CodeDeploy despliegue en una instancia de Amazon Elastic Compute Cloud (Amazon EC2) mediante el archivo combinado.

Creación de canalizaciones en una región de AWS no compatible

Herramientas

Servicios de AWS

  • AWS CodeBuild es un servicio de compilación totalmente gestionado que le ayuda a compilar código fuente, ejecutar pruebas unitarias y producir artefactos listos para su implementación.

  • AWS CodeCommit es un servicio de control de versiones que le ayuda a almacenar y gestionar repositorios de Git de forma privada, sin necesidad de gestionar su propio sistema de control de código fuente.

  • AWS CodeDeploy automatiza las implementaciones en instancias locales o de Amazon EC2, funciones de AWS Lambda o servicios de Amazon Elastic Container Service (Amazon ECS).

  • AWS le CodePipeline ayuda a modelar y configurar rápidamente las diferentes etapas de una versión de software y a automatizar los pasos necesarios para publicar cambios de software de forma continua.

  • AWS Cloud Development Kit (AWS CDK) es un marco de desarrollo de software que le ayuda a definir y aprovisionar la infraestructura de la nube de AWS en código.

Código

El código de este patrón está disponible en el repositorio de regiones GitHub CodePipeline no compatibles.

Epics

TareaDescripciónHabilidades requeridas

Instale la CLI de AWS CDK.

Para obtener instrucciones, consulte la documentación de AWS CDK.

AWS DevOps

Instalar un cliente Git.

Para crear confirmaciones, puedes usar un cliente Git instalado en tu computadora local y, a continuación, enviar tus confirmaciones al CodeCommit repositorio. Para configurarlo CodeCommit con tu cliente Git, consulta la CodeCommit documentación.

AWS DevOps

Instale npm.

Instale el administrador de paquetes npm. Para obtener más información, consulte la documentación npm.

AWS DevOps
TareaDescripciónHabilidades requeridas

Clone el repositorio de código.

Clone el repositorio de Regions GitHub CodePipeline no compatibles en su máquina local ejecutando el siguiente comando.

git clone https://github.com/aws-samples/invisible-codepipeline-unsupported-regions
DevOps ingeniero

Establezca los parámetros en cdk.json.

Abra el archivo cdk.json y proporcione valores para los siguientes parámetros:

"pipeline_account":"XXXXXXXXXXXX", "pipeline_region":"us-west-2", "repo_name": "app-dev-repo", "ec2_tag_key": "test-vm", "configName" : "cbdeployconfig", "deploymentGroupName": "cbdeploygroup", "applicationName" : "cbdeployapplication", "projectName" : "CodeBuildProject"

donde:

  • pipeline_account es la cuenta de AWS en la que se creará la canalización.

  • pipeline_region es la región de AWS en la que se construirá la canalización.

  • repo_namees el nombre del CodeCommit repositorio.

  • ec2_tag_key es la etiqueta adjunta a la instancia EC2 en la que desea implementar el código.

  • configNamees el nombre del archivo CodeDeploy de configuración.

  • deploymentGroupNamees el nombre del grupo CodeDeploy de despliegue.

  • applicationNamees el nombre CodeDeploy de la aplicación.

  • projectNamees el nombre CodeBuild del proyecto.

AWS DevOps

Configure la biblioteca de constructo de AWS CDK.

En el GitHub repositorio clonado, utilice los siguientes comandos para instalar la biblioteca de construcción de AWS CDK, compilar la aplicación y sintetizar para generar la CloudFormation plantilla de AWS para la aplicación.

npm i aws-cdk-lib npm run build cdk synth
AWS DevOps

Implementar la aplicación de AWS CDK de muestra

Implemente el código ejecutando el siguiente comando en una región no compatible (por ejemplo af-south-1).

cdk deploy
AWS DevOps
TareaDescripciónHabilidades requeridas

Configurar CI/CD para la aplicación.

Clone el CodeCommit repositorio que especificó en el cdk.json archivo (se denomina de forma app-dev-repo predeterminada) para configurar la canalización de CI/CD de la aplicación.

git clone https://git-codecommit.us-west-2.amazonaws.com/v1/repos/app-dev-repo

donde el nombre y la región del repositorio dependen de los valores que haya proporcionado en el archivo cdk.json.

AWS DevOps
TareaDescripciónHabilidades requeridas

Pruebe la canalización con las instrucciones de implementación.

La CodeDeploy_Files carpeta del repositorio de regiones GitHub CodePipeline no compatibles incluye archivos de muestra que indican cómo CodeDeploy implementar la aplicación. El appspec.yml archivo es un archivo CodeDeploy de configuración que contiene enlaces para controlar el flujo de implementación de la aplicación. Puede usar los archivos de muestra index.html, start_server.sh, stop_server.sh y install_dependencies.sh para actualizar un sitio web alojado en Apache. Estos son ejemplos: puede usar el código del GitHub repositorio para implementar cualquier tipo de aplicación. Cuando los archivos se envían al CodeCommit repositorio, la canalización invisible se inicia automáticamente. Para ver los resultados de la implementación, compruebe los resultados de las fases individuales en las CodeDeploy consolas CodeBuild y consolas.

AWS DevOps

Recursos relacionados