

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
<a name="reference-appspec-file-example"></a>

Questo argomento fornisce AppSpec file di esempio per una distribuzione AWS Lambda e EC2/locale.

**Topics**
+ [AppSpec Esempio di file per una distribuzione Amazon ECS](#appspec-file-example-ecs)
+ [AppSpec Esempio di file per una distribuzione AWS Lambda](#appspec-file-example-lambda)
+ [AppSpec Esempio di file per una distribuzione EC2/on-premise](#appspec-file-example-server)

## AppSpec Esempio di file per una distribuzione Amazon ECS
<a name="appspec-file-example-ecs"></a>

 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:

1.  Prima che l'applicazione Amazon ECS aggiornata venga installata nel set di attività sostitutivo, viene eseguita la funzione `LambdaFunctionToValidateBeforeInstall` Lambda chiamata. 

1.  Dopo aver installato l'applicazione Amazon ECS aggiornata nel set di attività sostitutivo, ma prima che riceva traffico, viene eseguita la funzione `LambdaFunctionToValidateAfterInstall` Lambda chiamata. 

1.  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. 

1.  Una volta completati tutti i test di convalida nell'`AfterAllowTestTraffic`hook e prima che il traffico di produzione venga inviato all'applicazione Amazon ECS aggiornata, viene eseguita la funzione Lambda chiamata. `LambdaFunctionToValidateBeforeAllowingProductionTraffic` 

1.  Dopo che il traffico di produzione è stato inviato all'applicazione Amazon ECS aggiornata sul set di attività sostitutivo, viene eseguita la funzione `LambdaFunctionToValidateAfterAllowingProductionTraffic` Lambda 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
<a name="appspec-file-example-lambda"></a>

 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:

1. Prima di spostare il traffico dalla versione 1 di una funzione Lambda `myLambdaFunction` chiamata alla versione 2, esegui una funzione Lambda `LambdaFunctionToValidateBeforeTrafficShift` chiamata che convalida che la distribuzione sia pronta per avviare lo spostamento del traffico.

1. Se `LambdaFunctionToValidateBeforeTrafficShift` ha restituito il codice di uscita 0 (operazione completata), inizia il trasferimento del traffico alla versione 2 di `myLambdaFunction`. La configurazione della distribuzione per questa distribuzione determina la velocità di trasferimento del traffico.

1. Una volta completato lo spostamento del traffico dalla versione 1 di una funzione Lambda `myLambdaFunction` chiamata alla versione 2, esegui una funzione Lambda `LambdaFunctionToValidateAfterTrafficShift` chiamata che convalida il completamento della distribuzione.

## AppSpec Esempio di file per una distribuzione EC2/on-premise
<a name="appspec-file-example-server"></a>

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:

1. Esegui lo script presente in `Scripts/UnzipResourceBundle.sh`.

1. Se lo script precedente ha restituito il codice di uscita 0 (operazione completata), esegui lo script presente in `Scripts/UnzipDataBundle.sh`.

1. Copia il file dal percorso `Config/config.txt` nel percorso `/webapps/Config/config.txt`.

1. Copia in modo ricorsivo tutti i file nella directory `source` nella directory `/webapps/myApp`.

1. Esegui lo script che si trova in `Scripts/RunResourceTests.sh` con un timeout di 180 secondi (3 minuti).

1. Esegui lo script che si trova in `Scripts/RunFunctionalTests.sh` con un timeout di 3600 secondi (1 ora).

1. Esegui lo script che si trova in `Scripts/MonitorService.sh` come utente `codedeploy` con un timeout di 3600 secondi (1 ora).