Tutorial Crear un canal simple (cubo S3) - AWS CodePipeline

Tutorial Crear un canal simple (cubo S3)

La forma más sencilla de crear una canalización es utilizar el asistente Create pipeline (Crear canalización) en la consola de AWS CodePipeline.

En este tutorial, va a crear una canalización de dos etapas que utiliza un bucket de S3 con control de versiones y CodeDeploy para lanzar una aplicación de ejemplo.

nota

Si Amazon S3 es el proveedor de origen de la canalización, debe comprimir los archivos de origen en un solo archivo.zip y cargarlo en el bucket de origen. También puede cargar un archivo sin comprimir; sin embargo, se producirá un error en las acciones posteriores que esperan un archivo.zip.

Una vez creada esta canalización simple, le agregará otra etapa para después deshabilitar y volver a habilitar la transición entre etapas.

importante

Varias de las acciones que agregue a la canalización de este procedimiento utilizan recursos de AWS que tendrá que crear antes de crear la canalización. Los recursos de AWS de las acciones de origen deben crearse siempre en la misma región de AWS donde creó la canalización. Por ejemplo, si crea una canalización en la región EE.UU. Este (Ohio), el repositorio CodeCommit debe estar en la región EE.UU. Este (Ohio).

Puede agregar acciones entre regiones cuando cree la canalización. Los recursos de AWS de las acciones entre regiones deben estar siempre en la misma región de AWS donde quiera ejecutar la acción. Para obtener más información, consulte Agregar una acción entre regiones en CodePipeline.

Antes de comenzar, debe completar los requisitos previos de Introducción a CodePipeline.

Paso 1. Cree un cubo S3 para su aplicación

Puede almacenar sus aplicaciones o archivos de código fuente en cualquier ubicación con control de versiones. En este tutorial, va a crear un bucket de S3 para las aplicaciones de ejemplo y a habilitar en él el control de versiones. Una vez habilitado el control de versiones, copiará las aplicaciones de ejemplo a ese bucket.

Para crear un bucket de S3

  1. Inicie sesión en la Consola de administración de AWS y abra la consola de Amazon S3 en https://console.aws.amazon.com/s3/.

  2. Elija Create bucket (Crear bucket).

  3. En Bucket Name (Nombre del bucket), escriba el nombre del bucket (por ejemplo, awscodepipeline-demobucket-example-date).

    nota

    Como todos los nombres de bucket en Amazon S3 deben ser únicos, elija un nombre que no sea el que aparece en el ejemplo. Puede cambiar el nombre del ejemplo simplemente añadiéndole la fecha. Anote este nombre, ya que lo necesitará durante el resto de este tutorial.

    En Region (Región), elija la región en la que quiere crear la canalización (por ejemplo, EE.UU. Oeste (Oregón)) y elija Create bucket (Crear bucket).

  4. Una vez creado el bucket, aparecerá un banner donde se indicará que la operación se ha realizado correctamente. Elija Go to bucket details (Acceder a los detalles del bucket).

  5. En la pestaña Properties (Propiedades), elija Versioning (Control de versiones). Elija Enable versioning (Habilitar control de versiones) y haga clic en Save (Guardar).

    Cuando se habilita este control de versiones, Amazon S3 guarda todas las versiones de cada objeto en el bucket.

  6. En la pestaña Permissions (Permisos), deje los valores predeterminados. Para obtener más información sobre los permisos de los objetos y los buckets de S3, consulte Especificación de permisos en una política.

  7. A continuación, descargue una muestra y guardarlo en una carpeta o directorio en su ordenador local.

    1. Elija uno de los siguientes. Elegir SampleApp_Windows.zip si desea seguir los pasos de este tutorial para instancias de servidor de Windows.

      • Si desea implementar Amazon Linux instancias utilizando CodeDeploy, , descargar la aplicación de muestra aquí: SampleApp_Linux.zip.

      • Si desea implementar en instancias de servidor de Windows utilizando CodeDeploy, , descargar la aplicación de muestra aquí: sampleapp_Windows.zip.

    2. Descargue el archivo comprimido (en zip). No descomprima el archivo.

  8. En el Amazon S3 consola, para su cubo, cargue el archivo:

    1. Elija Upload (Cargar).

    2. Arrastre y suelte el archivo o elija Add files (Agregar archivos) y busque el archivo.

    3. Elija Upload (Cargar).

Paso 2. Crear Amazon EC2 Instancias de Windows e instalar el CodeDeploy agente

nota

Este tutorial contiene ejemplos de los pasos necesarios para crear instancias Amazon EC2 de Windows. Para conocer los pasos de ejemplo para crear Amazon EC2 Instancias Linux, ver Paso 3: Crear una instancia EC2 de Linux e instalar el agente de CodeDeploy. Cuando se le solicite el número de instancias que se van a crear, especifique 2 instancias.

En este paso, va a crear instancias de Windows Server de Amazon EC2 en las que implementará una aplicación de ejemplo. Como parte del proceso, instalará el agente de CodeDeploy en las instancias. Este agente de CodeDeploy es un paquete de software que permite utilizar una instancia en las implementaciones de CodeDeploy.

Para crear un rol de instancia

  1. Abra la consola de IAM en https://console.aws.amazon.com/iam/.

  2. En el panel de la consola, elija Roles.

  3. Elija Create role.

  4. En Select type of trusted entity (Seleccionar tipo de entidad de confianza), elija AWS service (Servicio de AWS). Bajo Elija un caso de uso, seleccionar EC2y luego elegir Siguiente: Permissions (Permisos)

  5. Busque y seleccione la política denominada desahogaraec2roleforawaecy luego elegir Siguiente: Etiquetas

  6. Seleccione Next (Siguiente). Review (Revisar) Escriba el nombre del rol (por ejemplo, EC2InstanceRole).

    nota

    Anote el nombre del rol para utilizarlo en el siguiente paso. Tendrá que elegir este rol cuando cree la instancia.

    Elija Create role.

Para lanzar las instancias

  1. Abra la consola de Amazon EC2 en https://console.aws.amazon.com/ec2/.

  2. En el panel de control de la consola, elija Launch instance (Lanzar instancia) y, en las opciones que aparecen, seleccione Launch instance (Lanzar instancias).

  3. En el Paso 1: Elegir una imagen de máquina Amazon (AMI) página, localizar el Base Microsoft Windows Server 2019 y, a continuación, elegir Seleccionar. (Esta AMI tiene la etiqueta "Free tier eligible" y se puede encontrar en la parte superior de la lista).

  4. En el Paso 2: Elegir un tipo de instancia página, elegir el nivel gratuito que reúne los requisitos t2.micro escriba como la configuración de hardware para su instancia y, a continuación, elija Siguiente: Página Configure Instance Details (Configurar los detalles de la instancia)

  5. En el Paso 3: Configurar detalles de instancia haga lo siguiente:

    • En Number of instances, escriba 2.

    • En Auto-assign Public IP, elija Enable.

    • En Función IAM, , elija la función IAM que creó en el procedimiento anterior (por ejemplo, EC2InstanceRole).

    • Expanda Advanced Details (Detalles avanzados) y, en User data (Datos de usuario), con la opción As text (Como texto) seleccionada, escriba lo siguiente:

      <powershell> New-Item -Path c:\temp -ItemType "directory" -Force powershell.exe -Command Read-S3Object -BucketName bucket-name/latest -Key codedeploy-agent.msi -File c:\temp\codedeploy-agent.msi Start-Process -Wait -FilePath c:\temp\codedeploy-agent.msi -WindowStyle Hidden </powershell>

      bucket-name es el nombre del cubo S3 que contiene el CodeDeploy Archivos de kit de recursos para su región. Por ejemplo, para la región de US West (Oregon), sustituya bucket-name con aws-codedeploy-us-west-2. Para obtener una lista de nombres de cubo, consulte Nombres de cubo de kit de recursos por región.

      Este código instalará el agente de CodeDeploy en la instancia a medida que se cree. Este script ha sido creado solo para instancias de Windows.

    • Deje el resto de los artículos en el Paso 3: Configurar detalles de instancia página sin modificar. Seleccione Next (Siguiente). Adición de almacenamiento:

  6. Deje el Paso 4: Añadir almacenamiento página sin cambios y, a continuación, elegir Siguiente: Añadir etiquetas

  7. En la página Add tags (Agregar etiquetas), elija Next (Siguiente). Intro Nombre en el Clave campo, introducir MyCodePipelineDemo en el Valor y luego elegir Siguiente: Página Configure Security Group (Configurar grupo de seguridad)

    importante

    Los cuadros Key (Clave) y Value (Valor) distinguen entre mayúsculas y minúsculas.

  8. En la página Configure Security Group (Configurar grupo de seguridad), permita las comunicaciones a través del puerto 80 de forma que pueda obtener acceso al punto de enlace de la instancia pública.

  9. Elija Review and Launch (Revisar y lanzar).

  10. En la página Review Instance Launch, elija Launch. Wse ha solicitado una advertencia de una clave, elegir Continuar sin un par de claves.

    nota

    A efectos de este tutorial, puede continuar sin utilizar un par de claves. Si desea usar SSH para conectarse a sus instancias, cree o use un par de claves.

    Cuando esté listo, seleccione la confirmaciónde la marca de selección y, a continuación, elegir Iniciar instancias.

  11. Elija View Instances para cerrar la página de confirmación y volver a la consola.

  12. Puede ver el estado del lanzamiento en la página Instances. Cuando se inicia una instancia, su estado inicial es pending. Una vez que se inicia la instancia, su estado cambia a running, y recibe un nombre DNS público. (Si la columna Public DNS no se muestra, haga clic en el icono Show/Hide y después seleccione Public DNS.)

  13. Puede que transcurran unos minutos hasta que la instancia esté lista para conectarse. Verifique que su instancia ha pasado las comprobaciones de estado. Puede ver esta información en la columna Status Checks (Comprobaciones de estado).

Paso 3. Crear una aplicación en CodeDeploy

En CodeDeploy, una aplicación es un identificador, en forma de nombre, del código que desea implementar. CodeDeploy utiliza este nombre para asegurarse de que se haga referencia a la combinación correcta de revisión, configuración de implementación y grupo de implementaciones durante la implementación. Al crear su canalización en pasos posteriores de este tutorial, seleccionará el nombre de la aplicación de CodeDeploy creada en este paso.

Para crear una aplicación en CodeDeploy

  1. Abra la consola de CodeDeploy en https://console.aws.amazon.com/codedeploy.

  2. Si la página Applications (Aplicaciones) no aparece, en el menú AWS CodeDeploy, elija Applications (Aplicaciones).

  3. Elija Create application.

  4. En Nombre de la aplicación, introducir MyDemoApplication.

  5. En Compute platform (Plataforma de computación), elija EC2/On-Premises.

  6. Elija Create application.

Para crear un grupo de implementaciones en CodeDeploy

  1. En la página que muestra su aplicación, elija Create deployment group (Crear grupo de implementaciones).

  2. En Deployment group name (Nombre de grupo de implementación), escriba MyDemoDeploymentGroup.

  3. En Rol de servicio, elija un rol de servicio que confíe en AWS CodeDeploy utilizando como mínimo la confianza y los permisos que se describen en Crear un rol de servicio para CodeDeploy. Para obtener el ARN del rol de servicio, consulte Obtención del ARN del rol de servicio (consola).

  4. En Deployment type (Tipo de implementación), elija In-place (In situ).

  5. En Environment configuration (Configuración de entorno), elija Amazon EC2 Instances (Instancias de Amazon EC2). Elija Name (Nombre) en el campo Key (Clave) y, en el campo Value (Valor), escriba MyCodePipelineDemo.

    importante

    Debe elegir el mismo valor para el Nombre clave que ha asignado a su instancia de EC2s cuando creaste ellos. Si etiquetó su instancias con algo distinto MyCodePipelineDemo, asegúrese de utilizarlo aquí.

  6. En Deployment configuration (Configuración de implementación), elija CodeDeployDefault.OneAtaTime.

  7. En Load Balancer (Balanceador de carga), anule la selección de Enable load balancing (Habilitar balanceo de carga). No es necesario configurar un balanceador de carga ni elegir un grupo de destino para este ejemplo.

  8. En el Avanzado sección, dejar los valores predeterminados.

  9. Elija Create deployment group.

Paso 4. Cree su primera planificación en CodePipeline

En esta parte del tutorial se crea la canalización. El ejemplo se ejecuta automáticamente en la canalización.

Para crear un proceso de lanzamiento automatizado de CodePipeline

  1. 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.

  2. En la página Welcome (Bienvenido), Getting Started (Introducción) o Pipelines (Canalizaciones), elija Create pipeline (Crear canalización).

  3. En Paso 1: Elegir configuración de tuberías, en Nombre de canal, introducir MyFirstPipeline.

    nota

    Si elige otro nombre para la canalización, utilícelo en lugar de MyFirstPipeline durante el resto de este tutorial. Después de crear una canalización, no podrá cambiar el nombre. Los nombres de canalizaciones están sujetos a algunas limitaciones. Para obtener más información, consulte Cuotas en AWS CodePipeline.

  4. En Service role (Rol de servicio), realice una de las operaciones siguientes:

    • Elija New service role (Nuevo rol de servicio) para permitir que CodePipeline cree un rol de servicio en IAM. En Nombre de función, el rol y el nombre de la política son predeterminados en este formato: desconerasdesérticasde la víctima-region-pipeline_name. Por ejemplo, esta es la función de servicio creada para este tutorial: awscodepipeline ineservicerole-eu-west-2-myfirstpipeline.

    • Elija Existing service role (Rol de servicio existente) para utilizar un rol de servicio que ya se ha creado en IAM. En Role name (Nombre del rol), elija el nombre del rol de servicio en la lista.

  5. En Advanced settings (Configuración avanzada), deje los valores predeterminados y elija Next (Siguiente).

  6. En Paso 2: Añadir fase de origen, en Proveedor de origen, elegir Amazon S3. En Bucket, escriba el nombre del bucket de S3·que creó en Paso 1. Cree un cubo S3 para su aplicación. En la clave del objeto de S3, escriba la clave del objeto con o sin una ruta de archivo y recuerde incluir la extensión de archivo. Por ejemplo, para SampleApp_Windows.zip, introduzca el nombre del archivo de muestra como se muestra en este ejemplo:

    SampleApp_Windows.zip

    Elija Paso siguiente.

    En Change detection options, deje los valores predeterminados. Esto permite a CodePipeline utilizar Amazon CloudWatch Events para detectar cambios en el bucket de código fuente.

    Seleccione Next (Siguiente).

  7. En Paso 3: Añadir fase de construcción, elegir Omitir etapa de compilacióny luego aceptar el mensaje de advertencia eligiendo Omitir de nuevo. Seleccione Next (Siguiente).

  8. En Paso 4: Añadir fase de implementación, en Implementar proveedor, elegir AWS CodeDeploy. El campo Region (Región) se establece de forma predeterminada en la misma región de AWS que la canalización. En Application name (Nombre de la aplicación), escriba MyDemoApplication o haga clic en el botón Refresh (Actualizar) y, a continuación, elija el nombre de la aplicación en la lista. En Deployment group (Grupo de implementación), escriba MyDemoDeploymentGroup o elija un grupo de la lista. A continuación, elija Next (Siguiente).

    nota

    El nombre Deploy es el nombre que se asigna por defecto a la etapa creada en el Paso 4: Añadir fase de implementación paso, igual que Fuente es el nombre que se da a la primera etapa del canal.

  9. En Paso 5: Revisión, revisar la información y elegir Crear canal.

  10. La canalización comienza a ejecutarse. Puede ver el progreso y los mensajes de éxito y error a medida que la muestra de CodePipeline implementa una página web en cada instancia Amazon EC2 en la implementación de CodeDeploy.

¡Enhorabuena! Acaba de crear una canalización sencilla en CodePipeline. La canalización tiene dos etapas:

  • Una etapa denominada Source (Código fuente), que detecta los cambios en la aplicación de ejemplo con control de versiones almacenada en el bucket de S3 y los transfiere a la canalización.

  • Una etapa Deploy (Implementación) que implementa dichos cambios en las instancias EC2 con CodeDeploy.

Ahora compruebe los resultados.

Para comprobar que la canalización se ha ejecutado correctamente

  1. Vea el progreso inicial de la canalización. El estado de cada etapa cambia de No executions yet (Sin ejecuciones) a In Progress (En curso) y después a Succeeded (Realizado correctamente) o Failed (Error). La canalización debería completar la primera ejecución en unos minutos.

  2. Cuando el estado de la acción aparezca como Realizado correctamente, en el área de estado de la etapa Implementar, elija Detalles. Se abrirá la consola de AWS CodeDeploy.

  3. En el Grupo de despliegue tab, bajo Eventos del ciclo de vida de la implementación, elegir un ID de instancia. Se abrirá la consola de EC2.

  4. En la pestaña Description (Descripción), en Public DNS (DNS público), copie la dirección y después péguela en la barra de direcciones de su explorador web. Vea la página de índice de la aplicación de ejemplo que cargó en el bucket de S3.

    La página siguiente es la aplicación de ejemplo que cargó en el bucket de S3.

Para obtener más información sobre las etapas, las acciones y cómo funcionan las canalizaciones, consulte Conceptos de CodePipeline.

(Opcional) STEP 5: Añadir otra etapa a su canal

Ahora agregaremos otra etapa a la canalización para implementar desde los servidores de ensayo a los servidores de producción utilizando CodeDeploy. En primer lugar debe crear otro grupo de implementaciones en CodePipelineDemoApplication en CodeDeploy. A continuación tiene que añadir una etapa con una acción que utilice ese grupo de implementaciones. Para añadir otra etapa, utilice la consola de CodePipeline o la AWS CLI para obtener y editar manualmente la estructura de la canalización en un archivo JSON y, a continuación, ejecute el comando update-pipeline para actualizar la canalización con los cambios efectuados.

Crear un segundo grupo de implementaciones en CodeDeploy

nota

En esta parte del tutorial, va a crear un segundo grupo de implementaciones, pero la implementación se hará en las mismas instancias Amazon EC2 usadas anteriormente. Esto solo se hace con fines ilustrativos. La intención es que el diseño falle para poder ver el modo en que se muestran los errores en CodePipeline.

Para crear un segundo grupo de implementaciones en CodeDeploy

  1. Abra la consola de CodeDeploy en https://console.aws.amazon.com/codedeploy.

  2. Elija Applications (Aplicaciones) y, en la lista de aplicaciones, elija MyDemoApplication.

  3. Elija la pestaña Deployment groups (Grupos de implementaciones) y , a continuación, Create deployment group (Crear grupo de implementaciones).

  4. En la página Create deployment group (Crear grupo de implementaciones), en Deployment group name (Nombre de grupo de implementaciones), escriba un nombre para el segundo grupo de implementaciones, como CodePipelineProductionFleet.

  5. En Service Role (Rol de servicio), seleccione el mismo rol de servicio de CodeDeploy que utilizó para la implementación inicial (no el rol de servicio de CodePipeline).

  6. En Deployment type (Tipo de implementación), elija In-place (In situ).

  7. En Environment configuration (Configuración de entorno), elija Amazon EC2 Instances (Instancias de Amazon EC2). Elija Name (Nombre) el cuadro Key (Clave) y en el cuadro Value (Valor), seleccione MyCodePipelineDemo de la lista. Mantenga la configuración predeterminada de Deployment settings (Ajustes de implementación).

  8. En Deployment configuration (Configuración de implementación), elija CodeDeployDefault.OneAtaTime.

  9. En Load Balancer (Balanceador de carga), anule la selección de Enable load balancing (Habilitar balanceo de carga).

  10. Elija Create deployment group.

Agregar el grupo de implementación como otra etapa de la canalización

Ahora que tiene otro grupo de implementación, puede agregar una etapa que lo utilice para realizar la implementación en las mismas instancias EC2 que usamos antes. Puede utilizar la consola de CodePipeline o la AWS CLI para añadir la etapa.

Crear una tercera etapa (consola)

Puede usar la consola de CodePipeline para añadir una nueva etapa que use el nuevo grupo de implementaciones. Como este grupo de implementación utiliza las instancias EC2 que ya habíamos empleado, la acción de implementación en esta etapa produce un error.

  1. 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.

  2. En Name (Nombre), elija el nombre de la canalización que ha creado, MyFirstPipeline.

  3. En la página de detalles de la canalización, elija Edit.

  4. En la página Edit (Editar), elija + Add stage (Añadir etapa) para añadir una etapa inmediatamente después de la etapa Deploy (Implementar).

  5. En Añadir etapa, en Nombre de la etapa, introducir Production. Elegir Añadir etapa.

  6. En la nueva etapa, elija +Add action group (+Añadir grupo de acciones).

  7. En Editar acción, en Nombre de la acción, introducir Deploy-Second-Deployment. En Proveedor de acciones, en Implementar, elegir Código de AWS.

  8. En la sección CodeDeploy, en Application name (Nombre de la aplicación), elija MyDemoApplication en la lista desplegable, tal como hizo al crear la canalización. En Grupo de despliegue, elegir el grupo de implementación que acaba de crear, CodePipelineProductionFleet. En Artefactos de entrada, elegir el artefacto de entrada de la acción de origen. Seleccione Save.

  9. En la página Edit (Editar), elija Save (Guardar). En Save pipeline changes (Guardar los cambios de la canalización), elija Save (Guardar).

  10. Aunque se ha añadido la nueva etapa a la canalización, aparece el estado No executions yet (Sin ejecuciones) porque no se han producido cambios que activen otra ejecución de la canalización. Tiene que volver a ejecutar manualmente la última revisión para ver cómo se ejecuta la canalización editada. En la página de detalles de canalización, elija Cambio de versión y, a continuación, elija Release (Liberar) cuando se le solicite. Esto ejecuta la revisión más reciente disponible en cada ubicación de código fuente especificada en una acción de código fuente a través de la canalización.

    Como alternativa, para usar la AWS CLI para volver a ejecutar la canalización, en una terminal de su máquina Linux, macOS, or Unix local o en el símbolo del sistema de su equipo Windows local, ejecute el comando start-pipeline-execution, especificando el nombre de la canalización. De este modo se ejecuta por segunda vez la aplicación del bucket de código fuente en la canalización.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    Este comando devuelve un objeto pipelineExecutionId.

  11. Vuelva a la consola de CodePipeline y en la lista de canalizaciones, elija MyFirstPipeline para abrir la página de visualización.

    La canalización muestra tres etapas y el estado del artefacto en ejecución a lo largo de esas tres etapas. Pueden que transcurran cinco minutos hasta que el proceso de canalización se ejecute en todas las etapas. Verá las implementaciones en las primeras dos etapas, tal como antes, pero la etapa Production (Producción) mostrará que la acción Deploy-Second-Deployment no se ha realizado correctamente.

  12. En la acción Deploy-Second-Deployment, elija Details. Se le redirigirá a la página de la implementación CodeDeploy. En este caso, el error se ha producido porque el primer grupo de instancias se ha implementado en todas las instancias EC2 y no han quedado instancias para el segundo grupo de implementación.

    nota

    Se trata de un error de diseño, para mostrar lo que ocurre cuando se produce un error en una etapa de la canalización.

Crear una tercera etapa (CLI)

Aunque usar la AWS CLI para añadir una etapa a la canalización es más complejo que usar la consola, tiene la ventaja de ofrecer mayor visibilidad de la estructura de la canalización.

Para crear una tercera etapa en la canalización

  1. Abra una sesión de terminal en su máquina Linux, macOS, or Unix local o a través del símbolo del sistema en su equipo Windows local y ejecute el comando get-pipeline para mostrar la estructura de la canalización que acaba de crear. Para MyFirstPipeline, debería escribir el siguiente comando:

    aws codepipeline get-pipeline --name "MyFirstPipeline"

    Este comando devuelve la estructura de MyFirstPipeline. La primera parte del resultado debería tener un aspecto similar al siguiente:

    { "pipeline": { "roleArn": "arn:aws:iam::80398EXAMPLE:role/AWS-CodePipeline-Service", "stages": [ ...

    La última parte de la salida incluye los metadatos de la canalización y debería tener un aspecto similar al siguiente:

    ... ], "artifactStore": { "type": "S3" "location": "codepipeline-us-east-2-250656481468", }, "name": "MyFirstPipeline", "version": 4 }, "metadata": { "pipelineArn": "arn:aws:codepipeline:us-east-2:80398EXAMPLE:MyFirstPipeline", "updated": 1501626591.112, "created": 1501626591.112 } }
  2. Copiar y pegar esta estructura en un editor de texto sin formato y guardar el archivo como pipeline.json. Para mayor comodidad, guarde este archivo en el mismo directorio donde ejecute el aws codepipeline comandos.

    nota

    Puede enviar JSON directamente a un archivo con el comando get-pipeline del modo siguiente:

    aws codepipeline get-pipeline --name MyFirstPipeline >pipeline.json
  3. Copie la sección de la etapa Implementar y péguela después de las primeras dos etapas. Al ser una etapa de implementación, al igual que la etapa Implementar, la utilizará como plantilla de la tercera etapa.

  4. Cambie el nombre de la etapa y los detalles del grupo de implementación.

    En el siguiente ejemplo, se muestra el archivo JSON que se va a agregar al archivo pipeline.json después de la etapa Implementar. Edite los elementos resaltados con valores nuevos. No olvide incluir una coma para separar las definiciones de las etapas Implementar y Producción.

    , { "name": "Production", "actions": [ { "inputArtifacts": [ { "name": "MyApp" } ], "name": "Deploy-Second-Deployment", "actionTypeId": { "category": "Deploy", "owner": "AWS", "version": "1", "provider": "CodeDeploy" }, "outputArtifacts": [], "configuration": { "ApplicationName": "CodePipelineDemoApplication", "DeploymentGroupName": "CodePipelineProductionFleet" }, "runOrder": 1 } ] }
  5. Si está trabajando con la estructura de la canalización recuperada mediante el comando get-pipeline, debe eliminar las líneas metadata del archivo JSON. De lo contrario, el comando update-pipeline no puede utilizarlo. Retire el "metadata": { } y el "created", , "pipelineARN"y "updated" campos.

    Por ejemplo, quite las siguientes líneas de la estructura:

    "metadata": { "pipelineArn": "arn:aws:codepipeline:region:account-ID:pipeline-name", "created": "date", "updated": "date" }

    Guarde el archivo .

  6. Ejecute el comando update-pipeline, especificando el archivo JSON de la canalización, de forma similar a como se muestra a continuación:

    aws codepipeline update-pipeline --cli-input-json file://pipeline.json

    Este comando devuelve la estructura completa de la canalización actualizada.

    importante

    Asegúrese de incluir file:// antes del nombre de archivo. Es obligatorio en este comando.

  7. Ejecute el comando start-pipeline-execution y especifique el nombre de la canalización. De este modo se ejecuta por segunda vez la aplicación del bucket de código fuente en la canalización.

    aws codepipeline start-pipeline-execution --name MyFirstPipeline

    Este comando devuelve un objeto pipelineExecutionId.

  8. Abra la consola de CodePipeline y elija MyFirstPipeline en la lista de canalizaciones.

    La canalización muestra tres etapas y el estado del artefacto en ejecución a lo largo de esas tres etapas. Pueden que transcurran cinco minutos hasta que el proceso de canalización se ejecute en todas las etapas. Aunque la implementación se realiza correctamente en las primeras dos etapas, tal como antes, la etapa Production muestra que se ha producido un error en la acción de Deploy-Second-Deployment.

  9. En la acción Deploy-Second-Deployment, elija Details para ver los detalles del error. Se le redirigirá a la página de detalles de la implementación de CodeDeploy. En este caso, el error se ha producido porque el primer grupo de instancias se ha implementado en todas las instancias EC2 y no han quedado instancias para el segundo grupo de implementación.

    nota

    Se trata de un error de diseño, para mostrar lo que ocurre cuando se produce un error en una etapa de la canalización.

(Opcional) Step 6: Deshabilitar y habilitar transiciones entre etapas en CodePipeline

La transición entre las etapas de una canalización puede habilitarse y deshabilitarse. Deshabilitar una transición entre etapas permite controlar manualmente las transiciones entre una etapa y otra. Por ejemplo, puede ser conveniente ejecutar las dos primeras etapas de una canalización, pero deshabilitar las transiciones a la tercera hasta que esté listo para implementar en la producción, o mientras investiga un problema o un error en esa etapa.

Para deshabilitar y habilitar las transiciones entre etapas en una canalización de CodePipeline

  1. Abra la consola de CodePipeline y elija MyFirstPipeline en la lista de canalizaciones.

  2. En la página de detalles de la canalización, elija el botón Deshabilitar la transición situado entre la segunda etapa, Implementar y la tercera etapa que agregó en la sección anterior (Producción).

  3. En el cuadro de diálogo Disable transition (Deshabilitar transición), escriba un motivo para deshabilitar la transición entre las etapas y después elija Disable (Deshabilitar).

    La flecha entre etapas muestra un icono y cambia de color, y aparece el botón Enable transition (Habilitar transición).

  4. Cargue nuevamente la muestra en el bucket de S3. Como el bucket tiene varias versiones, este cambio inicia la canalización. Para obtener más información, consulte Upload the sample application.

  5. Vuelva a la página de detalles de la canalización y observe el estado de las etapas. La vista de canalización cambia para mostrar el progreso y el éxito de las primeras dos etapas, pero no se realizan cambios en la tercera etapa. Este proceso puede tardar unos minutos.

  6. Habilite la transición eligiendo el botón Enable transition (Habilitar transición) entre las dos etapas. En el cuadro de diálogo Enable transition, elija Enable. La fase comienza a ejecutarse en unos minutos e intenta procesar el artefacto que ya se ha ejecutado en las dos primeras fases de la canalización.

    nota

    Si desea que esta tercera etapa se realice correctamente, edite el grupo de implementación CodePipelineProductionFleet antes de habilitar la transición y especifique otro conjunto de instancias EC2 en el que la aplicación esté implementada. Para obtener más información sobre cómo hacerlo, consulte Cambio dreproductivo group settings. Si crea más instancias EC2, se podrían generar costos adicionales.

Paso 7. Limpiar recursos

Puede reutilizar algunos de los recursos que ha creado aquí en Tutorial: Crear una canalización de cuatro etapas. Por ejemplo, puede reutilizar la implementación y la aplicación de CodeDeploy. Puede configurar una acción de construcción con un proveedor como CodeBuild, que es un servicio de construcción totalmente gestionado en la nube. También puede configurar una acción de construcción que utilice un proveedor con un servidor o sistema de construcción, como Jenkins.

Sin embargo, después de completar este y otros tutoriales, debe eliminar el canal y los recursos que utiliza, de modo que no se le cargue el uso continuado de esos recursos. Elimine primero la canalización, después la aplicación de CodeDeploy y las instancias EC2 asociadas y, por último, el bucket de S3.

Para limpiar los recursos usados en este tutorial

  1. Para limpiar tu CodePipeline recursos, siga las instrucciones de Eliminar un pipelina en la codepipeline de AWS.

  2. Para limpiar los recursos de CodeDeploy, siga las instrucciones que se indican en Para limpiar los recursos (consola).

  3. Para eliminar el bucket de S3, siga las instrucciones que se especifican en Eliminar o vaciar un bucket de S3. Si no tiene intención de crear más canalizaciones, elimine el bucket de S3 creado para almacenar los artefactos de la canalización. Para obtener más información acerca de este bucket, consulte Conceptos de CodePipeline.