P: ¿Qué es AWS CodeDeploy?
AWS CodeDeploy es un servicio que automatiza las implementaciones de código en cualquier instancia, incluidas las instancias de Amazon EC2 y aquellas ejecutadas on-premise. 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.

P: ¿Quién debería utilizar AWS CodeDeploy?
AWS CodeDeploy se ha diseñado para desarrolladores y administradores que necesitan implementar aplicaciones en cualquier instancia, incluidas las instancias de Amazon EC2 y aquellas que se ejecutan on-premise. Se trata de un servicio flexible que puede utilizar cualquier usuario que desee actualizar software o ejecutar scripts en las instancias.

P: ¿Qué tipos de aplicaciones se pueden implementar con AWS CodeDeploy?
AWS CodeDeploy se puede usar para implementar cualquier tipo de aplicación. Para usar AWS CodeDeploy, debe especificar los archivos que desea copiar y los scripts 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.

P: ¿Qué sistemas operativos soporta AWS CodeDeploy?
AWS CodeDeploy soporta 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 el soporte para sistemas operativos, consulte la documentación de AWS CodeDeploy.

P: ¿AWS CodeDeploy funcionará con la cadena de herramientas existente?
Sí. AWS CodeDeploy funciona con una variedad de sistemas de administración de la 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.

P: ¿En qué se diferencia AWS CodeDeploy de otros servicios de administración e implementación de AWS, como AWS Elastic Beanstalk y AWS OpsWorks?
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 on-premise. AWS Elastic Beanstalk y AWS OpsWorks son soluciones integrales de administración de aplicaciones.

P: ¿Soporta AWS CodeDeploy las instancias on-premise?
Sí. AWS CodeDeploy soporta cualquier instancia que pueda instalar el agente de CodeDeploy y conectarse a los extremos públicos de AWS.

 

P: ¿Qué es una aplicación?
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.

P: ¿Qué es una revisión?
Una revisión es una versión específica de contenido implementable, como código fuente, elementos compilados posteriormente, páginas web, archivos ejecutables y scripts de implementación, 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.

P: ¿Qué es un grupo de implementaciones?
Un grupo de implementaciones es 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. Puede definir varios grupos de implementaciones para una aplicación, como la puesta en marcha y la producción. Para obtener información sobre las etiquetas, consulte Working with Amazon EC2 Tags in the Console. Para obtener más información sobre la implementación de los grupos de Auto Scaling, consulte la información sobre la integración de Auto Scaling.

P: ¿En qué consiste la configuración de una implementación?
La configuración de una implementación es una restricción que determina cómo progresa una implementación a través de las instancias en un grupo de implementaciones. Puede usar la configuración de una implementación para realizar implementaciones con tiempo de inactividad cero 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 de la implementación, consulte la información sobre el estado de la instancia.

P: ¿Qué parámetros tengo que especificar para una implementación?
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.
P: ¿Qué es un archivo de AppSpec?
Un archivo de AppSpec es un archivo de configuración que especifica los archivos que se van a copiar y los scripts 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 los scripts 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 al archivo de AppSpec.

versión: 0.0

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 del ciclo de vida permiten especificar los scripts de implementación.

Detención de la aplicación: 

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

    – ubicación: helper_scripts/stop_server.sh

Antes de la instalación: 

# Paso 2: instale Apache y MySQL.

# Puede especificar uno o varios scripts por cada evento del ciclo de vida de la implementación.

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

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

 Después de la instalación: 

# Paso 3: defina los permisos.

    – ubicación: deploy_hooks /change_permissions.sh

      tiempo de espera: 30

      ejecutar como: raíz

# Paso 4: inicie el servidor.

    – ubicación: helper_scripts/start_server.sh

      tiempo de espera: 30

      ejecutar como: raíz

P: ¿Cuáles son los eventos del ciclo de vida de la implementación?
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 de la implementación Descripción
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 los scripts utilizados para este evento del ciclo de vida de la implementación pertenecen a la última revisión que se ha 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.

P: ¿Cómo puedo comenzar a utilizar AWS CodeDeploy?
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 Getting Started, que comprende un tutorial paso a paso.

P: ¿Existe algún requisito previo para utilizar la instancia existente de Amazon EC2 con 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 Use an Existing Amazon EC2 Instance.

P: ¿Cuáles son los pasos típicos para implementar una aplicación con AWS CodeDeploy?
En el diagrama siguiente se indican los pasos típicos de una implementación. La creación de una aplicación y un grupo de implementaciones (véase la sección Conceptos para acceder a una explicación de estos términos) son tareas de configuración típicas que se realizan una sola vez por cada 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 Implementaciones.

P: ¿Cómo puedo obtener acceso a AWS CodeDeploy?
Puede obtener acceso a AWS CodeDeploy mediante la consola de administración de AWS, la interfaz de línea de comandos de AWS (CLI de AWS), los AWS SDK y las API de AWS CodeDeploy.

P: ¿Qué cambios debo aplicar al código para realizar implementaciones con AWS CodeDeploy?
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.

P: ¿Cómo puedo implementar una aplicación desde el sistema de control de recursos mediante AWS CodeDeploy?
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 precisa de un paso de compilación, asegúrese de que el repositorio GitHub o el bucket de Amazon S3 contienen los elementos 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.

P: ¿Cómo funcionará AWS CodeDeploy con la herramienta de administración de la configuración?
Puede invocar la herramienta de administración de la 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 acceso a las muestras que ilustran cómo usar AWS CodeDeploy con sistemas de administración de la configuración, como Chef, Puppet, Ansible y Saltstack, consulte la página que trata sobre las integraciones de productos.

P: ¿Puedo usar AWS CodeDeploy con sistemas de implementación e integración continuas?
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 AWS SDK. Puede encontrar muestras e integraciones predefinidas en la página sobre integraciones de productos.

P: ¿Qué debo hacer para que mi aplicación esté disponible en las instancias que acabo de añadir al grupo de implementaciones?
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.

P: ¿Cómo funciona AWS CodeDeploy con Auto Scaling?
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 Auto Scaling, consulte la sección Auto Scaling Group Lifecycle.

P: ¿Cómo puedo realizar un seguimiento del estado de una implementación?
Puede realizar el seguimiento del estado de una implementación con la consola de administración de la consola de administración de AWS, la interfaz de línea de comandos (CLI) de AWS, los AWS SDK y las API de AWS CodeDeploy. Además, puede ver el estado general de una implementación y explorar más para consultar el estado de cada instancia y el estado de cada evento del ciclo de vida de la implementación 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.

P: ¿Puedo detener una implementación en tránsito?
Sí. Al detener una implementación en tránsito, el servicio AWS CodeDeploy indicará al agente de cada instancia que deje de ejecutar scripts 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.

P: ¿Cómo puedo restaurar una aplicación a la revisión anterior?
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.

P: ¿Puedo usar un bucket de Amazon S3 con control de versiones para almacenar revisiones?
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.

P: ¿Cuáles son los límites del servicio al utilizar AWS CodeDeploy?
Para obtener información sobre los límites del servicio, consulte la sección sobre los límites. Para aumentar los límites del servicio, envíe una solicitud a través del Centro de soporte de AWS.

P: ¿Puedo obtener un historial de todas las llamadas al API de AWS CodeDeploy realizadas en mi cuenta para fines de análisis de seguridad y de solución de problemas operativos?
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.

P: ¿Puedo usar AWS CodeDeploy para implementar una aplicación en instancias de Amazon EC2 que se ejecutan dentro de una Amazon Virtual Private Cloud (VPC)?
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.

P: ¿Puedo utilizar AWS Identity and Access Management (IAM) para administrar el acceso a AWS CodeDeploy?
Sí. AWS CodeDeploy soporta 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 tanto, puede impedir que los usuarios realicen cambios accidentales de la aplicación que no corresponde. Para obtener más información sobre el uso de IAM con AWS CodeDeploy, consulte la referencia a los permisos de acceso.

P: ¿Qué regiones soporta AWS CodeDeploy?
Consulte Productos y servicios regionales para obtener más información sobre la disponibilidad por región de CodeDeploy.

P: ¿Cómo puedo implementar una aplicación de AWS CodeDeploy en varias regiones?
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.

P: ¿Cuánto cuesta AWS CodeDeploy?
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 on-premise mediante el uso de AWS CodeDeploy. Consulte la página de precios​ para obtener más detalles.