Strumenti di script della piattaforma - AWS Elastic Beanstalk

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 della piattaforma

In questo argomento vengono descritti gli strumenti AWS Elastic Beanstalk disponibili per ambienti che utilizzano versioni della piattaforma Amazon Linux. Gli strumenti sono disponibili nelle istanze Amazon EC2 degli ambienti Elastic Beanstalk.

get-config

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

comandi get-config

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 di get-config utilizzando SSH per connetterti a un'istanza EC2 nell'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.

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

Il comando get-config environment restituisce un oggetto contenente un elenco di proprietà dell'ambiente. Questi includono sia le proprietà configurate dall'utente che quelle fornite da Elastic Beanstalk.

$ /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

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

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

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

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

Nota

Lo strumento pkg-repo non è disponibile per ambienti basati su piattaforme Amazon Linux 2023. Tuttavia, puoi applicare manualmente gli aggiornamenti del pacchetto e del sistema operativo a un'istanza AL2023. Per ulteriori informazioni, consulta Gestione dei pacchetti e degli aggiornamenti del sistema operativo nella Guida per l'utente di Amazon Linux 2023

In alcune circostanze urgenti, potrebbe essere necessario aggiornare le istanze Amazon EC2 con una patch di sicurezza Amazon Linux 2 che non è ancora stata rilasciata con le versioni della piattaforma Elastic Beanstalk richieste. 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 strumento è pkg-repo disponibile nella directory /opt/elasticbeanstalk/bin/pkg-repo di tutte le istanze EC2 degli ambienti Elastic Beanstalk.

Le modifiche con lo strumento pkg-repo viene creato solo sull'istanza EC2 su 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 la CLI di EB per clonare un ambiente e scambiare gli URL dell'ambiente. Per ulteriori informazioni sull'utilizzo di queste operazioni, consulta Implementazione blu/verde 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 sul repository dei pacchetti Amazon Linux, consulta l'argomento Archivio di pacchetti nella Guida per l'utente di Amazon EC2 User Guide per le istanze Linux.

comandi pkg-repo

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.

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

La sezione precedente fornisce esempi della riga di comando per il test su una singola istanza EC2 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 o un file di configurazione .ebextensions 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. 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. 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)

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.