AppSpec sección de «ganchos» - 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.

AppSpec sección de «ganchos»

El contenido de la 'hooks' sección del AppSpec archivo varía en función de la plataforma informática de la implementación. La sección 'hooks' de una implementación de EC2/en las instalaciones contiene los mapeos que vinculan los enlaces de eventos del ciclo de vida de la implementación a uno o varios scripts. La sección 'hooks' de una implementación de Lambda o de Amazon ECS especifica las funciones de validación de Lambda que se ejecutan durante un evento del ciclo de vida de la implementación. Si un enlace de evento no está presente, no se ejecuta ninguna operación para ese evento. Esta sección solo es necesaria si ejecuta scripts o funciones de validación de Lambda como parte de la implementación.

AppSpec sección «ganchos» para una implementación de Amazon ECS

Lista de enlaces de eventos de ciclo de vida para una implementación de Amazon ECS

Un enlace de AWS Lambda es una función de Lambda especificada con una cadena en una línea nueva después del nombre del evento del ciclo de vida. Cada enlace se ejecuta una vez por implementación. A continuación, se muestran las descripciones de los eventos del ciclo de vida donde puede ejecutar un enlace durante una implementación de Amazon ECS.

  • BeforeInstall: se utiliza para ejecutar tareas antes de crear el conjunto de tareas de sustitución. Un grupo de destino se asocia al conjunto de tareas original. Si se especifica un agente de escucha de prueba opcional, se asociada al conjunto de tareas original. En este momento no es posible una restauración.

  • AfterInstall: se utiliza para ejecutar tareas una vez que el conjunto de tareas se ha creado y uno de los grupos de destino se ha asociado con él. Si se especifica un agente de escucha de prueba opcional, se asociada al conjunto de tareas original. El resultado de la función de enlace en este evento de ciclo de vida puede activar una restauración.

  • AfterAllowTestTraffic: se utiliza para ejecutar tareas después de que el oyente de prueba envía tráfico al conjunto de tareas de sustitución. El resultado de la función de enlace en este punto puede activar una restauración.

  • BeforeAllowTraffic: se utiliza para ejecutar tareas una vez que el segundo grupo de destino se ha asociado con el conjunto de tareas de sustitución, pero antes de que se envíe tráfico al conjunto de tareas de sustitución. El resultado de la función de enlace en este evento de ciclo de vida puede activar una restauración.

  • AfterAllowTraffic: se utiliza para ejecutar tareas después de que el segundo grupo de destino envíe tráfico al conjunto de tareas de sustitución. El resultado de la función de enlace en este evento de ciclo de vida puede activar una restauración.

Para obtener más información, consulte ¿Qué sucede durante una implementación de Amazon ECS? y Tutorial: Implementación de un servicio de Amazon ECS con una prueba de validación.

Ejecute el orden de los enlaces en una implementación de Amazon ECS.

En una implementación de Amazon ECS, los enlaces de eventos se ejecutan en el siguiente orden:

El orden de los enganches de eventos en una implementación de Amazon ECS.
nota

Los eventos de inicio TestTrafficAllowTraffic, instalación y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama.

Estructura de la sección "hooks"

Los siguientes ejemplos muestran la estructura de la sección 'hooks'.

Mediante YAML:

Hooks: - BeforeInstall: "BeforeInstallHookFunctionName" - AfterInstall: "AfterInstallHookFunctionName" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName"

Mediante JSON:

"Hooks": [ { "BeforeInstall": "BeforeInstallHookFunctionName" }, { "AfterInstall": "AfterInstallHookFunctionName" }, { "AfterAllowTestTraffic": "AfterAllowTestTrafficHookFunctionName" }, { "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName" } ] }

Ejemplo de función de “hooks” de Lambda

Utilice la 'hooks' sección para especificar una función de Lambda a la que CodeDeploy se pueda llamar para validar una implementación de Amazon ECS. Puede usar la misma función o una diferente para los eventos del BeforeInstall ciclo de vida de la AfterAllowTraffic implementación y AfterInstall AfterAllowTestTrafficBeforeAllowTraffic, Tras completar las pruebas de validación, la AfterAllowTraffic función Lambda vuelve a llamar CodeDeploy y entrega un resultado de Succeeded o. Failed

importante

Se considera que el despliegue ha fallado si CodeDeploy la función de validación de Lambda no lo notifica en el plazo de una hora.

Antes de invocar una función de enlace de Lambda, el servidor debe recibir una notificación con el ID de implementación y el ID de ejecución del enlace de evento del ciclo de vida con el comando putLifecycleEventHookExecutionStatus.

A continuación, se muestra una función de enlace de Lambda de ejemplo escrita en Node.js.

'use strict'; const aws = require('aws-sdk'); const codedeploy = new aws.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { //Read the DeploymentId from the event payload. var deploymentId = event.DeploymentId; //Read the LifecycleEventHookExecutionId from the event payload var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; /* Enter validation tests here. */ // Prepare the validation test results with the deploymentId and // the lifecycleEventHookExecutionId for CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. callback('Validation test failed'); } else { // Validation succeeded. callback(null, 'Validation test succeeded'); } }); };

AppSpec sección de «ganchos» para una implementación de AWS Lambda

Lista de enlaces de eventos del ciclo de vida para una implementación de AWS Lambda

Un enlace de AWS Lambda es una función de Lambda especificada con una cadena en una línea nueva después del nombre del evento del ciclo de vida. Cada enlace se ejecuta una vez por implementación. Estas son las descripciones de los ganchos disponibles para su AppSpec uso en el archivo.

  • BeforeAllowTraffic— Se utiliza para ejecutar tareas antes de que el tráfico se traslade a la versión de la función Lambda implementada.

  • AfterAllowTraffic— Se utiliza para ejecutar tareas después de que todo el tráfico se haya desplazado a la versión de la función Lambda implementada.

Orden de ejecución de los enlaces en una implementación de versiones de funciones de Lambda

En una implementación de versiones de funciones de Lambda sin servidor, los enlaces de eventos se ejecutan en el siguiente orden:

El orden de los enlaces de eventos en una implementación de Lambda.
nota

Los eventos de inicio y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama. AllowTraffic

Estructura de la sección "hooks"

Los siguientes ejemplos muestran la estructura de la sección "hooks".

Mediante YAML:

hooks: - BeforeAllowTraffic: BeforeAllowTrafficHookFunctionName - AfterAllowTraffic: AfterAllowTrafficHookFunctionName

Mediante JSON:

"hooks": [{ "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName" }]

Ejemplo de función de “hooks” de Lambda

Utilice la sección «hooks» para especificar una función de Lambda a la que CodeDeploy se pueda llamar para validar una implementación de Lambda. Puede usar la misma función o una diferente para los eventos del ciclo de vida de la AfterAllowTraffic implementación BeforeAllowTraffic y para los eventos del ciclo de vida. Tras completar las pruebas de validación, la función de validación de Lambda vuelve a llamar CodeDeploy y entrega un resultado de Succeeded o. Failed

importante

Se considera que el despliegue ha fallado si CodeDeploy la función de validación de Lambda no lo notifica en el plazo de una hora.

Antes de invocar una función de enlace de Lambda, el servidor debe recibir una notificación con el ID de implementación y el ID de ejecución del enlace de evento del ciclo de vida con el comando putLifecycleEventHookExecutionStatus.

A continuación, se muestra una función de enlace de Lambda de ejemplo escrita en Node.js.

'use strict'; const aws = require('aws-sdk'); const codedeploy = new aws.CodeDeploy({apiVersion: '2014-10-06'}); exports.handler = (event, context, callback) => { //Read the DeploymentId from the event payload. var deploymentId = event.DeploymentId; //Read the LifecycleEventHookExecutionId from the event payload var lifecycleEventHookExecutionId = event.LifecycleEventHookExecutionId; /* Enter validation tests here. */ // Prepare the validation test results with the deploymentId and // the lifecycleEventHookExecutionId for CodeDeploy. var params = { deploymentId: deploymentId, lifecycleEventHookExecutionId: lifecycleEventHookExecutionId, status: 'Succeeded' // status can be 'Succeeded' or 'Failed' }; // Pass CodeDeploy the prepared validation test results. codedeploy.putLifecycleEventHookExecutionStatus(params, function(err, data) { if (err) { // Validation failed. callback('Validation test failed'); } else { // Validation succeeded. callback(null, 'Validation test succeeded'); } }); };

AppSpec Sección de «enganches» para una implementación local de EC2/

Lista de enlaces de eventos del ciclo de vida

Un enlace de implementación de EC2/en las instalaciones se ejecuta una vez por cada implementación en una instancia. Puede especificar uno o varios scripts para ejecutar en un enlace. Cada enlace de un evento del ciclo de vida se especifica con una cadena en una línea independiente. Estas son las descripciones de los ganchos disponibles para su uso en el archivo. AppSpec

Para obtener información sobre los enlaces de eventos del ciclo de vida válidos para cada tipo de implementación y restauración, consulte Disponibilidad de los enlaces de eventos del ciclo de vida.

  • ApplicationStop: este evento de ciclo de vida de la implementación se produce incluso antes de que se descargue la revisión de la aplicación. Puede especificar scripts para este evento para detener con fluidez la aplicación o para eliminar los paquetes instalados actualmente en la preparación de una implementación. El AppSpec archivo y los scripts utilizados para este evento del ciclo de vida de la implementación provienen de la revisión anterior de la aplicación que se implementó correctamente.

    nota

    No existe ningún AppSpec archivo en una instancia antes de realizar la implementación en ella. Por este motivo, el enlace ApplicationStop no se ejecuta la primera vez que se realiza la implementación en la instancia. Puede utilizar el enlace ApplicationStop la segunda vez que realice la implementación en una instancia.

    Para determinar la ubicación de la última revisión de la aplicación implementada correctamente, el CodeDeploy agente busca la ubicación que aparece en el deployment-group-id_last_successful_install archivo. Este archivo se encuentra en:

    Carpeta /opt/codedeploy-agent/deployment-root/deployment-instructions en las instancias de Amazon EC2 en Amazon Linux, Ubuntu Server y RHEL.

    Carpeta C:\ProgramData\Amazon\CodeDeploy\deployment-instructions en las instancias de Amazon EC2 en Windows Server.

    Para solucionar un error de una implementación durante el evento del ciclo de vida de la implementación ApplicationStop, consulte Solución de problemas relacionados con un error o un evento del ciclo de vida de ApplicationStop la BeforeBlockTraffic implementación AfterBlockTraffic .

  • DownloadBundle— Durante este evento del ciclo de vida de la implementación, el CodeDeploy agente copia los archivos de revisión de la aplicación en una ubicación temporal:

    Carpeta /opt/codedeploy-agent/deployment-root/deployment-group-id/deployment-id/deployment-archive en las instancias de Amazon EC2 en Amazon Linux, Ubuntu Server y RHEL.

    Carpeta C:\ProgramData\Amazon\CodeDeploy\deployment-group-id\deployment-id\deployment-archive en las instancias de Amazon EC2 en Windows Server.

    Este evento está reservado para el CodeDeploy agente y no se puede utilizar para ejecutar scripts.

    Para solucionar un error de una implementación durante el evento del ciclo de vida de la implementación DownloadBundle, consulte Solución de problemas de un evento fallido en el ciclo de vida de una DownloadBundle implementación con UnknownError: no abierto para lectura.

  • BeforeInstall: puede usar este evento de ciclo de vida de la implementación para tareas de preinstalación, como descifrar archivos y crear un backup de la versión actual.

  • Install— Durante este evento del ciclo de vida de la implementación, el CodeDeploy agente copia los archivos de revisión de la ubicación temporal a la carpeta de destino final. Este evento está reservado para el CodeDeploy agente y no se puede utilizar para ejecutar scripts.

  • AfterInstall: puede usar este evento de ciclo de vida de la implementación para configurar la aplicación o para cambiar los permisos de los archivos.

  • ApplicationStart: este evento de ciclo de vida de la implementación se utiliza normalmente para reiniciar los servicios que se detuvieron durante ApplicationStop.

  • ValidateService: este es el último evento de ciclo de vida de la implementación. Se utiliza para verificar que la implementación se ha completado correctamente.

  • BeforeBlockTraffic: puede utilizar este evento de ciclo de vida de la implementación para ejecutar tareas en las instancias antes de que se cancele su registro de un equilibrador de carga.

    Para solucionar un error de una implementación durante el evento del ciclo de vida de la implementación BeforeBlockTraffic, consulte Solución de problemas relacionados con un error o un evento del ciclo de vida de ApplicationStop la BeforeBlockTraffic implementación AfterBlockTraffic .

  • BlockTraffic: durante este evento de ciclo de vida de la implementación, se bloquea el tráfico de Internet a las instancias que están actualmente sirviendo tráfico. Este evento está reservado para el CodeDeploy agente y no se puede usar para ejecutar scripts.

  • AfterBlockTraffic: puede utilizar este evento de ciclo de vida de la implementación para ejecutar tareas en las instancias después de que se cancele su equilibrador de carga.

    Para solucionar un error de una implementación durante el evento del ciclo de vida de la implementación AfterBlockTraffic, consulte Solución de problemas relacionados con un error o un evento del ciclo de vida de ApplicationStop la BeforeBlockTraffic implementación AfterBlockTraffic .

  • BeforeAllowTraffic: puede utilizar este evento de ciclo de vida de la implementación para ejecutar tareas en las instancias antes de que se registren con un equilibrador de carga.

  • AllowTraffic: durante este evento de ciclo de vida de la implementación, se permite el acceso del tráfico de Internet a las instancias después de una implementación. Este evento está reservado para el CodeDeploy agente y no se puede usar para ejecutar scripts.

  • AfterAllowTraffic: puede utilizar este evento de ciclo de vida de la implementación para ejecutar tareas en las instancias después de que se registren con un equilibrador de carga.

Disponibilidad de los enlaces de eventos del ciclo de vida

En la siguiente tabla se indican los enlaces de eventos del ciclo de vida disponibles para cada escenario de implementación y restauración.

Nombre de evento del ciclo de vida Implementación de lanzamiento de Auto Scaling¹ Implementación de terminación de Auto Scaling¹ Implementación local¹ Implementación blue/green: instancias originales Implementación blue/green: instancias de sustitución Restauración de implementación blue/green: instancias originales Restauración de implementación blue/green: instancias de sustitución
ApplicationStop
DownloadBundle³
BeforeInstall
Install²
AfterInstall
ApplicationStart
ValidateService
BeforeBlockTraffic
BlockTraffic³
AfterBlockTraffic
BeforeAllowTraffic
AllowTraffic³
AfterAllowTraffic

¹ Para obtener más información sobre implementaciones de Amazon EC2 Auto Scaling, consulte Cómo funciona Amazon EC2 Auto Scaling con CodeDeploy.

² Se aplica también a la reversión de una implementación local.

³ Reservado para CodeDeploy operaciones. No se puede utilizar para ejecutar scripts.

Orden de ejecución de los enlaces en una implementación

Implementaciones de lanzamiento de Auto Scaling

Durante una implementación de lanzamiento de Auto Scaling, CodeDeploy ejecuta los enlaces de eventos en el siguiente orden.

Para obtener más información sobre implementaciones de lanzamiento Auto Scaling, consulte Cómo funciona Amazon EC2 Auto Scaling con CodeDeploy.

El orden de los enganches de eventos durante una implementación de lanzamiento de Auto Scaling.
nota

Los eventos de inicio DownloadBundleAllowTraffic, instalación y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama. Sin embargo, puede editar la 'files' sección del AppSpec archivo para especificar qué se instalará durante el evento de instalación.

Implementaciones de terminación de Auto Scaling

Durante un despliegue de terminación de Auto Scaling, CodeDeploy ejecuta los enlaces de eventos en el siguiente orden.

Para obtener más información sobre implementaciones de terminación de Auto Scaling, consulte Habilitación de implementaciones de terminación durante los eventos de reducción horizontal de Auto Scaling.

El orden de los enganches de eventos durante una implementación de terminación de Auto Scaling.
nota

Los eventos de inicio y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama. BlockTraffic

Implementaciones in situ

En una implementación in situ, incluida la restauración de una implementación in situ, los enlaces de eventos se ejecutan en el orden siguiente:

nota

En el caso de las implementaciones locales, los seis enlaces relacionados con el bloqueo y el permiso del tráfico solo se aplican si se ha especificado un equilibrador de carga clásico, un equilibrador de carga de aplicación o un equilibrador de carga de red de Elastic Load Balancing en el grupo de implementación.

El orden de los enganches de eventos durante la reversión de una implementación local.
nota

Los eventos de inicio DownloadBundle, instalación y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama. Sin embargo, puede editar la 'files' sección del AppSpec archivo para especificar qué se instalará durante el evento de instalación.

Implementaciones blue/green

En una implementación blue/green, los enlaces de eventos se ejecutan en el siguiente orden:

El orden de los eventos engancha a una implementación azul/verde.
nota

Los eventos de inicio DownloadBundleBlockTrafficAllowTraffic, instalación y finalización de la implementación no se pueden programar, por lo que aparecen en gris en este diagrama. Sin embargo, puede editar la sección de «archivos» del AppSpec archivo para especificar qué se instalará durante el evento de instalación.

Estructura de la sección "hooks"

La sección 'hooks' tiene la siguiente estructura:

hooks: deployment-lifecycle-event-name: - location: script-location timeout: timeout-in-seconds runas: user-name

Puede incluir los siguientes elementos en una entrada hook detrás del nombre de evento del ciclo de vida de la implementación:

location

Obligatorio. La ubicación en el paquete del archivo de script de la revisión. La ubicación de los scripts que especifica en la sección hooks es relativa a la raíz del paquete de revisión de la aplicación. Para obtener más información, consulte Planifique una revisión para CodeDeploy.

timeout

Opcional. El número de segundos que se puede ejecutar el script antes de que se considere que se ha producido un error. El valor predeterminado es 3 600 segundos (1 hora).

nota

3 600 segundos (1 hora) es la cantidad máxima de tiempo de ejecución permitido para el script para cada evento del ciclo de vida de la implementación. Si el script supera este límite, la implementación se detiene y la implementación en la instancia da un error. Asegúrese de que el número total de segundos especificados en timeout para todos los scripts en cada evento del ciclo de vida de la implementación no supere este límite.

runas

Opcional. El usuario que se va a suplantar al ejecutar el script. De forma predeterminada, este es el CodeDeploy agente que se ejecuta en la instancia. CodeDeploy no almacena contraseñas, por lo que no se puede suplantar al usuario si el usuario runas necesita una contraseña. Este ejemplo se aplica únicamente a las instancias de Amazon Linux y Ubuntu Server.

Hacer referencia a los archivos en los scripts de enlaces

Si va a conectar un script a un evento CodeDeploy del ciclo de vida, tal y como se describe enAppSpec sección de «ganchos», y desea hacer referencia a un archivo (por ejemplohelper.sh) del script, tendrá que especificarlo mediante: helper.sh

Uso de rutas absolutas

Para hacer referencia a un archivo mediante su ruta absoluta, puede hacer lo siguiente:

Ubicación del archivo de implementación

Durante el evento DownloadBundledel ciclo de vida, el CodeDeploy agente extrae la revisión para el despliegue en un directorio que tiene el siguiente formato:

root-directory/deployment-group-id/deployment-id/deployment-archive

La parte del directorio raíz de la ruta siempre se establece en el valor predeterminado que se muestra en la siguiente tabla o se controla mediante el ajuste de configuración :root_dir. Para obtener más información acerca de los ajustes de configuración, consulte CodeDeploy referencia de configuración del agente.

Plataforma de agentes Directorio raíz predeterminado
Linux: todas las distribuciones rpm /opt/codedeploy-agent/deployment-root
Ubuntu Server: todas las distribuciones deb /opt/codedeploy-agent/deployment-root
Windows Server %ProgramData%\Amazon\CodeDeploy

Desde sus scripts de enlace, puede acceder al archivo de implementación actual utilizando la ruta del directorio raíz y las variables de entorno DEPLOYMENT_ID y DEPLOYMENT_GROUP_ID. Para obtener más información acerca de las que puede usar, consulte Disponibilidad de las variables de entorno para los enlaces.

Por ejemplo, así es como puede acceder a un archivo data.json que se encuentra en la raíz de su revisión en Linux:

#!/bin/bash rootDirectory="/opt/codedeploy-agent/deployment-root" # note: this will be different if you # customize the :root_dir configuration dataFile="$rootDirectory/$DEPLOYMENT_GROUP_ID/$DEPLOYMENT_ID/deployment-archive/data.json" data=$(cat dataFile)

Otro ejemplo: así es como puede acceder a un archivo data.json que se encuentra en la raíz de la revisión con Powershell en Windows:

$rootDirectory="$env:ProgramData\Amazon\CodeDeploy" # note: this will be different if you # customize the :root_dir configuration $dataFile="$rootDirectory\$env:DEPLOYMENT_GROUP_ID\$env:DEPLOYMENT_ID\deployment-archive\data.json" $data=(Get-Content $dataFile)

Uso de rutas relativas

Para hacer referencia a un archivo mediante su ruta relativa, necesitará conocer el directorio de trabajo del CodeDeploy agente. Las rutas de los archivos son relativas a este directorio.

La siguiente tabla muestra el directorio de trabajo de cada plataforma compatible del CodeDeploy agente.

Plataforma de agente Método de administración de procesos Directorio de trabajo para los scripts de eventos de ciclo de vida
Linux: todas las distribuciones rpm systemd (predeterminado) /
init.d: más información /opt/codedeploy-agent
Ubuntu Server: todas las distribuciones debian Todos /opt/codedeploy-agent
Windows Server no aplicable C:\Windows\System32

Disponibilidad de las variables de entorno para los enlaces

Durante cada evento del ciclo de vida de la implementación, los scripts de enlace pueden tener acceso a las siguientes variables de entorno:

APPLICATION_NAME

El nombre de la aplicación CodeDeploy que forma parte de la implementación actual (por ejemplo,WordPress_App).

DEPLOYMENT_ID

El ID se CodeDeploy ha asignado a la implementación actual (por ejemplo,d-AB1CDEF23).

DEPLOYMENT_GROUP_NAME

El nombre del grupo de despliegues CodeDeploy que forma parte del despliegue actual (por ejemplo,WordPress_DepGroup).

DEPLOYMENT_GROUP_ID

El ID del grupo de despliegues CodeDeploy que forma parte de la implementación actual (por ejemplo,b1a2189b-dd90-4ef5-8f40-4c1c5EXAMPLE).

LIFECYCLE_EVENT

El nombre del evento del ciclo de vida de la implementación actual (por ejemplo, AfterInstall).

Estas variables de entorno son locales con respecto a cada evento del ciclo de vida de la implementación.

Hay variables de entorno adicionales disponibles para conectar scripts de enlace en función del origen del paquete de implementación:

Paquete de Amazon S3

  • BUNDLE_BUCKET

    El nombre del bucket de Amazon S3 desde el que se descargó el paquete de implementación (por ejemplo, my-s3-bucket).

  • BUNDLE_KEY

    La clave de objeto del paquete descargado dentro del bucket de Amazon S3 (por ejemplo, WordPress_App.zip).

  • BUNDLE_VERSION

    La versión del objeto del paquete (por ejemplo, 3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo). Esta variable solo se establece si el bucket de Amazon S3 tiene activado el control de versiones de objetos.

  • BUNDLE_ETAG

    La ETag del objeto del paquete (por ejemplo, b10a8db164e0754105b7a99be72e3fe5-4).

Paquete de GitHub

  • BUNDLE_COMMIT

    El hash de confirmación SHA256 del paquete generado por Git (por ejemplo, d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26).

El script siguiente cambia el puerto de escucha de un servidor HTTP Apache a 9090 en lugar de a 80 si el valor de DEPLOYMENT_GROUP_NAME es igual a Staging. Este script debe invocarse durante el evento del ciclo de vida de implementación BeforeInstall:

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/Listen 80/Listen 9090/g' /etc/httpd/conf/httpd.conf fi

El script de ejemplo siguiente cambia el nivel de detalle de los mensajes registrados en su log de errores de advertencia a depurar si el valor de la variable de entorno DEPLOYMENT_GROUP_NAME es igual a Staging. Este script debe invocarse durante el evento del ciclo de vida de implementación BeforeInstall:

if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/LogLevel warn/LogLevel debug/g' /etc/httpd/conf/httpd.conf fi

El script de ejemplo siguiente sustituye el texto de la página web especificada por el texto que muestra el valor de estas variables de entorno. Este script debe invocarse durante el evento del ciclo de vida de implementación AfterInstall:

#!/usr/bin/python import os strToSearch="<h2>This application was deployed using CodeDeploy.</h2>" strToReplace="<h2>This page for "+os.environ['APPLICATION_NAME']+" application and "+os.environ['DEPLOYMENT_GROUP_NAME']+" deployment group with "+os.environ['DEPLOYMENT_GROUP_ID']+" deployment group ID was generated by a "+os.environ['LIFECYCLE_EVENT']+" script during "+os.environ['DEPLOYMENT_ID']+" deployment.</h2>" fp=open("/var/www/html/index.html","r") buffer=fp.read() fp.close() fp=open("/var/www/html/index.html","w") fp.write(buffer.replace(strToSearch,strToReplace)) fp.close()

Ejemplo de enlaces

A continuación se muestra un ejemplo de una entrada hooks (enlaces) que especifica dos enlaces para el evento de ciclo de vida AfterInstall.

hooks: AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 - location: Scripts/PostDeploy.sh timeout: 180

El script Scripts/RunResourceTests.sh se ejecuta durante la fase AfterInstall del proceso de implementación. La implementación no tendrá éxito si el script tarda más de 180 segundos (3 minutos) en ejecutarse.

La ubicación de los scripts que especifica en la sección "hooks" es relativa a la raíz del paquete de revisión de la aplicación. En el ejemplo anterior, un archivo denominado RunResourceTests.sh está en un directorio denominado Scripts. El directorio Scripts está en la raíz del paquete. Para obtener más información, consulte Planifique una revisión para CodeDeploy.