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 Esempio di file
Questo argomento fornisce AppSpec file di esempio per una distribuzione AWS Lambda e EC2 /On-Premises.
Argomenti
AppSpec Esempio di file per una ECS distribuzione Amazon
Ecco un esempio di AppSpec file scritto YAML per la distribuzione di un ECS servizio Amazon.
version: 0.0 Resources: - TargetService: Type: AWS::ECS::Service Properties: TaskDefinition: "arn:aws:ecs:us-east-1:111222333444:task-definition/my-task-definition-family-name:1" LoadBalancerInfo: ContainerName: "SampleApplicationName" ContainerPort: 80 # Optional properties PlatformVersion: "LATEST" NetworkConfiguration: AwsvpcConfiguration: Subnets: ["subnet-1234abcd","subnet-5678abcd"] SecurityGroups: ["sg-12345678"] AssignPublicIp: "ENABLED" CapacityProviderStrategy: - Base: 1 CapacityProvider: "FARGATE_SPOT" Weight: 2 - Base: 0 CapacityProvider: "FARGATE" Weight: 1 Hooks: - BeforeInstall: "LambdaFunctionToValidateBeforeInstall" - AfterInstall: "LambdaFunctionToValidateAfterInstall" - AfterAllowTestTraffic: "LambdaFunctionToValidateAfterTestTrafficStarts" - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeAllowingProductionTraffic" - AfterAllowTraffic: "LambdaFunctionToValidateAfterAllowingProductionTraffic"
Ecco una versione dell'esempio precedente scritta in. JSON
{ "version": 0.0, "Resources": [ { "TargetService": { "Type": "AWS::ECS::Service", "Properties": { "TaskDefinition": "arn:aws:ecs:us-east-1:111222333444:task-definition/my-task-definition-family-name:1", "LoadBalancerInfo": { "ContainerName": "SampleApplicationName", "ContainerPort": 80 }, "PlatformVersion": "LATEST", "NetworkConfiguration": { "AwsvpcConfiguration": { "Subnets": [ "subnet-1234abcd", "subnet-5678abcd" ], "SecurityGroups": [ "sg-12345678" ], "AssignPublicIp": "ENABLED" } }, "CapacityProviderStrategy": [ { "Base" : 1, "CapacityProvider" : "FARGATE_SPOT", "Weight" : 2 }, { "Base" : 0, "CapacityProvider" : "FARGATE", "Weight" : 1 } ] } } } ], "Hooks": [ { "BeforeInstall": "LambdaFunctionToValidateBeforeInstall" }, { "AfterInstall": "LambdaFunctionToValidateAfterInstall" }, { "AfterAllowTestTraffic": "LambdaFunctionToValidateAfterTestTrafficStarts" }, { "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeAllowingProductionTraffic" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterAllowingProductionTraffic" } ] }
Ecco è la sequenza degli eventi durante la distribuzione:
-
Prima che l'ECSapplicazione Amazon aggiornata venga installata nel set di attività sostitutivo, viene eseguita la funzione Lambda chiamata
LambdaFunctionToValidateBeforeInstall
. -
Dopo aver installato l'ECSapplicazione Amazon aggiornata nel set di attività sostitutivo, ma prima che riceva traffico, viene eseguita la funzione Lambda chiamata
LambdaFunctionToValidateAfterInstall
. -
Dopo che l'ECSapplicazione Amazon sul set di attività sostitutivo inizia a ricevere traffico dal listener di test, viene eseguita la funzione
LambdaFunctionToValidateAfterTestTrafficStarts
Lambda chiamata. È probabile che questa funzione esegua test di convalida per determinare se la distribuzione deve continuare. Se non specifichi un listener di test nel tuo gruppo di distribuzione, questo hook verrà ignorato. -
Una volta completati tutti i test di convalida nell'
AfterAllowTestTraffic
hook e prima che il traffico di produzione venga inviato all'ECSapplicazione Amazon aggiornata, viene eseguita la funzioneLambdaFunctionToValidateBeforeAllowingProductionTraffic
Lambda chiamata. -
Dopo che il traffico di produzione è stato inviato all'ECSapplicazione Amazon aggiornata nel set di attività sostitutivo, viene eseguita la funzione Lambda chiamata
LambdaFunctionToValidateAfterAllowingProductionTraffic
.
Le funzioni Lambda eseguite durante qualsiasi hook possono eseguire test di convalida o raccogliere metriche sul traffico.
AppSpec Esempio di file per una distribuzione AWS Lambda
Ecco un esempio di AppSpec file scritto YAML per la distribuzione di una versione della funzione Lambda.
version: 0.0 Resources: - myLambdaFunction: Type: AWS::Lambda::Function Properties: Name: "myLambdaFunction" Alias: "myLambdaFunctionAlias" CurrentVersion: "1" TargetVersion: "2" Hooks: - BeforeAllowTraffic: "LambdaFunctionToValidateBeforeTrafficShift" - AfterAllowTraffic: "LambdaFunctionToValidateAfterTrafficShift"
Ecco una versione dell'esempio precedente scritta in. JSON
{ "version": 0.0, "Resources": [{ "myLambdaFunction": { "Type": "AWS::Lambda::Function", "Properties": { "Name": "myLambdaFunction", "Alias": "myLambdaFunctionAlias", "CurrentVersion": "1", "TargetVersion": "2" } } }], "Hooks": [{ "BeforeAllowTraffic": "LambdaFunctionToValidateBeforeTrafficShift" }, { "AfterAllowTraffic": "LambdaFunctionToValidateAfterTrafficShift" } ] }
Ecco è la sequenza degli eventi durante la distribuzione:
-
Prima di spostare il traffico dalla versione 1 di una funzione Lambda
myLambdaFunction
chiamata alla versione 2, esegui una funzione LambdaLambdaFunctionToValidateBeforeTrafficShift
chiamata che convalida che la distribuzione sia pronta per avviare lo spostamento del traffico. -
Se
LambdaFunctionToValidateBeforeTrafficShift
ha restituito il codice di uscita 0 (operazione completata), inizia il trasferimento del traffico alla versione 2 dimyLambdaFunction
. La configurazione della distribuzione per questa distribuzione determina la velocità di trasferimento del traffico. -
Una volta completato lo spostamento del traffico dalla versione 1 di una funzione Lambda
myLambdaFunction
chiamata alla versione 2, esegui una funzione LambdaLambdaFunctionToValidateAfterTrafficShift
chiamata che convalida il completamento della distribuzione.
AppSpec Esempio di file per una distribuzione /On-Premises EC2
Ecco un esempio di AppSpec file per una distribuzione locale su Amazon Linux, Ubuntu Server o un'RHEListanza.
Nota
Le distribuzioni su istanze di Windows Server non supportano l'elemento. runas
Se si esegue la distribuzione su istanze di Windows Server, non includerlo nel file. AppSpec
version: 0.0 os: linux files: - source: Config/config.txt destination: /webapps/Config - source: source destination: /webapps/myApp hooks: BeforeInstall: - location: Scripts/UnzipResourceBundle.sh - location: Scripts/UnzipDataBundle.sh AfterInstall: - location: Scripts/RunResourceTests.sh timeout: 180 ApplicationStart: - location: Scripts/RunFunctionalTests.sh timeout: 3600 ValidateService: - location: Scripts/MonitorService.sh timeout: 3600 runas: codedeployuser
Per un'istanza di Windows Server, passa os: linux
a. os: windows
Inoltre, devi specificare i percorsi completi per destination
(ad esempio, c:\temp\webapps\Config
e c:\temp\webapps\myApp
). Non includere l'elemento runas
.
Ecco è la sequenza degli eventi durante la distribuzione:
-
Esegui lo script presente in
Scripts/UnzipResourceBundle.sh
. -
Se lo script precedente ha restituito il codice di uscita 0 (operazione completata), esegui lo script presente in
Scripts/UnzipDataBundle.sh
. -
Copia il file dal percorso
Config/config.txt
nel percorso/webapps/Config/config.txt
. -
Copia in modo ricorsivo tutti i file nella directory
source
nella directory/webapps/myApp
. -
Esegui lo script che si trova in
Scripts/RunResourceTests.sh
con un timeout di 180 secondi (3 minuti). -
Esegui lo script che si trova in
Scripts/RunFunctionalTests.sh
con un timeout di 3600 secondi (1 ora). -
Esegui lo script che si trova in
Scripts/MonitorService.sh
come utentecodedeploy
con un timeout di 3600 secondi (1 ora).