Generales

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

P: ¿Quién debería utilizar AWS CodeDeploy?
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 secuencias de comandos 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 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 secuencias de comandos para cualquier lógica de implementación personalizada.
 
P: ¿Qué sistemas operativos admite AWS CodeDeploy?
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.
 
P: ¿AWS CodeDeploy funcionará con la cadena de herramientas existente?
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.
 
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 localmente. AWS Elastic Beanstalk y AWS OpsWorks son soluciones integrales de administración de aplicaciones.

P: ¿AWS CodeDeploy admite las instancias locales?
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

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 secuencias de comandos 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 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 la sección sobre 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 la información sobre la integración de Auto Scaling.
 
P: ¿En qué consiste la configuración de una implementación?
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 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 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.

version: 0.0

os: linux

files: 

# You can specify one or more mappings in the files section.

  - source: /

    destination: /var/www/html/WordPress

hooks:

 # The lifecycle hooks sections allows you to specify deployment scripts.

ApplicationStop: 

# Step 1: Stop Apache and MySQL if running.

    - location: helper_scripts/stop_server.sh

BeforeInstall: 

# Step 2: Install Apache and MySQL.

# You can specify one or more scripts per deployment lifecycle event.

    - location: deploy_hooks/puppet-apply-apache.sh

    - location: deploy_hooks/puppet-apply-mysql.sh 

 AfterInstall: 

# Step 3: Set permissions.

    - location: deploy_hooks /change_permissions.sh

      timeout: 30

      runas: root

# Step 4: Start the server.

    - location: helper_scripts/start_server.sh

      timeout: 30

      runas: root

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 admiten actualmente, en su orden de ejecución. También se incluyen ejemplos de casos de uso.

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 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 ApplicationStop si desea detener con facilidad la aplicación o quitar los paquetes instalados actualmente en la fase de preparación de una implementación.

DownloadBundle 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 las secuencias de comando del usuario.
BeforeInstall Puede usar el evento del ciclo de vida de la implementación BeforeInstall para preinstalar tareas como el descifrado de archivos y la creación de una copia de seguridad de la versión actual.
Install 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 las secuencias de comando del usuario.
AfterInstall Puede usar el evento del ciclo de vida de la implementación∙BeforeInstall 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 BeforeInstall se usa para reiniciar los servicios detenidos durante el evento ApplicationStop.
ValidateService ValidateService es el último evento del ciclo de vida de la implementación, que ofrece la oportunidad de verificar que la implementación se haya completado correctamente.

Introducción

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 Introducción, que incluye un tutorial paso a paso.

Uso de AWS CodeDeploy

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 la sección acerca de cómo usar una instancia de Amazon EC2 existente.
 
P: ¿Cuáles son los pasos normales para implementar una aplicación con AWS CodeDeploy?
En el diagrama siguiente se indican los pasos normales 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 normales que se realizan una sola vez por aplicación. Las acciones recurrentes consisten en cargar una revisión e implementarla. Para leer 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 SDK de AWS 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 las secuencias de comando 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 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.
 
P: ¿Cómo funcionará AWS CodeDeploy con la herramienta de administración de configuració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 acceso a las 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.
 
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 SDK de AWS. 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 sobre el ciclo de vida del grupo de Auto Scaling.
 
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 AWS, la interfaz de línea de comandos (CLI) de AWS, los SDK de AWS 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 registro 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 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.
 
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 a la 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 a la API de AWS CodeDeploy realizadas en su cuenta, solo tiene que activar AWS CloudTrail en la consola de administración de AWS.
 
P: ¿Cómo recibo notificaciones o alertas para cualquier evento en AWS CodeDeploy?
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

P: ¿Puedo usar AWS CodeDeploy para implementar una aplicación en instancias de Amazon EC2 que se ejecuten 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 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

P: ¿Qué regiones admite AWS CodeDeploy?
Consulte Productos y servicios por región 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.

Facturación

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 local mediante el uso de AWS CodeDeploy. Consulte la página de precios para obtener más detalles.

Conozca las integraciones de AWS CodeDeploy

Consulte la página de integraciones de productos
¿Listo para crear?
Introducción a AWS CodeDeploy
¿Tiene más preguntas?
Contacte con nosotros