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 distribuzione Amazon ECS
Ecco un esempio di AppSpec file scritto in YAML per la distribuzione di un servizio Amazon ECS.
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"
Questa è una versione dell'esempio precedente scritto in formato 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'applicazione Amazon ECS aggiornata venga installata nel set di attività sostitutivo, viene eseguita la funzione
LambdaFunctionToValidateBeforeInstallLambda chiamata. -
Dopo aver installato l'applicazione Amazon ECS aggiornata nel set di attività sostitutivo, ma prima che riceva traffico, viene eseguita la funzione
LambdaFunctionToValidateAfterInstallLambda chiamata. -
Dopo che l'applicazione Amazon ECS sul set di attività sostitutivo inizia a ricevere traffico dal listener di test, viene eseguita la funzione Lambda chiamata.
LambdaFunctionToValidateAfterTestTrafficStartsÈ 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. -
Dopo aver completato tutti i test di convalida nell'
AfterAllowTestTraffichook e prima che il traffico di produzione venga inviato all'applicazione Amazon ECS aggiornata, viene eseguita la funzione Lambda chiamata.LambdaFunctionToValidateBeforeAllowingProductionTraffic -
Dopo che il traffico di produzione è stato inviato all'applicazione Amazon ECS aggiornata sul set di attività sostitutivo, viene eseguita la funzione
LambdaFunctionToValidateAfterAllowingProductionTrafficLambda chiamata.
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 in 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"
Questa è una versione dell'esempio precedente scritto in formato 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
myLambdaFunctionchiamata alla versione 2, esegui una funzione LambdaLambdaFunctionToValidateBeforeTrafficShiftchiamata che convalida che la distribuzione sia pronta per avviare lo spostamento del traffico. -
Se
LambdaFunctionToValidateBeforeTrafficShiftha 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
myLambdaFunctionchiamata alla versione 2, esegui una funzione LambdaLambdaFunctionToValidateAfterTrafficShiftchiamata 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 un'istanza Amazon Linux, Ubuntu Server o RHEL.
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.txtnel percorso/webapps/Config/config.txt. -
Copia in modo ricorsivo tutti i file nella directory
sourcenella directory/webapps/myApp. -
Esegui lo script che si trova in
Scripts/RunResourceTests.shcon un timeout di 180 secondi (3 minuti). -
Esegui lo script che si trova in
Scripts/RunFunctionalTests.shcon un timeout di 3600 secondi (1 ora). -
Esegui lo script che si trova in
Scripts/MonitorService.shcome utentecodedeploycon un timeout di 3600 secondi (1 ora).