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 «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 'hooks'
sección correspondiente a una implementación de EC2 /On-Premises contiene mapeos que vinculan los enlaces de eventos del ciclo de vida de la implementación a uno o más scripts. La 'hooks'
sección correspondiente a una ECS implementación de Lambda o Amazon especifica las funciones de validación de Lambda que se ejecutarán durante un evento del ciclo de vida de una 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.
Temas
AppSpec sección «ganchos» para una ECS implementación de Amazon
Temas
Lista de enlaces a eventos del ciclo de vida para una ECS implementación de Amazon
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 describen los eventos del ciclo de vida en los que puedes ejecutar un enlace durante una ECS implementación de Amazon.
-
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é ocurre durante un ECS despliegue de Amazon y Tutorial: Implementa un ECS servicio de Amazon con una prueba de validación.
Ejecuta el orden de los enlaces en una ECS implementación de Amazon.
En una ECS implementación de Amazon, los enlaces de eventos se ejecutan en el siguiente orden:
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'
.
Uso deYAML:
Hooks: - BeforeInstall: "
BeforeInstallHookFunctionName
" - AfterInstall: "AfterInstallHookFunctionName
" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName
" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName
" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName
"
Uso deJSON:
"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 AmazonECS. Puede usar la misma función o una diferente para los eventos del BeforeInstall
ciclo de vida de la AfterAllowTraffic
implementación y AfterInstall
AfterAllowTestTraffic
BeforeAllowTraffic
, 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
Temas
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:
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".
Uso deYAML:
hooks: - BeforeAllowTraffic:
BeforeAllowTrafficHookFunctionName
- AfterAllowTraffic:AfterAllowTrafficHookFunctionName
Uso deJSON:
"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 de EC2 /On-Premises
Temas
- Lista de enlaces de eventos del ciclo de vida
- Disponibilidad de los enlaces de eventos del ciclo de vida
- Orden de ejecución de los enlaces en una implementación
- Estructura de la sección "hooks"
- Hacer referencia a los archivos en los scripts de enlaces
- Disponibilidad de las variables de entorno para los enlaces
- Ejemplo de enlaces
Lista de enlaces de eventos del ciclo de vida
Un enlace de despliegue EC2 de /On-Premises se ejecuta una vez por despliegue 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 AppSpec uso en el archivo.
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 enlaceApplicationStop
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
archivo. Este archivo se encuentra en:deployment-group-id
_last_successful_install/opt/codedeploy-agent/deployment-root/deployment-instructions
carpeta en Amazon Linux, Ubuntu Server e EC2 instancias de RHEL Amazon.C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
carpeta en las EC2 instancias Amazon de 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:/opt/codedeploy-agent/deployment-root/
carpeta en Amazon Linux, Ubuntu Server e EC2 instancias de RHEL Amazon.deployment-group-id
/deployment-id
/deployment-archiveC:\ProgramData\Amazon\CodeDeploy\
carpeta en las EC2 instancias Amazon de Windows Server.deployment-group-id
\deployment-id
\deployment-archiveEste evento está reservado para el CodeDeploy agente y no se puede usar 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 duranteApplicationStop
. -
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 información sobre las implementaciones de Amazon EC2 Auto Scaling, consulteCó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.
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.
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.
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:
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 «ganchos», y desea hacer referencia a un archivo (por ejemplohelper.sh
) del script, tendrá que especificarlo mediante: helper.sh
-
(Recomendado) Una ruta absoluta. Consulte Uso de rutas absolutas.
-
Una ruta relativa. Consulte Uso de rutas relativas.
Uso de rutas absolutas
Para hacer referencia a un archivo mediante su ruta absoluta, puede hacer lo siguiente:
-
Especifique la ruta absoluta en la
files
sección del AppSpec archivo, en ladestination
propiedad. A continuación, especifique la misma ruta absoluta en el script de enlace. Para obtener más información, consulte AppSpec sección «archivos» (EC2/Solo implementaciones locales). -
Especifique una ruta absoluta dinámica en el script de enlace. Para obtener más información, consulte Ubicación del archivo de implementación.
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 root-directory
Una parte de la ruta siempre se establece en el valor predeterminado que se muestra en la siguiente tabla o se controla mediante el ajuste de :root_dir
configuración. 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 despliegue CodeDeploy que forma parte del despliegue 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 SHA256 confirmación del paquete generado por Git (por ejemplo,
d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26
).
El siguiente script cambia el puerto de escucha de un HTTP servidor Apache a 9090 en lugar de 80 si el valor de DEPLOYMENT_ GROUP _ NAME es igual aStaging
. 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 siguiente ejemplo de script cambia el nivel de verbosidad de los mensajes registrados en su registro de errores, de advertencia a depuración si el valor de la variable de NAME entorno DEPLOYMENT_ GROUP _ 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.