Amazon Elastic Container Service y CodeDeploy azul-verde - AWS CodePipeline

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.

Amazon Elastic Container Service y CodeDeploy azul-verde

Puede configurar una canalización AWS CodePipeline que despliegue aplicaciones de contenedores mediante una implementación azul/verde. En una implementación azul/verde, puede lanzar una versión nueva de la aplicación junto con la versión antigua y probar la versión nueva antes de redirigir el tráfico a ella. También puede monitorizar el proceso de implementación y revertirlo rápidamente si hay algún problema.

La canalización completa detecta los cambios en las imágenes o en el archivo de definición de tareas y los utiliza CodeDeploy para enrutar e implementar el tráfico a un clúster y un balanceador de cargas de Amazon ECS. CodeDeploy crea un nuevo receptor en el balanceador de cargas que puede dirigir la nueva tarea a través de un puerto especial. También puede configurar la canalización para que utilice una ubicación de origen, como un CodeCommit repositorio, en la que se almacene la definición de tareas de Amazon ECS.

Antes de crear la canalización, debe haber creado los recursos de Amazon ECS, los CodeDeploy recursos, el balanceador de carga y el grupo objetivo. Debe haber etiquetado y almacenado la imagen en su repositorio de imágenes y haber cargado la definición de la tarea y el AppSpec archivo en su repositorio de archivos.

nota

En este tema se describe la acción de despliegue de Amazon ECS a CodeDeploy azul/verde para. CodePipeline Para obtener información de referencia sobre las acciones de implementación estándar de Amazon ECS en CodePipeline, consulteAmazon Elastic Container Service.

Tipo de acción

  • Categoría: Deploy

  • Propietario: AWS

  • Proveedor: CodeDeployToECS

  • Versión: 1

Parámetros de configuración

ApplicationName

Obligatorio: sí

El nombre de la aplicación en CodeDeploy. Antes de crear la canalización, debe haber creado ya la aplicación en CodeDeploy.

DeploymentGroupName

Obligatorio: sí

El grupo de implementación especificado para los conjuntos de tareas de Amazon ECS que creó para CodeDeploy la aplicación. Antes de crear la canalización, debe haber creado ya el grupo de implementación en CodeDeploy.

TaskDefinitionTemplateArtifact

Obligatorio: sí

El nombre del artefacto de entrada que proporciona el archivo de definición de tareas a la acción de implementación. Este es generalmente el nombre del artefacto de salida de la acción de origen. Cuando utiliza la consola, el nombre por defecto del artefacto de salida de la acción de origen es SourceArtifact.

AppSpecTemplateArtifact

Obligatorio: sí

El nombre del artefacto de entrada que proporciona el AppSpec archivo a la acción de despliegue. Este valor se actualiza cuando se ejecuta la canalización. Este es generalmente el nombre del artefacto de salida de la acción de origen. Cuando utiliza la consola, el nombre por defecto del artefacto de salida de la acción de origen es SourceArtifact. TaskDefinitionEn el caso de AppSpec un archivo, puede conservar el texto del <TASK_DEFINITION> marcador de posición como se muestra aquí.

AppSpecTemplatePath

Obligatorio: no

El nombre del archivo almacenado en la ubicación del AppSpec archivo de origen de la canalización, como el CodeCommit repositorio de la canalización. El nombre del archivo predeterminado es appspec.yaml. Si el AppSpec archivo tiene el mismo nombre y está almacenado en el nivel raíz del repositorio de archivos, no es necesario que proporciones el nombre del archivo. Si la ruta no es la predeterminada, introdúzcala con el nombre del archivo.

TaskDefinitionTemplatePath

Obligatorio: no

El nombre de archivo de la definición de tarea almacenada en la ubicación de origen del archivo de canalización, como el CodeCommit repositorio de la canalización. El nombre del archivo predeterminado es taskdef.json. Si el archivo de definición de tarea tiene el mismo nombre y está almacenado en el nivel raíz del repositorio de archivos, no es necesario que proporcione el nombre del archivo. Si la ruta no es la predeterminada, introdúzcala con el nombre del archivo.

Imagen <Number>ArtifactName

Obligatorio: no

El nombre del artefacto de entrada que proporciona la imagen a la acción de implementación. Por lo general, se trata del artefacto de salida del repositorio de imágenes, como el resultado de la acción de origen de Amazon ECR.

Los valores disponibles para <Number> son del 1 al 4.

Imagen <Number>ContainerName

Obligatorio: no

El nombre de la imagen disponible en el repositorio de imágenes, como el repositorio de origen de Amazon ECR.

Los valores disponibles para <Number> son del 1 al 4.

Artefactos de entrada

  • Número de artefactos: 1 to 5

  • Descripción: La CodeDeployToECS acción busca primero el archivo de definición de tareas y el AppSpec archivo en el repositorio de archivos de origen, luego busca la imagen en el repositorio de imágenes, luego genera dinámicamente una nueva revisión de la definición de la tarea y, finalmente, ejecuta los AppSpec comandos para implementar el conjunto de tareas y el contenedor en el clúster.

    La acción CodeDeployToECS busca un archivo imageDetail.json que asigne el URI de la imagen a la imagen. Cuando se confirma un cambio en el repositorio de imágenes de Amazon ECR, la acción de origen de ECR de la canalización crea un archivo imageDetail.json para dicha confirmación. También puede añadir manualmente un archivo imageDetail.json para una canalización en la que la acción no esté automatizada. Para obtener más información sobre el archivo imageDetail.json, consulte Archivo imageDetail.json para las acciones de implementación blue/green de .

    La acción CodeDeployToECS genera de forma dinámica una nueva revisión de la definición de la tarea. En esta fase, esta acción reemplaza los marcadores de posición del archivo de definición de tareas por el URI de imagen obtenido de los archivos ImageDetail.json. Por ejemplo, si establece IMAGE1_NAME como ContainerName parámetro Image1, debe especificar el marcador de posición como el <IMAGE1_NAME>valor del campo de imagen en el archivo de definición de tareas. En este caso, la acción de CodeDeployTo ECS reemplaza el marcador de posición por el <IMAGE1_NAME>URI de la imagen real recuperado de ImageDetail.json en el artefacto que especifiques como Image1. ArtifactName

    Para las actualizaciones de las definiciones de tareas, el archivo contiene la propiedad. CodeDeploy AppSpec.yaml TaskDefinition

    TaskDefinition: <TASK_DEFINITION>

    La acción CodeDeployToECS actualizará esta propiedad mediante la acción una vez creada la nueva definición de tarea.

    Para el valor del campo TaskDefinition, el texto del marcador de posición debe ser <TASK_DEFINITION>. La acción CodeDeployToECS reemplaza este marcador de posición por el ARN real de la definición de tarea generada dinámicamente.

Artefactos de salida

  • Número de artefactos: 0

  • Descripción: los artefactos de salida no se aplican a este tipo de acción.

Declaración de acciones

YAML
Name: Deploy Actions: - Name: Deploy ActionTypeId: Category: Deploy Owner: AWS Provider: CodeDeployToECS Version: '1' RunOrder: 1 Configuration: AppSpecTemplateArtifact: SourceArtifact ApplicationName: ecs-cd-application DeploymentGroupName: ecs-deployment-group Image1ArtifactName: MyImage Image1ContainerName: IMAGE1_NAME TaskDefinitionTemplatePath: taskdef.json AppSpecTemplatePath: appspec.yaml TaskDefinitionTemplateArtifact: SourceArtifact OutputArtifacts: [] InputArtifacts: - Name: SourceArtifact - Name: MyImage Region: us-west-2 Namespace: DeployVariables
JSON
{ "Name": "Deploy", "Actions": [ { "Name": "Deploy", "ActionTypeId": { "Category": "Deploy", "Owner": "AWS", "Provider": "CodeDeployToECS", "Version": "1" }, "RunOrder": 1, "Configuration": { "AppSpecTemplateArtifact": "SourceArtifact", "ApplicationName": "ecs-cd-application", "DeploymentGroupName": "ecs-deployment-group", "Image1ArtifactName": "MyImage", "Image1ContainerName": "IMAGE1_NAME", "TaskDefinitionTemplatePath": "taskdef.json", "AppSpecTemplatePath": "appspec.yaml", "TaskDefinitionTemplateArtifact": "SourceArtifact" }, "OutputArtifacts": [], "InputArtifacts": [ { "Name": "SourceArtifact" }, { "Name": "MyImage" } ], "Region": "us-west-2", "Namespace": "DeployVariables" } ] }

Los recursos relacionados siguientes pueden serle de ayuda cuando trabaje con esta acción.

  • Tutorial: Creación de una canalización con una fuente de Amazon ECR y de ECS a su implementación CodeDeploy — Este tutorial le explica cómo crear los recursos CodeDeploy y los recursos de Amazon ECS que necesita para una implementación azul/verde. El tutorial muestra cómo insertar una imagen de Docker en Amazon ECR y cómo crear una definición de tarea de Amazon ECS que incluya el nombre de la imagen de Docker, el nombre del contenedor, el nombre del servicio de Amazon ECS y la configuración del equilibrador de carga. A continuación, el tutorial explica cómo crear el AppSpec archivo y la canalización de la implementación.

    nota

    Este tema y el tutorial describen la acción CodeDeploy azul/verde de /ECS para. CodePipeline Para obtener información sobre las acciones estándar de ECS CodePipeline, consulte el tutorial: Implementación continua con. CodePipeline

  • AWS CodeDeploy Guía del usuario: para obtener información sobre cómo utilizar el balanceador de carga, el agente de escucha de producción, los grupos objetivo y la aplicación Amazon ECS en una implementación azul/verde, consulte el Tutorial: Implementación de un servicio Amazon ECS. Esta información de referencia de la Guía del AWS CodeDeploy usuario proporciona una descripción general de las implementaciones azul/verde con Amazon ECS y. AWS CodeDeploy

  • Guía para desarrolladores de Amazon Elastic Container Service: para obtener información sobre cómo trabajar con imágenes y contenedores de Docker, servicios y clústeres de ECS y conjuntos de tareas de ECS, consulte ¿Qué es Amazon ECS?