¿Qué es CodeDeploy? - AWS CodeDeploy

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.

¿Qué es CodeDeploy?

CodeDeploy es un servicio de implementación que automatiza las implementaciones de aplicaciones en instancias de Amazon EC2, instancias locales, funciones Lambda sin servidor o servicios de Amazon ECS.

Puede implementar una variedad de contenidos de aplicación prácticamente ilimitada, entre las que se incluyen:

  • Code

  • Funciones AWS Lambda sin servidor

  • Archivos de configuración y web

  • Ejecutables

  • Paquetes

  • Scripts

  • Archivos multimedia

CodeDeploy puede implementar contenido de aplicaciones que se ejecute en un servidor y se almacene en buckets, GitHub repositorios o repositorios de Bitbucket de Amazon S3. CodeDeploy también puede implementar una función Lambda sin servidor. No es necesario hacer cambios en el código existente para poder utilizar CodeDeploy.

CodeDeploy le facilita:

  • Lanzar rápidamente nuevas características.

  • Actualizar las versiones de las funciones de AWS Lambda.

  • Evitar tiempos de inactividad durante la implementación de las aplicaciones.

  • Gestionar el complejo proceso de actualización de las aplicaciones, evitando muchos de los riesgos asociados a las implementaciones manuales, que son susceptibles a errores.

El servicio se adapta a su infraestructura, por lo que puede implementar fácilmente en una sola instancia o en miles de ellas.

CodeDeploy funciona con varios sistemas para la gestión de la configuración, el control del código fuente, la integración continua, la entrega continua y el despliegue continuo. Para obtener más información, consulte Integraciones de productos.

La CodeDeploy consola también proporciona una forma de buscar rápidamente sus recursos, como repositorios, proyectos de creación, aplicaciones de implementación y canalizaciones. Elija Go to resource (Ir a recurso) o pulse la tecla / y, a continuación, escriba el nombre del recurso. Se muestran todas las coincidencias en la lista. En las búsquedas, no se distingue entre mayúsculas y minúsculas. Solo puede ver los recursos para los que tiene permiso. Para obtener más información, consulte Administración de identidades y accesos para AWS CodeDeploy.

Ventajas de AWS CodeDeploy

CodeDeploy ofrece las siguientes ventajas:

  • Aplicaciones de servidor, sin servidor y de contenedor. CodeDeployle permite implementar tanto aplicaciones tradicionales en servidores como aplicaciones que implementan una versión con AWS Lambda funciones sin servidor o una aplicación de Amazon ECS.

  • Implementaciones automatizadas. CodeDeploy automatiza completamente las implementaciones de sus aplicaciones en sus entornos de desarrollo, pruebas y producción. CodeDeployescala con su infraestructura para que pueda implementarlas en una o en miles de instancias.

  • Minimizar el tiempo de inactividad. Si su aplicación utiliza la plataforma informática local EC2, CodeDeploy ayuda a maximizar la disponibilidad de la aplicación. Durante una implementación in situ, CodeDeploy realiza una actualización progresiva en todas las instancias de Amazon EC2. Es posible especificar el número de instancias que se desactivan a la vez para efectuar las actualizaciones. Durante una implementación blue/green, la última revisión de la aplicación se instala en las instancias de sustitución. El tráfico se desvía a estas instancias en el momento que desee, bien inmediatamente o cuando haya terminado de probar el nuevo entorno. En ambos tipos de implementación, CodeDeploy supervisa el estado de la aplicación de acuerdo con las reglas que configure.

  • Detención y reversión. En caso de que haya errores, puede detener y revertir la implementación de forma automática o manual.

  • Control centralizado. Puede lanzar sus implementaciones y realizar un seguimiento del estado de las mismas a través de la CodeDeploy consola o del. AWS CLI Recibirá un informe en el que se indica cuándo se implementó cada revisión de la aplicación y en qué instancias de Amazon EC2.

  • Fácil de adoptar. CodeDeploy es independiente de la plataforma y funciona con cualquier aplicación. Puedes reutilizar fácilmente tu código de configuración. CodeDeploy también se puede integrar con su proceso de lanzamiento de software o con su cadena de herramientas de entrega continua.

  • Implementaciones simultáneas. Si tiene más de una aplicación que utiliza la plataforma informática local EC2, CodeDeploy puede implementarlas simultáneamente en el mismo conjunto de instancias.

Descripción general de las plataformas informáticas CodeDeploy

CodeDeploy puede implementar aplicaciones en tres plataformas informáticas:

  • EC2/on-premise: describe instancias de servidores físicos que pueden ser instancias en la nube de Amazon EC2, servidores locales o ambos. Las aplicaciones creadas con la plataforma informática local EC2/pueden estar compuestas por archivos ejecutables, archivos de configuración, imágenes y mucho más.

    Las implementaciones que utilizan la plataforma informática local de EC2/gestionan la forma en que el tráfico se dirige a las instancias mediante una implementación local o de tipo azul/verde. Para obtener más información, consulte Descripción general de los tipos de CodeDeploy implementación.

  • AWSLambda: se usa para implementar aplicaciones que constan de una versión actualizada de una función Lambda. AWS Lambdaadministra la función Lambda en un entorno informático sin servidor compuesto por una estructura informática de alta disponibilidad. AWS Lambda se encarga de realizar toda la administración de los recursos de computación. Para obtener más información, consulte Computación y aplicaciones sin servidor. Para obtener más información acerca de AWS Lambda las funciones Lambda, consulte. AWS Lambda

    Puede administrar la forma en que el tráfico se desplaza a las versiones actualizadas de la función Lambda durante una implementación eligiendo una configuración canaria, lineal o all-at-once lineal.

  • Amazon ECS: se utiliza para implementar una aplicación contenerizada de Amazon ECS como un conjunto de tareas. CodeDeploy realiza una implementación azul/verde mediante la instalación de una versión actualizada de la aplicación como un nuevo conjunto de tareas de reemplazo. CodeDeploy redirige el tráfico de producción del conjunto de tareas de la aplicación original al conjunto de tareas de reemplazo. Cuando la implementación se realiza correctamente, se termina el conjunto de tareas original. Para obtener más información sobre Amazon ECS, consulte Amazon Elastic Container Service.

    Puede administrar la forma en que el tráfico se desplaza al conjunto de tareas actualizado durante una implementación eligiendo una all-at-once configuración canaria, lineal o lineal.

    nota

    Las implementaciones azul/verde de Amazon ECS son compatibles con y. CodeDeploy AWS CloudFormation Los detalles de estas implementaciones se describen en secciones posteriores.

En la siguiente tabla se describe cómo se utilizan CodeDeploy los componentes con cada plataforma informática. Para obtener más información, consulte:

CodeDeploy componente EC2/On-Premises AWS Lambda Amazon ECS
Grupo de implementaciones Implementa una revisión en un conjunto de instancias. Implementa una nueva versión de una función Lambda sin servidor en una infraestructura informática de alta disponibilidad. Especifica el servicio Amazon ECS con la aplicación en contenedores que se debe implementar como conjunto de tareas, un detector de producción y de prueba opcional que se utiliza para enviar el tráfico a la aplicación implementada, cuándo redirigir el tráfico y finalizar el conjunto de tareas original de la aplicación implementada, y los ajustes opcionales de activación, alarma y reversión.
Implementación Implementa una nueva revisión que consta de una aplicación y un archivo. AppSpec AppSpec Especifica cómo implementar la aplicación en las instancias de un grupo de implementación. Cambia el tráfico de producción de una versión de una función Lambda a una nueva versión de la misma función. El AppSpec archivo especifica qué versión de la función Lambda se debe implementar. Implementa una versión actualizada de una aplicación contenerizada de Amazon ECS como un nuevo conjunto de tareas de reemplazo. CodeDeploy redirige el tráfico de producción del conjunto de tareas con la versión original al nuevo conjunto de tareas de reemplazo con la versión actualizada. Cuando se completa la implementación, se termina el conjunto de tareas original.
Configuración de implementación Configuración que determina la velocidad de implementación y el número mínimo de instancias que deben estar en buen estado en cualquier momento durante una implementación. Configuración que determina cómo se desplaza el tráfico a las versiones actualizadas de la función Lambda. Configuraciones que determinan cómo se transfiere el tráfico al conjunto de tareas actualizado de Amazon ECS.
Revisión Combinación de un AppSpec archivo y archivos de aplicación, como ejecutables, archivos de configuración, etc. AppSpec Archivo que especifica qué función de Lambda se debe implementar y qué funciones de Lambda pueden ejecutar pruebas de validación durante los ganchos de eventos del ciclo de vida de la implementación.

Un AppSpec archivo que especifica:

  • La definición de tareas de Amazon ECS para el servicio de Amazon ECS con la aplicación contenerizada que se va a implementar.

  • El contenedor en el que se implementa la aplicación actualizada.

  • Un puerto para el contenedor donde se redirige el tráfico de producción.

  • Parámetros de configuración de red opcionales y funciones Lambda que pueden ejecutar pruebas de validación durante los enganches de eventos del ciclo de vida de la implementación.

Aplicación Colección de grupos de implementaciones y revisiones. Una aplicación local de EC2 utiliza la plataforma de procesamiento local de EC2. Colección de grupos de implementaciones y revisiones. Una aplicación utilizada para una AWS Lambda implementación usa la plataforma de procesamiento AWS Lambda sin servidor. Colección de grupos de implementaciones y revisiones. Una aplicación utilizada para una implementación de Amazon ECS utiliza la plataforma informática Amazon ECS.

Descripción general de los tipos de CodeDeploy implementación

CodeDeploy ofrece dos opciones de tipos de despliegue:

  • Implementación in situ: se detiene la aplicación de cada instancia del grupo de implementación, se instala la última revisión de la aplicación y se inicia y valida la nueva versión de la aplicación. Puede usar un equilibrador de carga para anular el registro de cada instancia durante su implementación y, a continuación, restablecerla al servicio una vez finalizada la implementación. Solo las implementaciones que utilizan la plataforma informática local de EC2 pueden utilizar implementaciones locales. Para obtener más información acerca de las implementaciones in-place, consulte Descripción general de una implementación local.

    nota

    AWSLas implementaciones de Lambda y Amazon ECS no pueden usar un tipo de implementación local.

  • Implementación azul/verde: el comportamiento de la implementación depende de la plataforma informática que utilice:

    • Azul/verde en una plataforma informática local de EC2: las instancias de un grupo de implementación (el entorno original) se sustituyen por un conjunto diferente de instancias (el entorno de reemplazo) siguiendo estos pasos:

      • Las instancias se aprovisionan para el entorno de reemplazo.

      • La última revisión de la aplicación se instala en las instancias de reemplazo.

      • Existe un tiempo de espera opcional para actividades como las pruebas de aplicaciones y la verificación del sistema.

      • Las instancias del entorno de reemplazo se registran en uno o más balanceadores de carga de Elastic Load Balancing, lo que provoca que el tráfico se redirija a ellos. Las instancias del entorno original se anulan del registro y se pueden cerrar o mantener en ejecución para otros usos.

      nota

      Si utiliza una plataforma informática EC2/local, tenga en cuenta que las implementaciones azul/verde solo funcionan con instancias de Amazon EC2.

    • Azul/verde en una plataforma informática AWS Lambda o Amazon ECS : el tráfico se desplaza en incrementos según una configuración canaria, lineal o de implementación. all-at-once

    • Implementaciones blue/green (azul/verde) a través de AWS CloudFormation: el tráfico se desplaza de los recursos actuales a los recursos actualizados como parte de una actualización de pila de AWS CloudFormation. Actualmente, solo se admiten implementaciones de ECS blue/green (azul/verde).

    Para obtener más información acerca de las implementaciones blue/green, consulte Descripción general de una implementación azul/verde.

nota

Con el CodeDeploy agente, puede realizar una implementación en una instancia en la que haya iniciado sesión sin necesidad de una aplicación, un grupo de implementación o incluso una cuenta. AWS Para obtener información, consulte Utilice el CodeDeploy agente para validar un paquete de despliegue en una máquina local.

Descripción general de una implementación local

nota

AWSLas implementaciones de Lambda y Amazon ECS no pueden usar un tipo de implementación local.

Así es como funciona una implementación local:

  1. Primero, crea contenido desplegable en su máquina de desarrollo local o entorno similar y, a continuación, agrega un archivo de especificaciones de la aplicación (AppSpec archivo). El AppSpec archivo es exclusivo de. CodeDeploy Define las acciones de despliegue que CodeDeploy desea ejecutar. Agrupa el contenido desplegable y el AppSpec archivo en un archivo y, a continuación, lo carga en un depósito o GitHub repositorio de Amazon S3. Este archivo de almacenamiento se denomina revisión de la aplicación (o simplemente revisión).

  2. A continuación, debe proporcionar CodeDeploy información sobre su implementación, como el GitHub depósito o repositorio de Amazon S3 desde el que extraer la revisión y en qué conjunto de instancias de Amazon EC2 se debe implementar su contenido. CodeDeploy llama grupo de implementación a un conjunto de instancias de Amazon EC2. Un grupo de despliegues contiene instancias de Amazon EC2 etiquetadas individualmente, instancias de Amazon EC2 en grupos de Auto Scaling de Amazon EC2 o ambas.

    Cada vez que cargue correctamente una nueva revisión de una aplicación que desee implementar en el grupo de implementaciones, el paquete correspondiente se marca como revisión de destino para ese grupo de implementaciones. En otras palabras, la revisión de la aplicación que debe implementarse en cada momento es la revisión de destino. También es la revisión que se extrae para las implementaciones automáticas.

  3. A continuación, el CodeDeploy agente de cada instancia sondea CodeDeploy para determinar qué y cuándo extraer del GitHub depósito o repositorio de Amazon S3 especificado.

  4. Por último, el CodeDeploy agente de cada instancia extrae la revisión de destino del GitHub depósito o repositorio de Amazon S3 y, siguiendo las instrucciones del AppSpec archivo, despliega el contenido en la instancia.

CodeDeploy mantiene un registro de las implementaciones para que pueda obtener el estado de las mismas, los parámetros de configuración de las mismas, el estado de las instancias, etc.

Descripción general de una implementación azul/verde

Se utiliza una implementación azul/verde para actualizar las aplicaciones y, al mismo tiempo, minimizar las interrupciones causadas por los cambios de una nueva versión de la aplicación. CodeDeploy aprovisiona la nueva versión de la aplicación junto con la versión anterior antes de redirigir el tráfico de producción.

  • AWSLambda: el tráfico pasa de una versión de una función Lambda a una nueva versión de la misma función Lambda.

  • Amazon ECS: el tráfico pasa de un conjunto de tareas del servicio de Amazon ECS a un conjunto de tareas actualizado y de reemplazo del mismo servicio de Amazon ECS.

  • EC2/local: el tráfico pasa de un conjunto de instancias del entorno original a un conjunto de instancias de reemplazo.

Todas las implementaciones de AWS Lambda y Amazon ECS son de color azul/verde. Una implementación de EC2/local puede ser in situ o azul/verde. Una implementación blue/green ofrece diversas ventajas con respecto a la implementación in situ:

  • Puede instalar y probar una aplicación en el nuevo entorno de sustitución e implementarla en producción con solo redirigir el tráfico.

  • Si utiliza la plataforma informática local de EC2, volver a la versión más reciente de una aplicación es más rápido y fiable. Esto se debe a que el tráfico puede volver a dirigirse a las instancias originales, siempre que no se hayan terminado. Con una implementación in situ, las versiones deben revertirse a la versión anterior de la aplicación.

  • Si utiliza la plataforma informática local de EC2, se aprovisionan nuevas instancias para una implementación azul/verde y reflejan la mayoría de las configuraciones de servidor. up-to-date Esto ayuda a evitar la clase de problemas que a veces aparecen en las instancias que llevan mucho tiempo en ejecución.

  • Si utiliza la plataforma de procesamiento AWS Lambda, usted controla cómo se transfiere el tráfico de la versión original de la función AWS Lambda a la nueva versión de la función AWS Lambda.

  • Si utiliza la plataforma informática Amazon ECS, usted controla cómo se transfiere el tráfico del conjunto de tareas original al nuevo conjunto de tareas.

Una implementación blue/green (azul/verde) con AWS CloudFormation puede utilizar uno de los siguientes métodos:

  • plantillas de AWS CloudFormation para implementaciones: cuando configura implementaciones con plantillas de AWS CloudFormation, las implementaciones se activan mediante actualizaciones de AWS CloudFormation. Cuando cambia un recurso y carga un cambio de plantilla, una actualización de pila en AWS CloudFormation inicia la nueva implementación. Para obtener una lista de los recursos que puede utilizar en las plantillas de AWS CloudFormation, consulte AWS CloudFormationplantillas de CodeDeploy referencia.

  • Implementaciones blue/green (azul/verde) a través de AWS CloudFormation: Puede utilizar AWS CloudFormation para administrar sus implementaciones blue/green (azul/verde) a través de actualizaciones de pila. Defina los recursos blue y green (azules y verdes), además de especificar la configuración de enrutamiento y estabilización del tráfico dentro de la plantilla de pila. A continuación, si actualiza los recursos seleccionados durante una actualización de pila, AWS CloudFormation genera todos los recursos green (verdes) necesarios, desvía el tráfico en función de los parámetros de direccionamiento del tráfico especificados y elimina los recursos blue (azules). Para obtener más información, consulte Automatizar las implementaciones azul/verde de Amazon ECS CodeDeploy mediante el uso de la Guía del AWS CloudFormation AWS CloudFormation usuario.

    nota

    Solo se admite en las implementaciones azul/verde de Amazon ECS.

La forma de configurar una implementación blue/green depende la plataforma de computación que utilice la implementación.

Implementación azul/verde en una plataforma informática o Amazon ECS AWS Lambda

Si utiliza la AWS Lambda plataforma informática Amazon ECS, debe indicar cómo se desplaza el tráfico de la AWS Lambda función original o del conjunto de tareas de Amazon ECS a la nueva función o conjunto de tareas. Para indicar cómo se desplaza el tráfico, debe especificar una de las siguientes configuraciones de implementación:

  • canario

  • lineal

  • all-at-once

Para obtener información sobre cómo se desplaza el tráfico en configuraciones canarias, lineales o de all-at-once despliegue, consulteConfiguración de implementación.

Para obtener más información sobre la configuración de despliegue de Lambda, consulte. Configuraciones de implementación en una plataforma de informática de AWS Lambda

Para obtener más información sobre la configuración de implementación de Amazon ECS, consulteConfiguraciones de implementación en una plataforma de informática de Amazon ECS.

Despliegue azul/verde en una plataforma informática local de EC2

nota

Debe usar instancias de Amazon EC2 para las implementaciones azul/verde en la plataforma informática EC2/local. No se admiten instancias on-premises para el tipo de implementación blue/green.

Si utiliza la plataforma informática EC2/local, se aplica lo siguiente:

Debe tener una o más instancias de Amazon EC2 con etiquetas identificativas de Amazon EC2 o un grupo de Auto Scaling de Amazon EC2. Las instancias también deben cumplir los requisitos siguientes:

  • Cada instancia de Amazon EC2 debe tener adjunto el perfil de instancia de IAM correcto.

  • El CodeDeploy agente debe estar instalado y en ejecución en cada instancia.

nota

Normalmente también hay una revisión de la aplicación ejecutándose en las instancias del entorno original, pero esto no es un requisito para una implementación blue/green.

Al crear un grupo de implementaciones para utilizarlo en implementaciones blue/green, puede elegir el modo de especificar el entorno de sustitución:

Copie un grupo de Auto Scaling de Amazon EC2 existente: durante la implementación azul/verde, CodeDeploy crea las instancias para su entorno de reemplazo durante la implementación. Con esta opción, CodeDeploy utiliza el grupo de Auto Scaling de Amazon EC2 que especifique como plantilla para el entorno de reemplazo, que incluye el mismo número de instancias en ejecución y muchas otras opciones de configuración.

Elija las instancias manualmente: puede especificar las instancias que se contarán como sustitutas mediante etiquetas de instancias de Amazon EC2, nombres de grupos de Amazon EC2 Auto Scaling o ambos. Si elige esta opción, no tendrá que especificar las instancias del entorno de sustitución hasta el momento de crear una implementación.

Así es como funciona:

  1. Ya tiene instancias o un grupo de Auto Scaling de Amazon EC2 que sirve como entorno original. La primera vez que ejecute una implementación blue/green, normalmente usará instancias que ya se habrán utilizado en una implementación in situ.

  2. En una CodeDeploy aplicación existente, debe crear un grupo de despliegues azul/verde en el que, además de las opciones necesarias para una implementación local, especifique lo siguiente:

    • El balanceador o balanceadores de carga que redirigen el tráfico desde su entorno original al entorno de reemplazo durante el proceso de implementación azul/verde.

    • Si el tráfico debe dirigirse al entorno de sustitución de inmediato o esperar a que lo redirija manualmente.

    • La velocidad con la que se dirige el tráfico a las instancias de sustitución.

    • Si las instancias sustituidas deben terminarse o mantenerse en ejecución.

  3. Ahora creará una implementación para este grupo de implementaciones en la que ocurrirá lo siguiente:

    1. Si opta por copiar un grupo de Auto Scaling de Amazon EC2, las instancias se aprovisionan para el entorno de reemplazo.

    2. La revisión de aplicación especificada para la implementación se instala en las instancias de sustitución.

    3. Si ha especificado un tiempo de espera en la configuración del grupo de implementaciones, la implementación se pausa. Este es el momento en el que puede realizar pruebas y verificaciones en el entorno de sustitución. Si no redirige manualmente el tráfico antes de que finalice el periodo de espera, la implementación se detiene.

    4. Las instancias del entorno de reemplazo se registran en un balanceador de cargas de Elastic Load Balancing y el tráfico comienza a enrutarse hacia ellas.

    5. Las instancias del entorno original se borran del registro y se terminan o se mantienen en ejecución, según lo que haya especificado para el grupo de implementaciones.

Implementación azul/verde a través de AWS CloudFormation

Puede gestionar las implementaciones CodeDeploy azules y verdes modelando sus recursos con una plantilla. AWS CloudFormation

Cuando modela los recursos blue/green (azul/verde) utilizando una plantilla de AWS CloudFormation, crea una actualización de pila en AWS CloudFormation que actualiza el conjunto de tareas. El tráfico de producción pasa del conjunto de tareas original del servicio a un conjunto de tareas de sustitución o bien todo a la vez, con implementaciones lineales y tiempos de procesamiento, o bien con implementaciones de valores controlados. La actualización de la pila inicia una implementación en CodeDeploy. Puede ver el estado y el historial de la implementación en CodeDeploy ella, pero no puede crear ni administrar CodeDeploy recursos fuera de la plantilla. AWS CloudFormation

nota

En el caso de las implementaciones en azul o verdeAWS CloudFormation, no se crea una CodeDeploy aplicación o un grupo de implementaciones.

Este método solo es compatible con las implementaciones azul/verde de Amazon ECS. Para obtener más información acerca de las implementaciones blue/green (azul/verde) a través de AWS CloudFormation, consulte Cree una implementación azul/verde de Amazon ECS mediante AWS CloudFormation.

Esperamos tener noticias suyas

Agradecemos sus comentarios. Para ponerse en contacto con nosotros, visite el foro. CodeDeploy

Temas