Automatización de la implementación de código con AWS CodeCommit y CodeDeploy

Publicado: 2022-03-25

Automate Code Deployment with AWS CodeCommit & CodeDeploy

Como desarrollador web, su trabajo puede incluir varias tareas complejas, como la automatización de la implementación de código en servidores de producción o si trabaja en un grupo y enfrenta problemas al cargar su código en un sitio web en vivo, entonces esta publicación de blog es una solución para superar todos esos problemas.

Al usar FTP, debe haber sobrescrito el código de su co-desarrollador, un problema que es bastante común y nos sucede a la mayoría de nosotros. Esta guía le mostrará la automatización de la implementación de código con los servicios de AWS CodeCommit, CodeDeploy y Pipeline.

El panorama tecnológico:

  1. AWS CodeCommit : Usaremos CodeCommit para mantener nuestros repositorios (contenido web/archivos de código) que albergarán todos los archivos del proyecto y los registros de confirmación.
  2. Servidor EC2 : Usaremos EC2 como nuestro servidor de producción, contendrá el sitio en vivo y el código para los visitantes de su sitio web.
  3. AWS CodeDeploy : mantendrá la aplicación para publicar su código en el servidor EC2. También crearemos un grupo de implementación que contendrá el nombre o la etiqueta de la instancia EC2 de destino donde deseamos publicar nuestro código.
  4. Canalización : seleccionaremos CodeCommit como nuestra fuente y CodeDeploy como nuestra etapa de implementación. Por lo tanto, siempre que se detecten cambios de código en CodeCommit, la canalización se ejecutará y enviará esos cambios de código a CodeDeploy (instancia EC2).

Automatización de implementación de código: explicada en detalle :

¿Busca EXPERTOS DE AWS? VER AQUÍ

Creación de un usuario de IAM y Git para la automatización de implementación de código

Primero necesitaremos crear un usuario de IAM y un usuario de Git que realizarán los cambios de código y los publicarán en el servidor de implementación.

  1. Crear un usuario de IAM
    1. Permitir acceso a : AWSCodeCommitFullAccess, AWSCodeDeployFullAccess, AWSCodeCommitPowerUser. Encontrará esta opción en la pestaña "Adjuntar pólizas existentes directamente".
  2. Ahora, inicie sesión con este usuario de IAM.
  3. Haga clic en Credenciales de seguridad en la esquina superior derecha.
  4. Haga clic en la pestaña Credenciales de AWS CodeCommit .
  5. En la sección "Credenciales HTTPS Git para AWS CodeCommit", haga clic en el botón Generar credencial .
  6. Ahora, copie ese nombre de usuario y contraseña en un lugar seguro. Este será el nombre de usuario y la contraseña principales de su Git para realizar cambios de código push/pull.

Creación de un repositorio en CodeCommit

Ahora, creemos un repositorio que contendrá su código exacto.

  1. Vaya al panel de CodeCommit desde el usuario de IAM.
  2. En la esquina superior derecha, seleccione la región donde desea crear su repositorio.
  3. Haga clic en Crear repositorio, asígnele un nombre, una descripción y haga clic en crear.
  4. En la sección " Clonar el repositorio ", verá una URL de su repositorio. Guárdelo en un lugar seguro. Se verá así: https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest

Creating a Repository in CodeCommit

¿Busca EXPERTOS DE AWS? VER AQUÍ

Cargando su archivo de proyecto por primera vez

  1. Abra el símbolo del sistema de su sistema local donde reside su código original.
  2. En el símbolo del sistema, navegue hasta la ruta donde reside su código.
  3. Ahora, ejecute los siguientes comandos para enviar su código al repositorio de AWS por primera vez:

iniciar git
git config –local init.defaultBranch principal
git config –global init.defaultBranch principal
agrega git ## esto confirmará todos los archivos del proyecto
git commit –m “Commit inicial”
git push https://git-codecommit.ap-south-1.amazonaws.com/v1/repos/HarryTest –all

Uploading your project file for the first time

  • Crear instancia EC2 e instalar CodeDeploy Agent
  1. Crear un rol de instancia
    1. Abra su consola de IAM de AWS.
    2. Vaya a la pestaña Roles >> Crear rol.
    3. En Seleccione el tipo de entidad de confianza, seleccione el servicio de AWS . En "Elija un caso de uso", seleccione EC2 . En "Seleccione su caso de uso", elija EC2. Elija Siguiente: Permisos .
    4. Busque y seleccione la política llamada AmazonEC2RoleforAWSCodeDeploy y luego elija Siguiente: Etiquetas .
    5. Elija Siguiente: Revisar. Ingrese un nombre para el rol (por ejemplo, EC2InstanceRole ) y haga clic en Crear .
  2. Crear una instancia EC2
    1. Vaya a la consola de EC2. Haga clic en Iniciar instancia.
    2. Elija una imagen de máquina de Amazon (AMI), busque Amazon Linux 2 AMI (HVM), tipo de volumen SSD y luego elija Seleccionar. (Esta AMI está etiquetada como "Elegible para nivel gratuito" y se puede encontrar en la parte superior de la lista).
    3. Elija una página de Tipo de instancia, elija el tipo t2.micro apto para la capa gratuita como la configuración de hardware para su instancia y luego elija Siguiente: Configurar detalles de la instancia .
    4. Configure la página Detalles de la instancia, haga lo siguiente:
      1. En Número de instancias, ingrese 1 .
      2. En Asignación automática de IP pública, elija Habilitar .
      3. En el rol de IAM, elija el rol de IAM que creó en el procedimiento anterior (por ejemplo, EC2InstanceRole ).
      4. Expanda Detalles avanzados y, en el campo Datos de usuario, ingrese lo siguiente:

#!/bin/bash
yum-y actualización
yum instalar -y ruby
yum install -y aws-cli
cd /home/ec2-usuario
wget https://aws-codedeploy-us-east-2.s3.us-east-2.amazonaws.com/latest/install
chmod +x ./instalar
./instalar automáticamente

  1. Deje el resto de los elementos en el Paso 3: configurar la página Detalles de la instancia sin cambios. Elija Siguiente: Agregar almacenamiento .
  2. Deje el Paso 4: Agregar página de almacenamiento sin cambios y luego elija Siguiente: Agregar etiquetas.
  3. Elija Agregar etiqueta . En Clave, ingrese Nombre y en Valor, ingrese MyCodePipelineDemo . Elija Siguiente: Configurar grupo de seguridad. Posteriormente, crea una aplicación de CodeDeploy que implementa la aplicación de muestra en esta instancia. CodeDeploy selecciona instancias para implementar en función de las etiquetas que se adjuntan a las instancias.
  4. página Configurar grupo de seguridad, haga lo siguiente:
      • Junto a Asignar un grupo de seguridad , seleccione Crear un nuevo grupo de seguridad .
      • En la fila de SSH , en Origen , seleccione Mi IP .
      • Elija Agregar regla , elija HTTP y luego, en Fuente , elija Mi IP
  5. Elija Revisar y lanzar.
  6. En la página Revisar lanzamiento de instancia , seleccione Lanzar. Cuando se le solicite un par de claves, seleccione ' Continuar sin un par de claves' .
  7. Elija Ver instancias para cerrar la página de confirmación y volver a la consola.
  8. Puede ver el estado del lanzamiento en la página Instancias . Cuando lanza una instancia, su estado inicial es "pendiente". Una vez que se inicia la instancia, su estado cambia a 'en ejecución' y recibe un nombre de DNS público. (Si no se muestra la columna Public DNS , elija el ícono Show/Hide y luego seleccione Public DNS ).
  9. La instancia puede tardar unos minutos en estar lista para que te conectes a ella. Vea la información en la columna Verificaciones de estado para ver si su instancia ha pasado sus verificaciones de estado.

Create an EC2 Instance

¿Busca EXPERTOS DE AWS? VER AQUÍ

Crear una aplicación en CodeDeploy

  • Crear un rol de servicio de CodeDeploy
    • Abra la consola de IAM en https://console.aws.amazon.com/iam/
    • En el tablero de la consola, elija Roles .
    • Elija Crear rol .
    • En Seleccione el tipo de entidad de confianza, seleccione el servicio de AWS . En Elegir un caso de uso , seleccione CodeDeploy . En Seleccione su caso de uso, elija CodeDeploy. Elija Siguiente: Permisos. La política administrada de AWSCodeDeployRole ya está asociada al rol.
    • Elija Siguiente: Etiquetas y Siguiente: Revisar.
    • Ingrese un nombre para el rol (por ejemplo, CodeDeployRole) y luego elija Crear rol.
  • Crear una aplicación en CodeDeploy
    • Abra la consola de CodeDeploy en https://console.aws.amazon.com/codedeploy
    • Si la página Aplicaciones no aparece, en el menú, seleccione Aplicaciones .
    • Elija Crear aplicación .
    • En el Nombre de la aplicación, ingrese MyDemoApplication .
    • En Compute Platform, elija EC2/On-premises .
    • Elija Crear una aplicación.

    Create an application in CodeDeploy

  • Crear un grupo de implementación en CodeDeploy
    • En la página que muestra su aplicación, elija Crear grupo de implementación .
    • En el nombre del grupo de implementación, ingrese MyDemoDeploymentGroup .
    • Rol en servicio, elija el rol de servicio que creó anteriormente (por ejemplo, CodeDeployRole ).
    • En Tipo de implementación, elija In situ .
    • En Configuración del entorno , elija Instancias de Amazon EC2 . En el campo Clave, ingrese Nombre . En el campo Valor, ingrese el nombre que usó para etiquetar la instancia (por ejemplo, MyCodePipelineDemo ).
    • En Configuración de implementación, elija CodeDeployDefault.OneAtaTime .
    • En Equilibrador de carga, asegúrese de que Habilitar equilibrio de carga no esté seleccionado . No necesita configurar un balanceador de carga o elegir un grupo objetivo para este ejemplo.
    • Expanda la sección Avanzado. En Alarmas, si aparece alguna alarma, seleccione Ignorar configuración de alarma.
    • Elija Crear grupo de implementación.

Create a deployment group in CodeDeploy

¿Busca EXPERTOS DE AWS? VER AQUÍ

Crear una canalización

    • Crear una canalización
    • Inicie sesión en la consola de administración de AWS y abra la consola de CodePipeline en http://console.aws.amazon.com/codesuite/codepipeline/home
    • Abra la consola de CodePipeline en https://console.aws.amazon.com/codepipeline/
    • Seleccione Crear canalización .
    • En el Paso 1 : seleccione la configuración de la canalización, en el nombre de la canalización, ingrese MyFirstPipeline .
    • En el rol de servicio, elija el rol de servicio nuevo para permitir que CodePipeline cree un rol de servicio en IAM.
    • Deje la configuración en Configuración avanzada en sus valores predeterminados y luego seleccione Siguiente.
    • En el Paso 2 : Agregar etapa de origen, en Proveedor de origen, seleccione CodeCommit .
      En Nombre del repositorio, seleccione el nombre del repositorio de CodeCommit que creó en el paso 1: Crear un repositorio de CodeCommit. En Nombre de la sucursal, elija principal y luego seleccione Siguiente paso.
    • Después de seleccionar el nombre y la rama del repositorio, un mensaje muestra la regla de Amazon CloudWatch Events que se creará para esta canalización.
    • En las opciones de 'Cambiar detección', deje los valores predeterminados. Esto permite que CodePipeline utilice Amazon CloudWatch Events para detectar cambios en su repositorio de origen.
    • Seleccione Siguiente .
    • En el Paso 3 : Agregar etapa de compilación, seleccione Omitir etapa de compilación y luego acepte el mensaje de advertencia eligiendo Omitir nuevamente . Seleccione Siguiente .

    Nota : en este tutorial, está implementando un código que requiere un servicio sin compilación, por lo que puede omitir este paso. Sin embargo, si es necesario compilar su código fuente antes de implementarlo en las instancias, puede configurar CodeBuild en este paso.

    • En el Paso 4 : Agregar etapa de implementación, en Implementar proveedor, seleccione CodeDeploy .
      En el nombre de la aplicación, seleccione MyDemoApplication . En el grupo Implementación, seleccione MyDemoDeploymentGroup y luego seleccione Siguiente paso .
    • En el Paso 5 : Revise la información y luego seleccione Crear tubería .
    • La tubería comienza a ejecutarse después de que se crea. Descarga el código de su repositorio de CodeCommit y crea una implementación de CodeDeploy en su instancia de EC2. Puede ver los mensajes de progreso, "éxito" y "fallo" a medida que la muestra de CodePipeline implementa la página web en la instancia de Amazon EC2 en la implementación de CodeDeploy.

Create a Pipeline

¡Ya está todo listo! Vaya a Implementar Implementaciones. Verá los registros de todas las implementaciones que se realizaron correctamente y las que fallaron.

Para verificar los cambios en el sitio, abra su instancia EC2, busque su DNS público, que aparecerá como: http://ec2-3-108-40-48.ap-south-1.compute.amazonaws.com .

Una vez que lo navegue, verá sus páginas en vivo.

Create an Option Group

Ha completado con éxito la automatización de implementación de código. Ahora puede enviar nuevos cambios de código a su repositorio y publicarlos en su sitio automáticamente. Si todavía tiene algún problema, no dude en comentar aquí.

¿Busca EXPERTOS DE AWS? VER AQUÍ