

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

# Strumenti di script di piattaforma per i tuoi ambienti Elastic Beanstalk
<a name="custom-platforms-scripts"></a>

Questo argomento descrive gli strumenti che AWS Elastic Beanstalk forniscono ambienti che utilizzano piattaforme Amazon Linux. Gli strumenti si trovano nelle EC2 istanze Amazon degli ambienti Elastic Beanstalk.

## get-config
<a name="custom-platforms-scripts.get-config"></a>

Utilizza `get-config` lo strumento per recuperare i valori delle variabili di ambiente in testo semplice e altre informazioni sulla piattaforma e sull'istanza. Questo strumento è disponibile in `/opt/elasticbeanstalk/bin/get-config`.

### comandi get-config
<a name="custom-platforms-scripts.get-config.commands"></a>

Ogni comando dello strumento `get-config` restituisce un tipo specifico di informazioni. Utilizza la sintassi seguente per eseguire i comandi di uno qualsiasi degli strumenti.

```
$ /opt/elasticbeanstalk/bin/get-config command [ options ]
```

L'esempio seguente esegue il comando `environment`:

```
$ /opt/elasticbeanstalk/bin/get-config environment -k PORT
```

A seconda del comando e delle opzioni scelte, lo strumento restituisce un oggetto (JSON o YAML) con coppie chiave-valore o un singolo valore.

Puoi eseguire il test `get-config` utilizzando SSH per connetterti a un' EC2 istanza nel tuo ambiente Elastic Beanstalk.

**Nota**  
Quando si esegue `get-config` per il test, alcuni comandi potrebbero richiedere privilegi utente root per accedere alle informazioni sottostanti. Se viene visualizzato un errore di autorizzazione di accesso, eseguire nuovamente il comando in `sudo`.  
Non è necessario aggiungere `sudo` quando si utilizza lo strumento negli script distribuiti nell'ambiente. Elastic Beanstalk esegue tutti gli script come utente root.

Le sezioni seguenti descrivono i comandi degli strumenti.

#### optionsettings: opzioni di configurazione
<a name="custom-platforms-scripts.get-config.commands.optionsettings"></a>

Il comando `get-config optionsettings` restituisce un oggetto che elenca le opzioni di configurazione impostate nell'ambiente e utilizzate dalla piattaforma sulle istanze di ambiente. Sonoorganizzati per spazio dei nomi.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings
{"aws:elasticbeanstalk:application:environment":{"JDBC_CONNECTION_STRING":""},"aws:elasticbeanstalk:container:tomcat:jvmoptions":{"JVM Options":"","Xms":"256m","Xmx":"256m"},"aws:elasticbeanstalk:environment:proxy":{"ProxyServer":"nginx","StaticFiles":[""]},"aws:elasticbeanstalk:healthreporting:system":{"SystemType":"enhanced"},"aws:elasticbeanstalk:hostmanager":{"LogPublicationControl":"false"}}
```

Per visualizzare un determinato valore dell'opzione di configurazione, utilizza l'opzione `--namespace` (`-n`) per specificare uno spazio dei nomi e l'opzione `--option-name` (`-o`) per specificare il nome di un'opzione.

```
$ /opt/elasticbeanstalk/bin/get-config optionsettings -n aws:elasticbeanstalk:container:php:phpini -o memory_limit
256M
```

#### environment: proprietà dell'ambiente
<a name="custom-platforms-scripts.get-config.commands.environment"></a>

Il `get-config environment` comando restituisce un oggetto contenente un elenco di proprietà dell'ambiente, incluse quelle configurate dall'utente e fornite da Elastic Beanstalk. Le proprietà configurate dall'utente sono definite nella [console](environments-cfg-softwaresettings.md#environments-cfg-softwaresettings-console) come *testo normale* o con l'opzione di configurazione namespace. [aws:elasticbeanstalk:application:environment](command-options-general.md#command-options-general-elasticbeanstalkapplicationenvironment)

```
$ /opt/elasticbeanstalk/bin/get-config environment
{"JDBC_CONNECTION_STRING":"","RDS_PORT":"3306","RDS_HOSTNAME":"anj9aw1b0tbj6b.cijbpanmxz5u.us-west-2.rds.amazonaws.com","RDS_USERNAME":"testusername","RDS_DB_NAME":"ebdb","RDS_PASSWORD":"testpassword1923851"}
```

Ad esempio, Elastic Beanstalk fornisce proprietà di ambiente per la connessione a un'istanza database di Amazon RDS integrata (ad esempio `RDS_HOSTNAME`). Queste proprietà di connessione RDS vengono visualizzate nell'output di `get-config environment`. Tuttavia, non vengono visualizzate nell'output di `get-config optionsettings`. Questo perché non sono state impostate nelle opzioni di configurazione.

Per visualizzare una proprietà dell'ambiente specifico, utilizza l'opzione `--key` (`-k`) per specificare una chiave di proprietà.

```
$ /opt/elasticbeanstalk/bin/get-config environment -k TESTPROPERTY
testvalue
```

**Nota**  
Lo `get-config` strumento non è in grado di recuperare [variabili di ambiente](AWSHowTo.secrets.env-vars.md) che memorizzano segreti. Per ulteriori informazioni su come recuperare a livello di codice i valori dagli archivi segreti o di parametri, vedere o. [Utilizzo di Secrets Manager](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.Secrets-Manager) [Utilizzo dell'archivio parametri di Systems Manager](AWSHowTo.secrets.Secrets-Manager-and-Parameter-Store.md#AWSHowTo.secrets.SSM-parmameter-store)

#### container: valori di configurazione dell'istanza
<a name="custom-platforms-scripts.get-config.commands.container"></a>

Il comando `get-config container` restituisce un oggetto che elenca i valori di configurazione della piattaforma e dell'ambiente per le istanze di ambiente. 

L'esempio seguente mostra l'output del comando su un ambiente Tomcat di Amazon Linux 2.

```
$ /opt/elasticbeanstalk/bin/get-config container
{"common_log_list":["/var/log/eb-engine.log","/var/log/eb-hooks.log"],"default_log_list":["/var/log/nginx/access.log","/var/log/nginx/error.log"],"environment_name":"myenv-1da84946","instance_port":"80","log_group_name_prefix":"/aws/elasticbeanstalk","proxy_server":"nginx","static_files":[""],"xray_enabled":"false"}
```

Per restituire il valore di una chiave specifica, utilizzare l'opzione `--key` (`-k`) per specificare la chiave.

```
$ /opt/elasticbeanstalk/bin/get-config container -k environment_name
myenv-1da84946
```

#### addons: valori di configurazione del componente aggiuntivo
<a name="custom-platforms-scripts.get-config.commands.addons"></a>

Il comando `get-config addons` restituisce un oggetto contenente le informazioni di configurazione dei componenti aggiuntivi dell'ambiente. Utilizzalo per recuperare la configurazione di un database Amazon RDS associato all'ambiente.

```
$ /opt/elasticbeanstalk/bin/get-config addons
{"rds":{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}}
```

È possibile limitare il risultato in due modi. Per recuperare i valori per un componente aggiuntivo specifico, utilizzare l'opzione `--add-on` (`-a`) per specificare il nome del componente aggiuntivo.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds
{"Description":"RDS Environment variables","env":{"RDS_DB_NAME":"ebdb","RDS_HOSTNAME":"ea13k2wimu1dh8i.c18mnpu5rwvg.us-east-2.rds.amazonaws.com","RDS_PASSWORD":"password","RDS_PORT":"3306","RDS_USERNAME":"user"}}
```

Per restituire il valore di una chiave specifica all'interno di un componente aggiuntivo, aggiungere l'opzione `--key` (`-k`) per specificare la chiave.

```
$ /opt/elasticbeanstalk/bin/get-config addons -a rds -k RDS_DB_NAME
ebdb
```

#### platformconfig: valori di configurazione costanti
<a name="custom-platforms-scripts.get-config.commands.platformconfig"></a>

Il comando `get-config platformconfig` restituisce un oggetto contenente informazioni di configurazione della piattaforma che sono costanti per la versione della piattaforma. L'output è lo stesso in tutti gli ambienti che eseguono la stessa versione della piattaforma. L'oggetto di output del comando ha due oggetti incorporati:
+ `GeneralConfig`: contiene informazioni che sono costanti per le versioni più recenti di tutte le ramificazioni della piattaforma Amazon Linux 2 e Amazon Linux 2023.
+ `PlatformSpecificConfig`: contiene informazioni che sono costanti e specifiche per la versione della piattaforma.

L'esempio seguente mostra l'output del comando in un ambiente che utilizza il ramo della piattaforma *Tomcat 8.5 che esegue Corretto 11*.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig
{"GeneralConfig":{"AppUser":"webapp","AppDeployDir":"/var/app/current/","AppStagingDir":"/var/app/staging/","ProxyServer":"nginx","DefaultInstancePort":"80"},"PlatformSpecificConfig":{"ApplicationPort":"8080","JavaVersion":"11","TomcatVersion":"8.5"}}
```

Per restituire il valore di una chiave specifica, utilizzare l'opzione `--key` (`-k`) per specificare la chiave. Queste chiavi sono univoche tra i due oggetti incorporati. Non è necessario specificare l'oggetto che contiene la chiave.

```
$ /opt/elasticbeanstalk/bin/get-config platformconfig -k AppStagingDir
/var/app/staging/
```

### opzioni di output get-config
<a name="custom-platforms-scripts.get-config.global"></a>

Utilizzare l'opzione `--output` per specificare il formato dell'oggetto di output. I valori validi sono `JSON` (default) e `YAML`. Questa è un'opzione globale. Devi specificarlo prima del nome del comando.

Nell'esempio seguente vengono restituiti i valori delle opzioni di configurazione in formato YAML.

```
$ /opt/elasticbeanstalk/bin/get-config --output YAML optionsettings
aws:elasticbeanstalk:application:environment:
  JDBC_CONNECTION_STRING: ""
aws:elasticbeanstalk:container:tomcat:jvmoptions:
  JVM Options: ""
  Xms: 256m
  Xmx: 256m
aws:elasticbeanstalk:environment:proxy:
  ProxyServer: nginx
  StaticFiles:
        - ""
aws:elasticbeanstalk:healthreporting:system:
  SystemType: enhanced
aws:elasticbeanstalk:hostmanager:
  LogPublicationControl: "false"
```

## pkg-repo
<a name="custom-platforms-scripts.pkg-repo"></a>

**Nota**  
Lo strumento `pkg-repo` non è disponibile per ambienti basati su piattaforme Amazon Linux 2023. Tuttavia, è possibile applicare manualmente gli aggiornamenti del pacchetto e del sistema operativo a un' AL2istanza 023. Per ulteriori informazioni, consulta [Gestione dei pacchetti e degli aggiornamenti del sistema operativo](https://docs.aws.amazon.com/linux/al2023/ug/managing-repos-os-updates.html) nella *Guida per l'utente di Amazon Linux 2023*

In alcune circostanze urgenti, potrebbe essere necessario aggiornare EC2 le istanze Amazon con una patch di sicurezza Amazon Linux 2 che non è ancora stata rilasciata con le versioni richieste della piattaforma Elastic Beanstalk. Non è possibile eseguire un aggiornamento manuale sugli ambienti Elastic Beanstalk per impostazione predefinita. Questo perché le versioni della piattaforma sono bloccate su una versione specifica del repository Amazon Linux 2. Questo blocco garantisce che le istanze eseguano versioni software supportate e coerenti. Per casi urgenti, lo strumento `pkg-repo` consente una soluzione alternativa per aggiornare manualmente i pacchetti yum su Amazon Linux 2 se è necessaria l'installazione in un ambiente prima del rilascio in una nuova versione della piattaforma Elastic Beanstalk.

La strumento `pkg-repo` su piattaforme Amazon Linux 2 offre la possibilità di sbloccare i repository di pacchetti `yum`. In questo modo è possibile eseguire manualmente un **yum update** per una patch di sicurezza. Viceversa, è possibile seguire l'aggiornamento utilizzando lo strumento per bloccare i repository di pacchetti yum per evitare ulteriori aggiornamenti. Lo `pkg-repo` strumento è disponibile nella `/opt/elasticbeanstalk/bin/pkg-repo` directory di tutte le EC2 istanze negli ambienti Elastic Beanstalk.

Le modifiche che utilizzano lo `pkg-repo` strumento vengono apportate solo sull' EC2 istanza in cui viene utilizzato lo strumento. Non influiscono su altre istanze o impediscono aggiornamenti futuri dell'ambiente. Gli esempi forniti più avanti in questo argomento spiegano come applicare le modifiche a tutte le istanze chiamando i comandi `pkg-repo` dagli script e dai file di configurazione.

**avvertimento**  
Questo strumento è sconsigliato per la maggior parte degli utenti. Eventuali modifiche manuali applicate a una versione della piattaforma sbloccata sono considerate fuori banda. Questa opzione è valida solo per gli utenti in circostanze urgenti che sono in grado di accettare i seguenti rischi:  
Non è possibile avere la certezza che i pacchetti siano coerenti in tutte le istanze degli ambienti.
Non è possibile avere la certezza che gli ambienti che vengono modificati utilizzando lo strumento `pkg-repo` funzionino correttamente. Non sono stati testati e verificati sulle piattaforme supportate da Elastic Beanstalk.
Consigliamo vivamente di applicare le best practice che includono piani di test e backout. Per facilitare le best practice, puoi utilizzare la console Elastic Beanstalk e l'EB CLI per clonare un ambiente e scambiare un ambiente. URLs Per ulteriori informazioni sull'utilizzo di queste operazioni, consulta [Implementazione blu/verde](using-features.CNAMESwap.md) nel capitolo *Gestione degli ambienti* di questa guida.

Se prevedi di modificare manualmente i file di configurazione del repository yum, esegui lo strumento `pkg-repo` prima. Lo strumento `pkg-repo` potrebbe non funzionare come previsto in un ambiente Amazon Linux 2 con file di configurazione del repository yum modificati manualmente. Questo perché lo strumento potrebbe non riconoscere le modifiche apportate alla configurazione.

Per ulteriori informazioni sull'archivio di pacchetti Amazon Linux, consulta l'argomento [Package repository](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html#package-repository) nella *Amazon EC2 User* Guide.

### comandi pkg-repo
<a name="custom-platforms-scripts.pkg-repo.commands"></a>

Utilizza la sintassi seguente per eseguire i comandi dello strumento `pkg-repo`.

```
$ /opt/elasticbeanstalk/bin/pkg-repo command [options]
```

I comandi `pkg-repo` da eseguire sono i seguenti:
+ **lock**: blocca il repository di pacchetti `yum` su una versione specifica
+ **unlock**: sblocca il repository di pacchetti `yum` su una versione specifica
+ **status**: elenca tutti i repository di pacchetti `yum` e il relativo stato di blocco corrente
+ **help**: mostra la guida generale o la guida per un comando

Le opzioni si applicano ai comandi come segue:
+ `lock`, `unlock` e `status `: opzioni: `-h`, `--help` o nessuna (predefinito).
+ `help`: opzioni: `lock`, `unlock`, `status` o nessuna (predefinito).



L'esempio seguente esegue il comando **unlock**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo unlock
Amazon Linux 2 core package repo successfully unlocked
Amazon Linux 2 extras package repo successfully unlocked
```

L'esempio seguente esegue il comando **lock**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo lock
Amazon Linux 2 core package repo successfully locked
Amazon Linux 2 extras package repo successfully locked
```

L'esempio seguente esegue il comando **status**:

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo status
Amazon Linux 2 core package repo is currently UNLOCKED
Amazon Linux 2 extras package repo is currently UNLOCKED
```

L'esempio seguente esegue il comando **help** per il comando **lock**.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help lock
```

L'esempio seguente esegue il comando **help** per lo strumento `pkg-repo`.

```
$ sudo /opt/elasticbeanstalk/bin/pkg-repo help
```

Puoi eseguire il test di `pkg-repo` utilizzando SSH per connetterti a un'istanza nell'ambiente Elastic Beanstalk. Un'opzione SSH è il comando della CLI di EB [**eb ssh**](eb3-ssh.md).

**Nota**  
Lo strumento `pkg-repo` richiede privilegi utente root per l'esecuzione. Se viene visualizzato un errore di autorizzazione di accesso, eseguire nuovamente il comando in `sudo`.  
Non è necessario aggiungere `sudo` quando si utilizza lo strumento negli script o nei file di configurazione distribuiti nell'ambiente. Elastic Beanstalk esegue tutti gli script come utente root.

### esempi pkg-repo
<a name="custom-platforms-scripts.pkg-repo.examples"></a>

La sezione precedente fornisce esempi da riga di comando per testare una singola EC2 istanza di un ambiente Elastic Beanstalk. Questo approccio può essere utile per i test. Tuttavia, aggiorna solo un'istanza alla volta, quindi non è pratico per applicare modifiche a tutte le istanze in un ambiente.

Un approccio più pragmatico è quello di utilizzare script di [hook della piattaforma](platforms-linux-extend.hooks.md) o un file di configurazione [`.ebextensions`](ebextensions.md) per applicare le modifiche a tutte le istanze in modo coerente.

L'esempio seguente chiama `pkg-repo` da un file di configurazione nella cartella [`.ebextensions`](ebextensions.md). Elastic Beanstalk esegue i comandi nel file `update_package.config` quando distribuisci il bundle di origine dell'applicazione.

```
.ebextensions
└── update_package.config
```

Per ricevere la versione più recente del pacchetto *docker*, questa configurazione specifica il pacchetto *docker* nel comando **yum update**.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update docker -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

Questa configurazione non specifica alcun pacchetto nel comando **yum update**. Di conseguenza, vengono applicati tutti gli aggiornamenti disponibili.

```
### update_package.config ###

commands:
  update_package:
    command: |
      /opt/elasticbeanstalk/bin/pkg-repo unlock
      yum update -y
      /opt/elasticbeanstalk/bin/pkg-repo lock
      yum clean all -y
      rm -rf /var/cache/yum
```

L'esempio seguente chiama `pkg-repo` da uno script bash come un [hook della piattaforma](platforms-linux-extend.hooks.md). Elastic Beanstalk esegue il file di script `update_package.sh` che si trova nella sottodirectory `prebuild`.

```
.platform
└── hooks
    └── prebuild
        └── update_package.sh
```

Per ricevere la versione più recente del pacchetto *docker*, questo script specifica il pacchetto *docker* nel comando **yum update**. Se il nome del pacchetto viene omesso, vengono applicati tutti gli aggiornamenti disponibili. L'esempio precedente del file di configurazione ne è la dimostrazione.

```
### update_package.sh ###

#!/bin/bash

/opt/elasticbeanstalk/bin/pkg-repo unlock
yum update docker -y
/opt/elasticbeanstalk/bin/pkg-repo lock
yum clean all -y
rm -rf /var/cache/yum
```

## download-source-bundle (solo AMI Amazon Linux)
<a name="custom-platforms-scripts.download"></a>

Per i rami della piattaforma AMI Amazon Linux (precedenti ad Amazon Linux 2), Elastic Beanstalk fornisce uno strumento aggiuntivo, `download-source-bundle`. Usalo per scaricare il codice sorgente dell'applicazione durante la distribuzione della piattaforma. Questo strumento è disponibile in `/opt/elasticbeanstalk/bin/download-source-bundle`.

Lo script di esempio `00-unzip.sh` si trova nella cartella `appdeploy/pre` nelle istanze di ambiente. Illustra come usare `download-source-bundle` per scaricare il codice sorgente dell'applicazione nella cartella `/opt/elasticbeanstalk/deploy/appsource` durante la distribuzione.