Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
AppSpec sezione 'hooks'
Il contenuto nella 'hooks'
sezione del AppSpec file varia a seconda della piattaforma di elaborazione utilizzata per la distribuzione. La 'hooks'
sezione relativa alla distribuzione EC2 /On-Premises contiene mappature che collegano gli hook degli eventi del ciclo di vita della distribuzione a uno o più script. La 'hooks'
sezione relativa a una ECS distribuzione Lambda o Amazon specifica le funzioni di convalida Lambda da eseguire durante un evento del ciclo di vita della distribuzione. Se l'hook di un evento non è presente, non viene eseguita alcuna operazione per quell'evento. Questa sezione è obbligatoria solo se esegui script o funzioni di convalida Lambda come parte della distribuzione.
Argomenti
AppSpec sezione 'hooks' per una distribuzione Amazon ECS
Argomenti
Elenco degli hook relativi agli eventi del ciclo di vita per una distribuzione Amazon ECS
Un hook AWS Lambda è una funzione Lambda specificata con una stringa su una nuova riga dopo il nome dell'evento del ciclo di vita. Ogni hook viene eseguito una volta per distribuzione. Di seguito sono riportate le descrizioni degli eventi del ciclo di vita in cui è possibile eseguire un hook durante una distribuzione AmazonECS.
-
BeforeInstall
— Da utilizzare per eseguire attività prima della creazione del set di attività sostitutivo. Un gruppo target è associato al set di attività originale. Se un listener di test facoltativo è specificato, esso viene associato al set di attività originale. Un rollback non è possibile in questa fase. -
AfterInstall
— Da utilizzare per eseguire attività dopo la creazione del set di attività sostitutivo e l'associazione di uno dei gruppi target. Se un listener di test facoltativo è specificato, esso viene associato al set di attività originale. I risultati di una funzione di hook per questo evento del ciclo di vita possono attivare un rollback. -
AfterAllowTestTraffic
— Da utilizzare per eseguire attività dopo che il listener di test ha inviato il traffico al set di attività sostitutivo. I risultati di una funzione di hook a questo punto possono attivare un rollback. -
BeforeAllowTraffic
— Da utilizzare per eseguire attività dopo che il secondo gruppo target è stato associato al set di attività sostitutivo, ma prima che il traffico venga spostato verso il set di attività sostitutivo. I risultati di una funzione di hook per questo evento del ciclo di vita possono attivare un rollback. -
AfterAllowTraffic
— Da utilizzare per eseguire attività dopo che il secondo gruppo target ha inviato traffico al set di attività sostitutivo. I risultati di una funzione di hook per questo evento del ciclo di vita possono attivare un rollback.
Per ulteriori informazioni, consulta Cosa succede durante una ECS distribuzione Amazon e Tutorial: distribuisci un ECS servizio Amazon con un test di convalida.
Esegui l'ordine degli hook in una ECS distribuzione Amazon.
In una ECS distribuzione Amazon, gli event hook vengono eseguiti nel seguente ordine:

Nota
Gli eventi di avvio TestTrafficAllowTraffic, installazione e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma.
Struttura della sezione «ganci»
Di seguito sono riportati alcuni esempi della struttura della sezione 'hooks'
.
UsandoYAML:
Hooks: - BeforeInstall: "
BeforeInstallHookFunctionName
" - AfterInstall: "AfterInstallHookFunctionName
" - AfterAllowTestTraffic: "AfterAllowTestTrafficHookFunctionName
" - BeforeAllowTraffic: "BeforeAllowTrafficHookFunctionName
" - AfterAllowTraffic: "AfterAllowTrafficHookFunctionName
"
UsandoJSON:
"Hooks": [ { "BeforeInstall": "
BeforeInstallHookFunctionName
" }, { "AfterInstall": "AfterInstallHookFunctionName
" }, { "AfterAllowTestTraffic": "AfterAllowTestTrafficHookFunctionName
" }, { "BeforeAllowTraffic": "BeforeAllowTrafficHookFunctionName
" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName
" } ] }
Esempio di funzione «ganci» Lambda
Utilizza la 'hooks'
sezione per specificare una funzione Lambda che CodeDeploy può chiamare per convalidare una distribuzione Amazon. ECS Puoi utilizzare la stessa funzione o una diversa per gli eventi del ciclo di vita BeforeInstall
AfterInstall
, AfterAllowTestTraffic
BeforeAllowTraffic
, e della AfterAllowTraffic
distribuzione. Dopo il completamento dei test di convalida, la funzione AfterAllowTraffic
Lambda CodeDeploy richiama e fornisce il risultato Succeeded
di o. Failed
Importante
L'implementazione è considerata fallita se non CodeDeploy viene notificata dalla funzione di convalida Lambda entro un'ora.
Prima di richiamare una funzione Lambda hook, il server deve ricevere una notifica dell'ID di distribuzione e dell'ID di esecuzione dell'hook dell'evento lifecycle utilizzando il comando. putLifecycleEventHookExecutionStatus
Di seguito è riportato un esempio di funzione hook Lambda scritta in 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 sezione 'hooks' per una distribuzione AWS Lambda
Argomenti
Elenco degli hook relativi agli eventi del ciclo di vita per un'implementazione Lambda AWS
Un hook AWS Lambda è una funzione Lambda specificata con una stringa su una nuova riga dopo il nome dell'evento del ciclo di vita. Ogni hook viene eseguito una volta per distribuzione. Di seguito sono riportate le descrizioni degli hook disponibili per l'uso nel file. AppSpec
-
BeforeAllowTraffic— Da utilizzare per eseguire attività prima che il traffico venga spostato alla versione della funzione Lambda implementata.
-
AfterAllowTraffic— Da utilizzare per eseguire attività dopo che tutto il traffico è stato spostato sulla versione della funzione Lambda implementata.
Esegui l'ordine degli hook in una distribuzione della versione della funzione Lambda
In una versione di una funzione Lambda senza server, gli event hook vengono eseguiti nel seguente ordine:

Nota
Gli eventi di inizio e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma. AllowTraffic
Struttura della sezione «ganci»
Di seguito sono riportati alcuni esempi della struttura della sezione "hooks".
UsandoYAML:
hooks: - BeforeAllowTraffic:
BeforeAllowTrafficHookFunctionName
- AfterAllowTraffic:AfterAllowTrafficHookFunctionName
UsandoJSON:
"hooks": [{ "BeforeAllowTraffic": "
BeforeAllowTrafficHookFunctionName
" }, { "AfterAllowTraffic": "AfterAllowTrafficHookFunctionName
" }]
Esempio di funzione «ganci» Lambda
Usa la sezione 'hooks' per specificare una funzione Lambda CodeDeploy che può chiamare per convalidare una distribuzione Lambda. È possibile utilizzare la stessa funzione o una diversa per gli eventi del ciclo di vita della distribuzioneBeforeAllowTraffic
. AfterAllowTraffic
Dopo il completamento dei test di convalida, la funzione di convalida Lambda CodeDeploy richiama e fornisce il risultato di o. Succeeded
Failed
Importante
L'implementazione è considerata fallita se non CodeDeploy viene notificata dalla funzione di convalida Lambda entro un'ora.
Prima di richiamare una funzione Lambda hook, il server deve ricevere una notifica dell'ID di distribuzione e dell'ID di esecuzione dell'hook dell'evento lifecycle utilizzando il comando. putLifecycleEventHookExecutionStatus
Di seguito è riportato un esempio di funzione hook Lambda scritta in 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 sezione 'hooks' per una EC2 distribuzione /On-Premises
Argomenti
Elenco degli hook relativi agli eventi del ciclo di vita
Un hook di distribuzione EC2 /On-Premises viene eseguito una volta per distribuzione su un'istanza. Puoi specificare uno o più script da eseguire in un hook. Ogni hook per un evento del ciclo di vita viene specificato con una stringa su una riga separata. Di seguito sono riportate le descrizioni degli hook disponibili per l'uso nel file. AppSpec
Per informazioni sugli hook degli eventi del ciclo di vita validi per i vari tipi di rollback e di distribuzione, consulta Disponibilità di Lifecycle Event Hook.
-
ApplicationStop
— Questo evento del ciclo di vita della distribuzione si verifica anche prima del download della revisione dell'applicazione. Puoi specificare gli script per questo evento per arrestare correttamente l'applicazione o rimuovere i pacchetti attualmente installati in preparazione di una distribuzione. Il AppSpec file e gli script utilizzati per questo evento del ciclo di vita della distribuzione provengono dalla precedente revisione dell'applicazione distribuita correttamente.Nota
Un AppSpec file non esiste su un'istanza prima della distribuzione su di essa. Per questo motivo, l'hook
ApplicationStop
non viene eseguito la prima volta che lo distribuisci all'istanza. Puoi utilizzare l'hookApplicationStop
la seconda volta che distribuisci a un'istanza.Per determinare la posizione dell'ultima revisione dell'applicazione distribuita correttamente, l' CodeDeploy agente cerca la posizione elencata nel file.
Questo file si trova nella:deployment-group-id
_last_successful_install/opt/codedeploy-agent/deployment-root/deployment-instructions
cartella su EC2 istanze Amazon Linux, Ubuntu Server e RHEL Amazon.C:\ProgramData\Amazon\CodeDeploy\deployment-instructions
cartella su EC2 istanze Amazon di Windows Server.Per risolvere i problemi di una distribuzione che non riesce durante l'evento del ciclo di vita della distribuzione
ApplicationStop
, consulta Risoluzione dei problemi relativi a un evento non riuscito o ApplicationStop AfterBlockTraffic relativo al BeforeBlockTraffic ciclo di vita dell'implementazione. -
DownloadBundle
— Durante questo evento del ciclo di vita della distribuzione, l' CodeDeploy agente copia i file di revisione dell'applicazione in una posizione temporanea:/opt/codedeploy-agent/deployment-root/
cartella su EC2 istanze Amazon Linux, Ubuntu Server e RHEL Amazon.deployment-group-id
/deployment-id
/deployment-archiveC:\ProgramData\Amazon\CodeDeploy\
cartella su EC2 istanze Amazon di Windows Server.deployment-group-id
\deployment-id
\deployment-archiveQuesto evento è riservato all' CodeDeploy agente e non può essere utilizzato per eseguire script.
Per risolvere i problemi di una distribuzione che non riesce durante l'evento del ciclo di vita della distribuzione
DownloadBundle
, consulta Risoluzione dei problemi relativi a un evento del ciclo di vita di DownloadBundle distribuzione non riuscito con UnknownError: not open-for reading. -
BeforeInstall
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per attività di preinstallazione, come la decrittografia dei file e la creazione di un backup della versione corrente. -
Install
— Durante questo evento del ciclo di vita della distribuzione, l' CodeDeployagente copia i file di revisione dalla posizione temporanea alla cartella di destinazione finale. Questo evento è riservato all' CodeDeploy agente e non può essere utilizzato per eseguire script. -
AfterInstall
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per attività come la configurazione dell'applicazione o la modifica delle autorizzazioni dei file. -
ApplicationStart
— In genere si utilizza questo evento del ciclo di vita della distribuzione per riavviare i servizi che sono stati interrotti durante l'operazione.ApplicationStop
-
ValidateService
— Questo è l'ultimo evento del ciclo di vita della distribuzione. È utilizzato per verificare se la distribuzione è stata completata. -
BeforeBlockTraffic
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per eseguire attività sulle istanze prima che vengano cancellate da un sistema di bilanciamento del carico.Per risolvere i problemi di una distribuzione che non riesce durante l'evento del ciclo di vita della distribuzione
BeforeBlockTraffic
, consulta Risoluzione dei problemi relativi a un evento non riuscito o ApplicationStop AfterBlockTraffic relativo al BeforeBlockTraffic ciclo di vita dell'implementazione. -
BlockTraffic
— Durante questo evento del ciclo di vita della distribuzione, al traffico Internet viene impedito l'accesso alle istanze che attualmente servono traffico. Questo evento è riservato all' CodeDeploy agente e non può essere utilizzato per eseguire script. -
AfterBlockTraffic
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per eseguire attività sulle istanze dopo che queste sono state cancellate dal rispettivo sistema di bilanciamento del carico.Per risolvere i problemi di una distribuzione che non riesce durante l'evento del ciclo di vita della distribuzione
AfterBlockTraffic
, consulta Risoluzione dei problemi relativi a un evento non riuscito o ApplicationStop AfterBlockTraffic relativo al BeforeBlockTraffic ciclo di vita dell'implementazione. -
BeforeAllowTraffic
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per eseguire attività sulle istanze prima che vengano registrate con un sistema di bilanciamento del carico. -
AllowTraffic
— Durante questo evento del ciclo di vita della distribuzione, il traffico Internet può accedere alle istanze dopo una distribuzione. Questo evento è riservato all' CodeDeploy agente e non può essere utilizzato per eseguire script. -
AfterAllowTraffic
— È possibile utilizzare questo evento del ciclo di vita della distribuzione per eseguire attività sulle istanze dopo che sono state registrate con un sistema di bilanciamento del carico.
Disponibilità di Lifecycle Event Hook
La tabella seguente elenca gli hook degli eventi del ciclo di vita disponibili per ogni scenario di distribuzione e rollback.
Nome dell'evento del ciclo di vita | Implementazione del lancio di Auto Scaling¹ | Implementazione della terminazione con Auto Scaling¹ | Implementazione sul posto² | Distribuzione blue/verde: istanze originali | Distribuzione blue/verde: istanze di sostituzione | Rollback blue/verde: istanze originali | Rollback blue/verde: istanze di sostituzione |
---|---|---|---|---|---|---|---|
ApplicationStop | ✓ | ✓ | ✓ | ✓ | |||
DownloadBundle³ | ✓ | ✓ | ✓ | ||||
BeforeInstall | ✓ | ✓ | ✓ | ||||
Installa ³ | ✓ | ✓ | ✓ | ||||
AfterInstall | ✓ | ✓ | ✓ | ||||
ApplicationStart | ✓ | ✓ | ✓ | ||||
ValidateService | ✓ | ✓ | ✓ | ||||
BeforeBlockTraffic | ✓ | ✓ | ✓ | ✓ | |||
BlockTraffic³ | ✓ | ✓ | ✓ | ✓ | |||
AfterBlockTraffic | ✓ | ✓ | ✓ | ✓ | |||
BeforeAllowTraffic | ✓ | ✓ | ✓ | ✓ | |||
AllowTraffic³ | ✓ | ✓ | ✓ | ✓ | |||
AfterAllowTraffic | ✓ | ✓ | ✓ | ✓ | |||
¹ Per informazioni sulle implementazioni di Amazon EC2 Auto Scaling, consulta. Come funziona Amazon EC2 Auto Scaling con CodeDeploy ² Si applica anche al rollback di una distribuzione sul posto. ³ Riservato alle operazioni CodeDeploy . Non può essere utilizzato per l'esecuzione di script. |
Esegui l'ordine degli hook in una distribuzione
Implementazioni di lancio di Auto Scaling
Durante una distribuzione con avvio di Auto Scaling, CodeDeploy esegue gli event hook nell'ordine seguente.
Per ulteriori informazioni sulle implementazioni di avvio di Auto Scaling, vedere. Come funziona Amazon EC2 Auto Scaling con CodeDeploy

Nota
Gli eventi di avvio DownloadBundleAllowTraffic, installazione e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma. Tuttavia, è possibile modificare la 'files'
sezione del AppSpec file per specificare cosa viene installato durante l'evento di installazione.
Implementazioni di terminazione con Auto Scaling
Durante una distribuzione con terminazione di Auto Scaling, CodeDeploy esegue gli event hook nell'ordine seguente.
Per ulteriori informazioni sulle implementazioni di terminazione con Auto Scaling, vedere. Abilitazione delle implementazioni di terminazione durante gli eventi scale-in di Auto Scaling

Nota
Gli eventi di inizio e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma. BlockTraffic
Distribuzioni locali
In una distribuzione in loco, incluso il rollback di una distribuzione in loco, gli hook degli eventi vengono eseguiti nel seguente ordine:
Nota
Per le distribuzioni sul posto, i sei hook relativi al blocco e all'autorizzazione del traffico si applicano solo se si specifica un Classic Load Balancer, Application Load Balancer o Network Load Balancer di Elastic Load Balancing nel gruppo di distribuzione.

Nota
Gli eventi di avvio DownloadBundle, installazione e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma. Tuttavia, è possibile modificare la 'files'
sezione del AppSpec file per specificare cosa viene installato durante l'evento di installazione.
Distribuzioni blu/verde
In una distribuzione blu/verde, gli hook degli eventi vengono eseguiti nell'ordine seguente:

Nota
Gli eventi di avvio DownloadBundleBlockTrafficAllowTraffic, installazione e fine della distribuzione non possono essere gestiti tramite script, motivo per cui appaiono in grigio in questo diagramma. Tuttavia, è possibile modificare la sezione 'files' del AppSpec file per specificare cosa viene installato durante l'evento di installazione.
Struttura della sezione «ganci»
La sezione 'hooks'
ha la seguente struttura:
hooks:
deployment-lifecycle-event-name
: - location:script-location
timeout:timeout-in-seconds
runas:user-name
Puoi includere i seguenti elementi in una voce hook dopo il nome dell'evento del ciclo di vita della distribuzione:
- posizione
-
Obbligatorio. La posizione nel bundle del file di script per la revisione. La posizione degli script specificati nella
hooks
sezione è relativa alla radice del pacchetto di revisione dell'applicazione. Per ulteriori informazioni, consulta Pianifica una revisione per CodeDeploy. - timeout
-
Facoltativo. Il numero di secondi dedicati all'esecuzione dello script prima che venga considerato non riuscito. Il valore predefinito è 3600 secondi (1 ora).
Nota
3600 secondi (1 ora) è il periodo di tempo massimo consentito per l'esecuzione di uno script per ogni evento del ciclo di vita della distribuzione. Se gli script superano questo limite, la distribuzione viene interrotta e la distribuzione nell'istanza non riesce. Assicurati che il numero totale di secondi specificato per timeout per tutti gli script in ogni evento del ciclo di vita della distribuzione non superi questo limite.
- runas
-
Facoltativo. L'utente da rappresentare quando viene eseguito lo script. Per impostazione predefinita, questo è l' CodeDeploy agente in esecuzione sull'istanza. CodeDeploy non memorizza le password, quindi l'utente non può essere impersonato se l'utente runas necessita di una password. Questo elemento si applica solo alle istanze di Amazon Linux e Ubuntu Server.
Riferimento ai file negli script hook
Se stai collegando uno script a un evento CodeDeploy del ciclo di vita come descritto in AppSpec sezione 'hooks' e desideri fare riferimento a un file (ad esempio,helper.sh
) nello script, dovrai specificare utilizzando: helper.sh
-
(Consigliato) Un percorso assoluto. Per informazioni, consulta Utilizzo di percorsi assoluti.
-
Un percorso relativo. Per informazioni, consulta Utilizzo di percorsi relativi.
Utilizzo di percorsi assoluti
Per fare riferimento a un file usando il suo percorso assoluto, puoi:
-
Specificate il percorso assoluto
files
nella sezione del AppSpec file, nelladestination
proprietà. Quindi, specifica lo stesso percorso assoluto nel tuo script hook. Per ulteriori informazioni, consulta AppSpec sezione 'file' (solo distribuzioni EC2 /On-Premises). -
Specificate un percorso assoluto dinamico nello script hook. Per ulteriori informazioni, consulta Deployment archive location.
Posizione dell'archivio di distribuzione
Durante l'evento del DownloadBundleciclo di vita, l' CodeDeploy agente estrae la revisione per la distribuzione in una directory con il seguente formato:
root-directory
/deployment-group-id
/deployment-id
/deployment-archive
Il root-directory
parte del percorso è sempre impostata sul valore predefinito mostrato nella tabella seguente o è controllata dall'impostazione di configurazione. :root_dir
Per ulteriori informazioni sulle impostazioni di configurazione, vedereCodeDeploy riferimento alla configurazione dell'agente.
Piattaforma Agent | Directory principale predefinita |
---|---|
Linux: tutte le distribuzioni rpm |
/opt/codedeploy-agent/deployment-root
|
Ubuntu Server: tutte le distribuzioni deb |
/opt/codedeploy-agent/deployment-root
|
Windows Server |
%ProgramData%\Amazon\CodeDeploy
|
Dai tuoi script hook, puoi accedere all'archivio di distribuzione corrente utilizzando il percorso della directory principale e le variabili di ambiente DEPLOYMENT_ID
andDEPLOYMENT_GROUP_ID
. Per ulteriori informazioni sulle variabili che è possibile utilizzare, vedereDisponibilità delle variabili di ambiente per gli hook.
Ad esempio, ecco come è possibile accedere a un data.json
file che si trova nella radice della revisione su 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)
Come altro esempio, ecco come è possibile accedere a un data.json
file che si trova alla radice della revisione utilizzando Powershell su 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)
Utilizzo di percorsi relativi
Per fare riferimento a un file utilizzando il relativo percorso, è necessario conoscere la directory di lavoro dell' CodeDeploy agente. I percorsi dei file sono relativi a questa directory.
La tabella seguente mostra la directory di lavoro per ogni piattaforma supportata dall' CodeDeploy agente.
Piattaforma dell'agente | Metodo di gestione dei processi | Directory di lavoro per gli script degli eventi del ciclo di vita |
---|---|---|
Linux: tutte le distribuzioni rpm | systemd (impostazione predefinita) |
/
|
init.d — Scopri di più |
/opt/codedeploy-agent
|
|
Ubuntu Server: tutte le distribuzioni debian | tutto |
/opt/codedeploy-agent
|
Windows Server | non applicabile |
C:\Windows\System32
|
Disponibilità delle variabili di ambiente per gli hook
Durante ogni evento del ciclo di vita della distribuzione, gli script di hook possono accedere alle seguenti variabili di ambiente:
- APPLICATION_NAME
-
Il nome dell'applicazione CodeDeploy che fa parte della distribuzione corrente (ad esempio,
WordPress_App
). - DEPLOYMENT_ID
-
L'ID CodeDeploy è stato assegnato alla distribuzione corrente (ad esempio,
d-AB1CDEF23
). - DEPLOYMENT_GROUP_NAME
-
Il nome del gruppo di distribuzione CodeDeploy che fa parte della distribuzione corrente (ad esempio,
WordPress_DepGroup
). - DEPLOYMENT_ GROUP _ID
-
L'ID del gruppo di distribuzione CodeDeploy che fa parte della distribuzione corrente (ad esempio,
b1a2189b-dd90-4ef5-8f40-4c1c5EXAMPLE
). - LIFECYCLE_EVENT
-
Il nome dell'evento del ciclo di vita della distribuzione corrente (ad esempio
AfterInstall
).
Queste variabili di ambiente sono locali per ciascun evento del ciclo di vita della distribuzione.
Sono disponibili variabili di ambiente aggiuntive per agganciare gli script a seconda dell'origine del pacchetto di distribuzione:
Pacchetto da Amazon S3
-
BUNDLE_BUCKET
Il nome del bucket Amazon S3 da cui è stato scaricato il pacchetto di distribuzione (ad esempio,).
my-s3-bucket
-
BUNDLE_KEY
La chiave oggetto per il pacchetto scaricato all'interno del bucket Amazon S3 (ad esempio,).
WordPress_App.zip
-
BUNDLE_VERSION
La versione dell'oggetto per il pacchetto (ad esempio,).
3sL4kqtJlcpXroDTDmJ+rmSpXd3dIbrHY+MTRCxf3vjVBH40Nr8X8gdRQBpUMLUo
Questa variabile viene impostata solo se il bucket Amazon S3 ha abilitato il controllo delle versioni degli oggetti. -
BUNDLE_ETAG
L'object etag per il pacchetto (ad esempio,).
b10a8db164e0754105b7a99be72e3fe5-4
Bundle da GitHub
-
BUNDLE_COMMIT
L'hash di SHA256 commit del pacchetto generato da Git (ad esempio,
d2a84f4b8b650937ec8f73cd8be2c74add5a911ba64df27458ed8229da804a26
).
Lo script seguente modifica la porta di ascolto su un HTTP server Apache su 9090 anziché 80 se il valore di DEPLOYMENT_ GROUP _ NAME è uguale a. Staging
Questo script devono essere richiamato durante l'evento del ciclo di vita della distribuzione BeforeInstall
:
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/Listen 80/Listen 9090/g' /etc/httpd/conf/httpd.conf fi
Il seguente esempio di script modifica il livello di dettaglio dei messaggi registrati nel relativo registro degli errori da avviso a debug se il valore della variabile di NAME ambiente DEPLOYMENT_ GROUP _ è uguale a. Staging
Questo script devono essere richiamato durante l'evento del ciclo di vita della distribuzione BeforeInstall
:
if [ "$DEPLOYMENT_GROUP_NAME" == "Staging" ] then sed -i -e 's/LogLevel warn/LogLevel debug/g' /etc/httpd/conf/httpd.conf fi
Il seguente esempio di script sostituisce il testo nella pagina Web specificata con il testo che visualizza il valore di queste variabili di ambiente. Questo script devono essere richiamato durante l'evento del ciclo di vita della distribuzione 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()
Esempio di Hooks
Ecco un esempio della voce hooks che specifica due hook per l'evento del ciclo di vita AfterInstall
:
hooks: AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 - location: Scripts/PostDeploy.sh timeout: 180
Lo script Scripts/RunResourceTests.sh
viene eseguito durante la fase AfterInstall
del processo di distribuzione. La distribuzione non ha esito positivo se lo script impiega più di 180 secondi (3 minuti) per l'esecuzione.
La posizione degli script specificati nella sezione "hooks" è relativa alla radice del bundle di revisione dell'applicazione. Nel precedente esempio, un file denominato RunResourceTests.sh
si trova in una directory denominata Scripts
. La directory Scripts
si trova al livello di radice del bundle. Per ulteriori informazioni, consulta Pianifica una revisione per CodeDeploy.