

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

# Personalizzazione di software su server Windows
<a name="customize-containers-windows-ec2"></a>

È possibile che tu voglia personalizzare e configurare il software da cui dipende la tua applicazione. Questi file potrebbero essere dipendenze richieste dall'applicazione, ad esempio servizi o pacchetti aggiuntivi che devono essere eseguiti. Per informazioni generali sulla personalizzazione e sulla configurazione degli ambienti Elastic Beanstalk, consulta [Configurazione degli ambienti Elastic Beanstalk](customize-containers.md).

**Nota**  
YAML si basa sulla coerenza del rientro. Utilizza lo stesso livello di rientro quando sostituisci del contenuto in un file di configurazione di esempio e assicurati che il tuo editor di testo utilizzi gli spazi e non le tabulazioni per il rientro.

I file di configurazione supportano le seguenti chiavi utilizzabili con il server Windows in cui è in esecuzione l'applicazione.

**Topics**
+ [Pacchetti](#windows-packages)
+ [Origini](#windows-sources)
+ [File](#windows-files)
+ [Comandi](#windows-commands)
+ [Servizi](#windows-services)
+ [Comandi del container](#windows-container-commands)

Le chiavi sono elaborate nell'ordine in cui sono elencate qui.

**Nota**  
Le versioni della piattaforma .NET (senza versione) meno recenti non sono in grado di elaborare i file di configurazione nell'ordine corretto. Ulteriori informazioni sono disponibili in [Migrazione tra le versioni principali della piattaforma server Windows di Elastic Beanstalk](dotnet-v2migration.md).

Controlla gli [eventi](using-features.events.md) del tuo ambiente durante lo sviluppo e il test dei file di configurazione. Elastic Beanstalk ignora un file di configurazione contenente errori di convalida, ad esempio una chiave non valida, e non elabora le altre chiavi contenute nello stesso file. In questi casi, Elastic Beanstalk aggiunge un avviso nel log degli eventi.

## Pacchetti
<a name="windows-packages"></a>

Utilizza la chiave `packages` per scaricare e installare pacchetti di componenti e applicazioni.

Negli ambienti Windows, Elastic Beanstalk supporta il download e l'installazione di pacchetti MSI. Gli ambienti Linux supportano programmi di gestione dei pacchetti aggiuntivi. Per maggiori dettagli, consultare [Pacchetti](customize-containers-ec2.md#linux-packages) nella pagina *Personalizzazione di software su server Linux*.

Puoi fare riferimento a qualsiasi posizione esterna, come un oggetto Amazon Simple Storage Service (Amazon S3), a condizione che l'URL sia pubblicamente accessibile.

Se si specificano diversi `msi:` pacchetti, il loro ordine di installazione non è garantito.

### Sintassi
<a name="windows-packages-syntax"></a>

Specifica un nome di tua scelta come nome del pacchetto e un URL per un percorso di file MSI come valore. È possibile specificare più pacchetti nella chiave `msi:`.

```
packages: 
  msi:
    {{package name}}: {{package url}}
    ...
```

### Esempi
<a name="windows-packages-snippet"></a>

L'esempio seguente specifica un URL per scaricare **mysql** da `https://dev.mysql.com/`.

```
packages:
  msi:
    mysql: https://dev.mysql.com/get/Downloads/Connector-Net/mysql-connector-net-8.0.11.msi
```

L'esempio seguente specifica un oggetto Amazon S3 come posizione del file MSI.

```
packages:
  msi:
    mymsi: https://{{amzn-s3-demo-bucket}}.s3.amazonaws.com/{{myobject}}.msi
```

## Origini
<a name="windows-sources"></a>

Utilizza la chiave `sources` per scaricare un file di archivio da un URL pubblico e decomprimerlo in una directory di destinazione sull'istanza EC2.

### Sintassi
<a name="windows-sources-syntax"></a>

```
sources:  
  {{target directory}}: {{location of archive file}}
```

### Formati supportati
<a name="windows-sources-support"></a>

In ambienti Windows, Elastic Beanstalk supporta il formato ZIP. Gli ambienti Linux supportano formati aggiuntivi. Per maggiori dettagli, consultare [Origini](customize-containers-ec2.md#linux-sources) nella pagina *Personalizzazione di software su server Linux*.

Puoi fare riferimento a qualsiasi posizione esterna, come un oggetto Amazon Simple Storage Service (Amazon S3), a condizione che l'URL sia pubblicamente accessibile.

### Esempio
<a name="windows-sources-example"></a>

L'esempio seguente scarica un file.zip pubblico da Amazon S3 e lo decomprime. `c:/myproject/myapp`

```
sources:  
  "c:/myproject/myapp": https://{{amzn-s3-demo-bucket}}.s3.amazonaws.com/{{myobject}}.zip
```

## File
<a name="windows-files"></a>

Utilizza la chiave `files` per creare file sull'istanza EC2. Il contenuto può essere inline nel file di configurazione o essere estratto da un URL. I file sono scritti su disco in ordine lessicografico. Per scaricare file privati da Amazon S3, fornisci un profilo dell'istanza per l'autorizzazione.

### Sintassi
<a name="windows-files-syntax"></a>

```
files:  
  "{{target file location on disk}}":
    source: {{URL}}
    authentication: {{authentication name}}:

  "{{target file location on disk}}":
    content: |
      {{this is my content}}
    encoding: {{encoding format}}
```

### Opzioni
<a name="windows-files-options"></a>

`content`  
(Facoltativa) Una stringa. 

`source`  
(Facoltativa) L'URL da cui il file è caricato. Questa opzione non può essere specificata con la chiave contenuto.

`encoding`  
(Facoltativa) Il formato di codifica. Questa opzione è utilizzata solo per un valore di chiave contenuto fornito. Il valore predefinito è `plain`.  
Valori validi: `plain` \| `base64`

`authentication`  
(Facoltativo) Il nome di un [metodo di autenticazione CloudFormation](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-authentication.html) da utilizzare. Puoi aggiungere metodi di autenticazione ai metadati del gruppo Auto Scaling con la chiave Resources.

### Esempi
<a name="windows-files-snippet"></a>

L'esempio seguente mostra due modi per fornire i contenuti di un file: da un URL o inline nel file di configurazione.

```
files:
  "{{c:\\targetdirectory\\targetfile.txt}}":
    source: {{http://foo.bar/myfile}}
 
  "{{c:/targetdirectory/targetfile.txt}}":
    content: |
      {{# this is my file}}
      {{# with content}}
```

**Nota**  
Se utilizzi una barra rovesciata (\\) nel percorso di file, devi anteporvi un'altra barra rovesciata (il carattere escape) come mostrato nell'esempio precedente.

L'esempio seguente utilizza la chiave Resources per aggiungere un metodo di autenticazione denominato S3Auth e lo utilizza per scaricare un file privato da Amazon S3:

```
files:
  "c:\\targetdirectory\\targetfile.zip":
    source: {{https://elasticbeanstalk-us-east-2-123456789012.s3.amazonaws.com/prefix/myfile.zip}}
    authentication: {{S3Auth}}

Resources:
  AWSEBAutoScalingGroup:
    Metadata:
      AWS::CloudFormation::Authentication:
        {{S3Auth}}:
          type: "s3"
          s: ["{{amzn-s3-demo-bucket}}"]
          roleName:
            "Fn::GetOptionSetting":
              Namespace: "aws:autoscaling:launchconfiguration"
              OptionName: "IamInstanceProfile"
              DefaultValue: "aws-elasticbeanstalk-ec2-role"
```

## Comandi
<a name="windows-commands"></a>

Utilizza la chiave `commands` per eseguire comandi sull'istanza EC2. I comandi vengono elaborati in ordine alfabetico per nome e vengono eseguiti prima della configurazione dell'applicazione e del server Web e prima che il file della versione dell'applicazione venga estratto.

I comandi specificati sono eseguiti come utente amministratore.

Per risolvere i problemi emersi con i comandi, è possibile trovare il relativo output nei [log delle istanze](using-features.logging.md).

### Sintassi
<a name="windows-commands-syntax"></a>

```
commands:
  {{command name}}: 
    command: {{command to run}}
```

### Opzioni
<a name="windows-commands-options"></a>

`command`  
Una matrice o una stringa che specifica il comando da eseguire. Se utilizzi una matrice, non è necessario utilizzare un carattere di escape negli spazi o racchiudere i parametri di comando tra virgolette.

`cwd`  
(Facoltativa) La directory di lavoro. Per impostazione predefinita, Elastic Beanstalk tenta di trovare la posizione della directory del tuo progetto. Se non la trova, utilizza `c:\Windows\System32` come percorso di default.

`env`  
(Facoltativa) Imposta variabili di ambiente per il comando. Questa proprietà non aggiunge l'ambiente esistente ma lo sovrascrive.

`ignoreErrors`  
(Facoltativa) Un valore booleano che determina se altri comandi devono essere eseguiti nel caso in cui il comando nella chiave `command` non riesca (restituisce un valore diverso da zero). Imposta questo valore su `true` per continuare a eseguire i comandi anche se il comando non riesce. Impostalo su `false` per interrompere l'esecuzione dei comandi se il comando non riesce. Il valore predefinito è `false`.

`test`  
(Facoltativo) Un comando che deve restituire il valore `true` (codice di uscita 0) per consentire a Elastic Beanstalk di elaborare il comando contenuto nella chiave `command`.

`waitAfterCompletion`  
(Facoltativa) L'intervallo in secondi tra il completamento del comando e l'esecuzione del comando successivo. Il valore predefinito è **60** secondi. Puoi anche specificare. **forever**  
I riavvii del sistema durante la distribuzione non sono supportati. Se il sistema si riavvia a seguito di un comando, l'inizializzazione dell'istanza avrà esito negativo, causando il fallimento della distribuzione.  
Come soluzione alternativa, è possibile utilizzarla [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config)per pianificare i riavvii dopo il completamento della distribuzione.

### Esempio
<a name="windows-commands-snippet"></a>

L'esempio seguente salva l'output del comando `set` nel file specificato. Se c'è un comando successivo, viene eseguito da Elastic Beanstalk subito dopo il completamento di questo comando. Se tale comando richiede un riavvio, Elastic Beanstalk riavvia l'istanza subito dopo il completamento del comando.

```
commands:
  test: 
    command: set > {{c:\\myapp\\set.txt}}
    waitAfterCompletion: {{0}}
```

## Servizi
<a name="windows-services"></a>

Utilizza la chiave `services` per definire i servizi che devono essere avviati o arrestati all'avvio dell'istanza. La chiave `services` consente inoltre di specificare le dipendenze in origini, pacchetti e file, di modo che se è necessario un riavvio a seguito dell'installazione dei file, Elastic Beanstalk esegue il riavvio del servizio.

### Sintassi
<a name="windows-services-syntax"></a>

```
services: 
  windows:
    {{name of service}}:
      files:
        - "{{file name}}"
      sources: 
        - "{{directory}}"	
      packages: 
        {{name of package manager}}:
            "{{package name}}[: {{version}}]"
      commands: 
        - "{{name of command}}"
```

### Opzioni
<a name="windows-services-options"></a>

`ensureRunning`  
(Facoltativo) Imposta su `true` per continuare a eseguire il servizio dopo la chiusura di Elastic Beanstalk.  
Imposta su `false` per continuare a eseguire il servizio dopo la chiusura di Elastic Beanstalk.  
Ometti la chiave per non apportare modifiche allo stato del servizio.

`enabled`  
(Facoltativa) Imposta su `true` per eseguire automaticamente il servizio all'avvio.  
Imposta su `false` per non eseguire automaticamente il servizio all'avvio.  
Ometti la chiave per non apportare modifiche a questa proprietà.

`files`  
Un elenco di file. Se Elastic Beanstalk ne modifica uno direttamente tramite il blocco di file, il servizio viene riavviato.

`sources`  
Un elenco di directory. Se Elastic Beanstalk espande un archivio in una di queste directory, il servizio viene riavviato.

`packages`  
La mappatura del programma di gestione dei pacchetti a un elenco di nomi di pacchetto. Se Elastic Beanstalk installa o aggiorna uno di questi pacchetti, il servizio viene riavviato.

`commands`  
Un elenco di nomi di comando. Se Elastic Beanstalk esegue il comando specificato, il servizio viene riavviato.

### Esempio
<a name="windows-services-snippet"></a>

```
services: 
  windows:
    myservice:
      enabled: true
      ensureRunning: true
```

## Comandi del container
<a name="windows-container-commands"></a>

Utilizza la chiave `container_commands` per eseguire comandi che modificano il codice sorgente dell'applicazione. I comandi di contenitore vengono eseguiti dopo la configurazione dell'applicazione e del server Web e l'estrazione dell'archivio delle versioni dell'applicazione, ma prima della distribuzione della versione dell'applicazione. I comandi non di contenitore e altre operazioni di personalizzazione vengono eseguiti prima dell'estrazione del codice sorgente dell'applicazione.

I comandi di contenitore vengono eseguiti a partire dalla directory di gestione temporanea, dove viene estratto il codice sorgente prima di essere distribuito al server di applicazioni. Qualsiasi modifica apportata al codice sorgente nella directory di gestione temporanea con un comando di contenitore verrà inclusa al momento della distribuzione del codice sorgente nella posizione finale.

Per risolvere i problemi emersi con i comandi del container, è possibile trovare il relativo output nei [log delle istanze](using-features.logging.md).

Utilizza l'opzione `leader_only` per eseguire il comando solo su una singola istanza oppure configura un oggetto `test` per eseguire il comando esclusivamente quando un comando di test restituisce `true`. I comandi di contenitore "leader-only" vengono eseguiti solo durante la creazione dell'ambiente e le distribuzioni, mentre altri comandi e operazioni di personalizzazione di server sono eseguiti a ogni provisioning o aggiornamento di un'istanza. I comandi di contenitore "leader-only" non vengono eseguiti a causa di modifiche alla configurazione di avvio, ad esempio nel caso di modifica dell'ID AMI o del tipo di istanza.

### Sintassi
<a name="windows-container-commands-syntax"></a>

```
container_commands:
  {{name of container_command}}:
    command: {{command to run}}
```

### Opzioni
<a name="windows-container-commands-options"></a>

`command`  
Una stringa o una matrice di stringhe da eseguire.

`env`  
(Facoltativa) Imposta le variabili di ambiente prima di eseguire il comando, ignorando qualsiasi valore esistente.

`cwd`  
(Facoltativa) La directory di lavoro. Per impostazione predefinita, questa è la directory di gestione temporanea dell'applicazione decompressa.

`leader_only`  
(Facoltativa) Esegui il comando solo su una singola istanza scelta da Elastic Beanstalk. I comandi di contenitore "leader-only" vengono eseguiti prima di altri comandi di contenitore. Un comando può essere "leader-only" o avere un oggetto `test`, ma non entrambe le cose (`leader_only` è prioritario).

`test`  
(Facoltativa) Esegui un comando di test che deve restituire `true` per eseguire il comando di contenitore. Un comando può essere "leader-only" o avere un oggetto `test`, ma non entrambe le cose (`leader_only` è prioritario).

`ignoreErrors`  
(Facoltativa) Esegui correttamente le distribuzioni se il comando di container restituisce un valore diverso da 0 (riuscito). Imposta su `true` per attivarla.

`waitAfterCompletion`  
(Facoltativa) L'intervallo in secondi tra il completamento del comando e l'esecuzione del comando successivo. Il valore predefinito è **60** secondi. È inoltre possibile specificare. **forever**  
I riavvii del sistema durante la distribuzione non sono supportati. Se il sistema si riavvia a seguito di un comando, l'inizializzazione dell'istanza avrà esito negativo, causando il fallimento della distribuzione.  
Come soluzione alternativa, è possibile utilizzarla [https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/instance-configuration/windows-configuration/scheduled-restart.config)per pianificare i riavvii dopo il completamento della distribuzione.

### Esempio
<a name="windows-container-commands-snippet"></a>

L'esempio seguente salva l'output del comando `set` nel file specificato. Elastic Beanstalk esegue il comando su un'istanza e riavvia l'istanza subito dopo il completamento del comando.

```
container_commands:
  foo:
    command: set > {{c:\\myapp\\set.txt}}
    leader_only: true
    waitAfterCompletion: {{0}}
```