Preguntas frecuentes sobre AWS CodeDeploy

Aspectos generales

AWS CodeDeploy es un servicio que automatiza las implementaciones de código en cualquier instancia, incluidas las instancias de Amazon EC2 y aquellas ejecutadas localmente. AWS CodeDeploy facilita el lanzamiento rápido de nuevas características, ayuda a evitar tiempos de inactividad durante la implementación y administra la compleja actualización de las aplicaciones. Puede usar AWS CodeDeploy para automatizar las implementaciones, lo que elimina la necesidad de realizar operaciones manuales propensas a errores. Además, el servicio se escala con su infraestructura, por lo que se puede implementar fácilmente en una instancia o en miles.

AWS CodeDeploy se diseñó para desarrolladores y administradores que necesitan implementar aplicaciones en cualquier instancia, incluidas las instancias de Amazon EC2 y aquellas que se ejecutan localmente. Se trata de un servicio flexible que puede utilizar cualquier usuario que desee actualizar software o ejecutar scripts en las instancias.

AWS CodeDeploy se puede usar para implementar cualquier tipo de aplicación. Para usar AWS CodeDeploy, debe especificar los archivos que desea copiar y las secuencias de comandos que desea ejecutar en cada instancia durante la implementación. AWS CodeDeploy se puede usar con cualquier arquitectura y lenguaje de programación, por lo que puede usar scripts para cualquier lógica de implementación personalizada.

AWS CodeDeploy admite una amplia variedad de sistemas operativos. AWS CodeDeploy ofrece agentes que se han probado en Amazon Linux, Red Hat Enterprise Linux, Ubuntu Server y Microsoft Windows Server. Si desea utilizar otros sistemas operativos, el agente de AWS CodeDeploy se encuentra disponible aquí como software de código abierto. Para obtener más información sobre la compatibilidad con sistemas operativos, consulte la documentación de AWS CodeDeploy.

Sí. AWS CodeDeploy funciona con una variedad de sistemas de administración de configuración, con sistemas de implementación e integración continuas y con sistemas de control de código fuente. Para obtener más información, consulte la página sobre las integraciones de productos.

AWS CodeDeploy es un servicio de bloques de compilación cuyo objetivo principal consiste en ayudar a los desarrolladores a implementar y actualizar software en cualquier instancia, incluidas las instancias de Amazon EC2 y aquellas que se ejecutan localmente. AWS Elastic Beanstalk y AWS OpsWorks son soluciones integrales de administración de aplicaciones.

Sí. AWS CodeDeploy admite cualquier instancia que pueda instalar el agente de CodeDeploy y conectarse a los puntos de enlace públicos de AWS.

Conceptos

Una aplicación es una recopilación de software y configuración que se implementa en un grupo de instancias. Normalmente, las instancias del grupo utilizan el mismo software. Por ejemplo, si dispone de un sistema distribuido grande, la capa web probablemente constituya una aplicación y la capa de datos otra aplicación.

Una revisión es una versión específica de contenido desplegable, como código fuente, artefactos compilados posteriormente, páginas web, archivos ejecutables y scripts de despliegue, junto con el archivo de AppSpec. El agente de AWS CodeDeploy puede obtener acceso a una revisión de GitHub o a un bucket de Amazon S3.

Un grupo de implementaciones representa la entidad de AWS CodeDeploy para agrupar instancias EC2 o funciones AWS Lambda en una implementación de CodeDeploy. Para implementaciones EC2, se trata de un conjunto de instancias asociadas con una aplicación que puede destinar a una implementación. Puede añadir instancias a un grupo de implementaciones mediante la especificación de una etiqueta, un nombre de grupo de Auto Scaling o ambos. En una implementación de AWS Lambda, un grupo de implementaciones define un conjunto de configuraciones de AWS CodeDeploy para una futura implementación de Lambda sin servidor en el grupo, como alarmas y restauraciones.

Puede definir varios grupos de implementaciones para una aplicación, como el almacenamiento provisional y la producción. Para obtener información sobre las etiquetas, consulte Cómo usar las etiquetas de Amazon EC2 en la consola. Para obtener más información sobre la implementación de los grupos de Auto Scaling, consulte Integración de Auto Scaling.

Una configuración de una implementación especifica cuál debería ser el comportamiento de la implementación, incluida la manera en la que se gestionarán los errores de implementación, en un grupo de implementaciones. Puede usar la configuración de una implementación para realizar implementaciones sin tiempo de inactividad en grupos de implementaciones de varias instancias. Por ejemplo, si la aplicación necesita al menos el 50% de las instancias de un grupo de implementaciones para funcionar y abastecer el tráfico, puede especificarlo en la configuración de la implementación, a fin de que esta no provoque ningún tiempo de inactividad. Si no se asocia ninguna configuración de la implementación con la implementación o con el grupo de implementaciones, AWS CodeDeploy realizará la implementación de manera predeterminada en una instancia cada vez.  Para obtener más información sobre la configuración del despliegue, consulte el Estado de la instancia.

Hay tres parámetros que debe especificar para una implementación:

  1. Revisión: especifica lo que hay que implementar.
  2. Grupo de implementaciones – Especifica dónde realizar la implementación.
  3. Configuración de la implementación – Un parámetro opcional que especifica cómo realizar la implementación.

Un archivo de AppSpec es un archivo de configuración que especifica los archivos que se van a copiar y las secuencias de comandos que se ejecutarán. El archivo de AppSpec utiliza el formato YAML y debe incluirlo en el directorio raíz de la revisión. El agente de AWS CodeDeploy usa el archivo de AppSpec y se compone de dos secciones. La sección de archivos especifica los archivos de origen de la revisión que se van a copiar y la carpeta de destino en cada instancia. La sección de enlaces especifica la ubicación (como rutas relativas que parten de la raíz del paquete de revisiones) de las secuencias de comandos que se ejecutarán durante cada fase de la implementación. Cada fase de una implementación constituye un evento del ciclo de vida de la implementación. A continuación se muestra un archivo de AppSpec de muestra. Para obtener más información sobre un archivo de AppSpec, incluidas todas las opciones que se pueden especificar, consulte la referencia del archivo de AppSpec.

so: linux

archivos: 

# Puede especificar una o varias asignaciones en la sección de archivos.

  – origen: /

    destino: /var/www/html/WordPress

enlaces:

 # Las secciones de enlaces de ciclo de vida permiten especificar los scripts de despliegue.

ApplicationStop: 

# Paso 1: detenga Apache y MySQL si están en ejecución.

    – ubicación: helper_scripts/stop_server.sh

BeforeInstall: 

# Paso 2: instale Apache y MySQL.

# Puede especificar uno o varios scripts por cada evento del ciclo de vida del despliegue.

    – ubicación: deploy_hooks/puppet-apply-apache.sh

    – ubicación: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Paso 3: defina los permisos.

    – ubicación: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Paso 4: inicie el servidor.

    – ubicación: helper_scripts/start_server.sh

      timeout: 30

      runas: root

Una implementación consta de un conjunto de fases predefinidas denominadas eventos del ciclo de vida de la implementación. Un evento del ciclo de vida de la implementación le brinda la oportunidad de ejecutar código como parte de la implementación. En la siguiente tabla se enumeran los diferentes eventos del ciclo de vida de la implementación que se soportan actualmente, en su orden de ejecución, junto con ejemplos de cuándo utilizarlos.

Evento del ciclo de vida del despliegue:

  • ApplicationStop
    • Se trata del primer evento del ciclo de vida de la implementación, que se produce incluso antes de que se haya descargado la revisión. El archivo de AppSpec y las secuencias de comando utilizadas para este evento del ciclo de vida de la implementación pertenecen a la última revisión que se haya implementado correctamente.  

      Puede usar el evento del ciclo de vida de la implementación “Detención de la aplicación” si desea detener con facilidad la aplicación o quitar los paquetes instalados actualmente en la fase de preparación de una implementación.

  • Paquete de descarga

    • Durante este evento del ciclo de vida de la implementación, el agente copia los archivos de la revisión en una ubicación temporal en la instancia. Este evento del ciclo de vida de la implementación se reserva para el agente y no se puede usar para ejecutar los scripts de usuario.

  • Antes de la instalación

    • Puede usar el evento del ciclo de vida de la implementación “Antes de la instalación” para preinstalar tareas como el descifrado de archivos y la creación de una backup de la versión actual.

  • Instalación

    • Durante este evento del ciclo de vida de la implementación, el agente copia en la carpeta de destino definitiva los archivos de la revisión que se encuentran en la ubicación temporal. Este evento del ciclo de vida de la implementación se reserva para el agente y no se puede usar para ejecutar los scripts de usuario.

  • Después de la instalación

    • Puede usar el evento del ciclo de vida de la implementación∙“Después de la instalación” para tareas como la configuración de la aplicación o la modificación de los permisos para los archivos.

  • ApplicationStart

    • Por lo general, el evento del ciclo de vida de la implementación Inicio de la aplicación se usa para reiniciar los servicios detenidos durante el evento Detención de la aplicación.

  • Validación del servicio

    • La Validación del servicio es el último evento del ciclo de vida de la implementación, que ofrece la oportunidad de verificar que la implementación se ha completado correctamente.

 

 

Introducción

Puede iniciar sesión en la consola de administración de AWS y comenzar a utilizar AWS CodeDeploy. Si busca información general rápida sobre el servicio, consulte la sección Introducción, que incluye un tutorial paso a paso.

Uso de AWS CodeDeploy

La instancia de Amazon EC2 debe estar asociada con un perfil de instancia de IAM y debe ejecutarse en un sistema operativo compatible. Para obtener más información, consulte la sección acerca de cómo usar una instancia de Amazon EC2 existente.

En el diagrama siguiente se indican los pasos normales de una implementación. La creación de una aplicación y un grupo de despliegue (véase la sección Conceptos para acceder a una explicación de estos términos) son tareas de configuración normales que se realizan una sola vez por aplicación. Las acciones recurrentes consisten en cargar una revisión e implementarla. Para obtener una explicación detallada, incluidas instrucciones paso a paso de cada una de estas tareas, consulte la sección Despliegues.

No tiene que hacer ningún cambio en el código. Solo tiene que añadir un archivo de configuración (es decir, un archivo de AppSpec) al directorio raíz del paquete de la revisión donde se especifiquen los archivos que se van a copiar y los scripts que se van a ejecutar.

Si utiliza GitHub, puede implementar una revisión en formato .zip, .tar o .tar.gz desde el repositorio directamente en las instancias. Para otros sistemas de control de recursos, puede agrupar y cargar la revisión en un bucket de Amazon S3 con formato .zip, .tar o .tar.gz y especificar la ubicación de Amazon S3 al realizar una implementación. Si la aplicación necesita un paso de compilación, asegúrese de que el repositorio GitHub o el bucket de Amazon S3 contengan los artefactos posteriores a la compilación. Para obtener más información sobre el uso de GitHub con AWS CodeDeploy, consulte la página sobre las integraciones de productos. Para obtener más información sobre cómo usar Amazon S3 para almacenar revisiones, consulte la sección sobre el lanzamiento de una revisión.

Puede invocar la herramienta de administración de configuración desde el enlace del evento del ciclo de vida de la implementación del archivo de AppSpec. Por ejemplo, si tiene una receta de Chef que desea ejecutar como parte de una implementación, debe especificarlo en el enlace del evento del ciclo de vida de la implementación en el archivo de AppSpec. Asimismo, puede usar el sistema de administración de la configuración para instalar el agente de AWS CodeDeploy en las instancias. Para obtener muestras que ilustran cómo usar AWS CodeDeploy con sistemas de administración de configuración, como Chef, Puppet, Ansible y Saltstack, consulte la página sobre integraciones de productos.

Sí. Puede integrar AWS CodeDeploy con los sistemas de implementación e integración continuas si llama a las API públicas mediante la interfaz de línea de comandos (CLI) o los SDK de AWS. Puede encontrar muestras e integraciones predefinidas en la página sobre integraciones de productos.

Implemente la última revisión en el grupo de implementaciones de las instancias que acaba de añadir a fin de obtener acceso a la aplicación. Salvo en el caso de las instancias de Amazon EC2 lanzadas como parte de un grupo de Auto Scaling, AWS CodeDeploy no implementa automáticamente la última revisión en las instancias añadidas recientemente.

Puede asociar un grupo de Auto Scaling con un grupo de implementaciones para asegurarse de que las instancias lanzadas recientemente siempre utilicen la última versión de la aplicación. Cada vez que se lance una instancia nueva de Amazon EC2 para ese grupo de Auto Scaling, siempre se le asignará primero el estado pendiente y se lanzará una implementación de la última revisión correcta para ese grupo de implementaciones en dicha instancia de Amazon EC2. Si la implementación se realiza correctamente, el estado de la instancia de Amazon EC2 cambia a InService. En cambio, si se produce un error en la implementación, la instancia de Amazon EC2 termina, se lanza una nueva instancia de Amazon EC2 con el estado pendiente y se activa una implementación para la instancia EC2 recién lanzada. Para obtener más información sobre los eventos del ciclo de vida de las instancias del grupo de escalamiento automático, consulte la sección sobre el ciclo de vida del grupo de escalamiento automático.

Puede rastrear el estado de un despliegue mediante la consola de administración de AWS, la interfaz de la línea de comandos de AWS (AWS CLI), los SDK de AWS y las API de AWS CodeDeploy. Puede ver el estado general de un despliegue y profundizar más para ver el estado de cada instancia y el estado de cada evento del ciclo de vida del despliegue de la instancia. También puede consultar las entradas de log correspondientes a cada error, lo que facilita la depuración de los problemas de implementación sin tener que iniciar sesión en la instancia.

Sí. Al detener una implementación en tránsito, el servicio AWS CodeDeploy indicará al agente de cada instancia que deje de ejecutar secuencias de comandos adicionales. Para que la aplicación vuelva a tener un estado consistente, puede volver a implementar la misma revisión, o bien implementar otra distinta.

Para restaurar una aplicación a una revisión anterior, basta con que implemente dicha revisión. AWS CodeDeploy realiza un seguimiento de los archivos copiados para la revisión actual y los elimina antes de iniciar la implementación nueva, por lo que no existe ninguna diferencia entre la reimplementación y la restauración. No obstante, necesita asegurarse de que las revisiones anteriores están disponibles para la restauración.

Sí. Puede usar un bucket de Amazon S3 con control de versiones y especificar el identificador de la versión para identificar una revisión de manera exclusiva.

Para obtener información sobre los límites del servicio, consulte la sección Límites. Para aumentar los límites del servicio, envíe una solicitud a través del Centro de soporte de AWS.

Sí. Para recibir un historial de las llamadas al API de AWS CodeDeploy realizadas en su cuenta, solo tiene que activar AWS CloudTrail en la consola de administración de AWS.

Puede crear notificaciones para los eventos que afectan en sus implementaciones. Las notificaciones aparecerán como notificaciones de Amazon SNS. Cada notificación incluirá un mensaje de estado, así como un enlace a los recursos cuyo evento generó esa notificación. Las notificaciones no tienen un costo adicional, pero puede que se le cobre por otros servicios de AWS que usen las notificaciones, como Amazon SNS. Para saber cómo puede empezar a usar las notificaciones, consulte la guía del usuario de notificaciones. Además, los clientes que usan AWS Chatbot pueden configurar las notificaciones para enviarlas a sus canales de Slack o las salas de chat de Amazon Chime. Para obtener más información, haga clic aquí.

Seguridad

Sí, pero el agente de AWS CodeDeploy instalado en las instancias de Amazon EC2 debe tener la capacidad de obtener acceso a los puntos de enlace públicos del servicio de AWS CodeDeploy y Amazon S3. Para obtener más información, consulte los puntos de enlace de AWS CodeDeploy y los puntos de enlace de Amazon S3.

Sí. AWS CodeDeploy admite permisos a nivel de recursos. Para cada recurso de AWS CodeDeploy, puede especificar a qué usuario concede acceso y para qué acciones. Por ejemplo, puede definir una política de IAM para permitir a un usuario implementar una aplicación determinada, pero solo enumerar revisiones para otras aplicaciones. Por lo tanto, puede impedir que los usuarios realicen cambios accidentales en la aplicación incorrecta. Para obtener más información sobre el uso de IAM con AWS CodeDeploy, consulte la referencia de los permisos de acceso.

Regiones

Consulte Productos y servicios por región para obtener más información sobre la disponibilidad de CodeDeploy por región.

AWS CodeDeploy realiza las implementaciones con los recursos de AWS ubicados en la misma región. Para implementar una aplicación en varias regiones, defínala en las regiones de destino, copie el paquete de la aplicación en un bucket de Amazon S3 en cada región y, a continuación, inicie las implementaciones con la utilización de un despliegue en serie o en paralelo en las regiones.

Facturación

No se aplica ningún cargo adicional por la implementación de código en las instancias de Amazon EC2 mediante el uso de AWS CodeDeploy. Paga 0,02 USD por actualización de instancia local mediante el uso de AWS CodeDeploy. Consulte la página de precios para obtener más detalles.