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 Linux
Questa sezione descrive il tipo di informazioni che puoi includere in un file di configurazione per personalizzare il software sulle istanze che EC2 eseguono Linux. Per informazioni generali sulla personalizzazione e la configurazione degli ambienti Elastic Beanstalk, consulta Configurazione degli ambienti Elastic Beanstalk. Per informazioni sulla personalizzazione del software sulle EC2 istanze che eseguono Windows, consulta. Personalizzazione di software su server Windows
È possibile che tu voglia personalizzare e configurare il software da cui dipende la tua applicazione. È possibile aggiungere comandi da eseguire durante il provisioning delle istanze, definire utenti e gruppi Linux e scaricare o creare direttamente file nelle istanze dell'ambiente. Questi file potrebbero essere dipendenze richieste dall'applicazione (ad esempio, pacchetti aggiuntivi dal repository yum) oppure file di configurazione, ad esempio file di configurazione come la sostituzione di un file di configurazione del proxy per sostituire impostazioni specifiche impostate in modo predefinito da Elastic Beanstalk).
Note
-
Sulle piattaforme Amazon Linux 2, invece di fornire file e comandi nei file di configurazione con estensione .ebextensions, si consiglia di utilizzare Buildfile. Procfile e gli hook di piattaforma quando possibile per configurare ed eseguire codice personalizzato sulle istanze dell'ambiente durante il provisioning delle istanze. Per i dettagli su questi meccanismi, consulta Estensione delle piattaforme Elastic Beanstalk Linux.
-
YAMLsi basa su un'indentazione coerente. 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 sul server Linux in cui è in esecuzione l'applicazione.
Chiavi
Le chiavi sono elaborate nell'ordine in cui sono elencate qui.
Controlla gli eventi 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
Puoi utilizzare la chiave packages
per scaricare e installare pacchetti di componenti e applicazioni.
Sintassi
packages:
name of package manager
:
package name
: version
...
name of package manager
:
package name
: version
...
...
È possibile specificare più pacchetti in ciascuna chiave del programma di gestione dei pacchetti.
Formati di pacchetto supportati
Elastic Beanstalk supporta attualmente i seguenti programmi di gestione dei pacchetti: yum, rubygems, python e rpm. I pacchetti sono elaborati nel seguente ordine: rpm, yum, quindi rubygems e python. Non vi è alcun ordine tra rubygems e Python. All'interno di ogni programma di gestione dei pacchetti, l'ordine di installazione non è garantito. Utilizza un programma di gestione dei pacchetti supportato dal sistema operativo in uso.
Nota
Elastic Beanstalk supporta due programmi di gestione dei pacchetti sottostanti per Python, ovvero pip ed easy_install. Tuttavia, nella sintassi del file di configurazione, devi specificare python
come nome del programma di gestione dei pacchetti. Quando si utilizza un file di configurazione per specificare un pacchetto Python manager, Elastic Beanstalk usa Python 2.7. Se la tua applicazione si basa su un'altra versione di Python, è possibile specificare i pacchetti da installare in un file requirements.txt
. Per ulteriori informazioni, consulta Specificazione delle dipendenze utilizzando un file dei requisiti su Elastic Beanstalk.
Specificazione delle versioni
In ogni programma di gestione dei pacchetti, ogni pacchetto è specificato come nome di pacchetto ed elenco di versioni. La versione può essere una stringa, un elenco di versioni oppure una stringa o un elenco vuoto. Una stringa o un elenco vuoto indica che deve essere utilizzata la versione più recente. Per rpm manager, la versione è specificata come percorso a un file su disco o a. URL I percorsi relativi non sono supportati.
Se specifichi una versione di un pacchetto, Elastic Beanstalk tenta di installare tale versione anche se una versione più recente del pacchetto è già installata sull'istanza. Se una versione più recente è già installata, la distribuzione non riesce. Solo alcuni programmi di gestione dei pacchetti supportano più versioni. Per ulteriori informazioni, consulta la documentazione del programma di gestione dei pacchetti utilizzato. Se non specifichi una versione e una versione del pacchetto è già installata, Elastic Beanstalk non installa una nuova versione, in quanto presuppone che intendi continuare a utilizzare la versione esistente.
Frammento di esempio
Il seguente frammento specifica una versione URL per rpm, richiede l'ultima versione a yum e la versione 0.10.2 di chef a rubygems.
packages:
yum:
libmemcached: []
ruby-devel: []
gcc: []
rpm:
epel: http://download.fedoraproject.org/pub/epel/5/i386/epel-release-5-4.noarch.rpm
rubygems:
chef: '0.10.2'
Gruppi
È possibile utilizzare la chiave per creare gruppi Linux/ e assegnare gruppi. groups
UNIX IDs Per creare un gruppo, aggiungi una nuova coppia chiave-valore che esegue la mappatura di un nuovo nome di gruppo a un ID di gruppo facoltativo. La chiave "groups" può contenere uno o più nomi di gruppo. La tabella seguente elenca le chiavi disponibili.
Sintassi
groups:
name of group
: {}
name of group
:
gid: "group id
"
Opzioni
gid
-
Un numero di ID di gruppo.
Se viene specificato un ID di gruppo e il nome di gruppo esiste già, la creazione del gruppo non riuscirà. Se un altro gruppo è associato a l'ID di gruppo specificato, il sistema operativo può rifiutare la creazione del gruppo.
Frammento di esempio
Il seguente frammento specifica un gruppo denominato groupOne senza assegnare un ID di gruppo e un gruppo denominato groupTwo che ha specificato un valore di ID di gruppo pari a 45.
groups:
groupOne: {}
groupTwo:
gid: "45
"
Utenti
È possibile utilizzare la users
chiave per creare utenti UNIX Linux/ sull'istanza. EC2
Sintassi
users:
name of user
:
groups:
- name of group
uid: "id of the user
"
homeDir: "user's home directory
"
Opzioni
uid
-
Un ID utente. Il processo di creazione non riesce se esiste un nome utente con un ID utente differente. Se l'ID utente è già assegnato a un utente esistente, il sistema operativo può respingere la richiesta di creazione.
groups
-
Un elenco di nomi di gruppo. L'utente viene aggiunto a ogni gruppo nell'elenco.
homeDir
-
La home directory dell'utente.
Gli utenti vengono creati come utenti di sistema non interattivo con una shell /sbin/nologin
. Questa è un'impostazione predefinita e non può essere modificata.
Frammento di esempio
users:
myuser:
groups:
- group1
- group2
uid: "50
"
homeDir: "/tmp
"
Origini
È possibile utilizzare la sources
chiave per scaricare un file di archivio da un archivio pubblico URL e decomprimerlo in una directory di destinazione sull'istanza. EC2
Sintassi
sources:
target directory
: location of archive file
Formati supportati
I formati supportati sono tar, tar+gzip, tar+bz2 e zip. Puoi fare riferimento a posizioni esterne come Amazon Simple Storage Service (Amazon S3) (ad esempiohttps://mybucket.s3.amazonaws.com/myobject
) purché siano accessibili URL al pubblico.
Frammento di esempio
L'esempio seguente scarica un file .zip pubblico da un bucket Amazon S3 e lo decomprime in /etc/myapp
:
sources:
/etc/myapp: https://mybucket.s3.amazonaws.com/myobject
Nota
Lo stesso percorso di destinazione non può essere riutilizzato da più estrazioni. L'estrazione di un'altra origine per lo stesso percorso di destinazione sostituirà i contenuti invece di accodarli.
File
Puoi usare la files
chiave per creare file sull'EC2istanza. Il contenuto può essere inserito nel file di configurazione oppure può essere estratto da un file. URL I file sono scritti su disco in ordine lessicografico.
Puoi utilizzare la chiave files
per scaricare file privati da Amazon S3 fornendo un profilo dell'istanza per l'autorizzazione.
Se il percorso del file specificato esiste già nell'istanza, il file esistente viene mantenuto con l'estensione .bak
aggiunta al suo nome.
Sintassi
files:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
source: URL
authentication: authentication name
:
"target file location on disk
":
mode: "six-digit octal value
"
owner: name of owning user for file
group: name of owning group for file
content: |
# this is my
# file content
encoding: encoding format
authentication: authentication name
:
Opzioni
content
-
Contenuto della stringa da aggiungere al file. Specifica
content
osource
, ma non entrambi. source
-
URLdi un file da scaricare. Specifica
content
osource
, ma non entrambi. encoding
-
Il formato di codifica della stringa specificata con l'opzione
content
.Valori validi:
plain
|base64
group
-
Il gruppo Linux proprietario del file.
owner
-
L'utente Linux proprietario del file.
mode
-
Valore ottale a sei cifre che rappresenta la modalità per questo file. Questa chiave non è supportata per i sistemi Windows. Usa le prime tre cifre per i collegamenti simbolici e le ultime tre per impostare le autorizzazioni. Per creare un collegamento simbolico, specifica
120
, dovexxx
xxx
definisce le autorizzazioni del file di destinazione. Per specificare le autorizzazioni per un file, usa le ultime tre cifre, ad esempio000644
. authentication
-
Il nome di un metodo di autenticazione AWS CloudFormation da utilizzare. Puoi aggiungere metodi di autenticazione ai metadati del gruppo Auto Scaling con la chiave Resources. Un esempio è fornito di seguito.
Frammento di esempio
files:
"/home/ec2-user/myfile" :
mode: "000755"
owner: root
group: root
source: http://foo.bar/myfile
"/home/ec2-user/myfile2" :
mode: "000755"
owner: root
group: root
content: |
this is my
file content
Esempio che utilizza un collegamento simbolico. Viene creato un collegamento /tmp/myfile2.txt
che punta al file esistente /tmp/myfile1.txt
.
files:
"/tmp/myfile2.txt" :
mode: "120400"
content: "/tmp/myfile1.txt"
L'esempio seguente utilizza la chiave Resources per aggiungere un metodo di autenticazione denominato S3Auth e utilizzato per scaricare un file privato da un bucket Amazon S3:
Resources:
AWSEBAutoScalingGroup:
Metadata:
AWS::CloudFormation::Authentication:
S3Auth
:
type: "s3"
buckets: ["elasticbeanstalk-us-west-2-123456789012
"]
roleName:
"Fn::GetOptionSetting":
Namespace: "aws:autoscaling:launchconfiguration"
OptionName: "IamInstanceProfile"
DefaultValue: "aws-elasticbeanstalk-ec2-role"
files:
"/tmp/data.json
" :
mode: "000755"
owner: root
group: root
authentication: "S3Auth
"
source: https://elasticbeanstalk-us-west-2-123456789012.s3-us-west-2.amazonaws.com/data.json
Comandi
È possibile utilizzare la commands
chiave per eseguire comandi sull'EC2istanza. I comandi vengono eseguiti prima che l'applicazione e il server Web vengano configurati e che il file di versione dell'applicazione venga estratto.
I comandi specificati vengono eseguiti come utente root ed elaborati in ordine alfabetico in base al nome. Per impostazione predefinita, i comandi vengono eseguiti nella directory principale. Per eseguire comandi da un'altra directory, utilizza l'opzione cwd
.
Per risolvere i problemi emersi con i comandi, è possibile trovare il relativo output nei log delle istanze.
Sintassi
commands:
command name
:
command: command to run
cwd: working directory
env:
variable name
: variable value
test: conditions for command
ignoreErrors: true
Opzioni
command
-
Un array (raccolta di sequenze di blocchi
nella YAML sintassi) o una stringa che specifica il comando da eseguire. Alcune note importanti: -
Se utilizzi una stringa, non devi racchiuderla tra virgolette. Se utilizzi le virgolette, applica un carattere di escape alle occorrenze dello stesso tipo di virgolette.
-
Se utilizzi una matrice, non è necessario utilizzare un carattere di escape negli spazi o racchiudere i parametri di comando tra virgolette. Ogni elemento della matrice è un singolo argomento del comando. Non utilizzare un array per specificare più comandi.
I seguenti esempi sono tutti equivalenti:
commands: command1: command: git commit -m "This is a comment." command2: command: "git commit -m \"This is a comment.\"" command3: command: 'git commit -m "This is a comment."' command4: command: - git - commit - -m - This is a comment.
Per specificare più comandi, utilizza un blocco scalare letterale
, come mostrato nel seguente esempio. commands: command block: command: | git commit -m "This is a comment." git push
-
env
-
(Facoltativa) Imposta variabili di ambiente per il comando. Questa proprietà non aggiunge l'ambiente esistente ma lo sovrascrive.
cwd
-
(Facoltativa) La directory di lavoro. Se questa opzione non è specificata, i comandi vengono eseguiti dalla directory principale (/).
test
-
(Facoltativo) Un comando che deve restituire il valore
true
(codice di uscita 0) per consentire a Elastic Beanstalk di elaborare il comando, ad esempio uno script shell, contenuto nella chiavecommand
. 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 sutrue
per continuare a eseguire i comandi anche se il comando non riesce. Impostalo sufalse
per interrompere l'esecuzione dei comandi se il comando non riesce. Il valore predefinito èfalse
.
Frammento di esempio
L'esempio di frammento seguente esegue uno script python.
commands:
python_install:
command: myscript.py
cwd: /home/ec2-user
env:
myvarname: myvarvalue
test: "[ -x /usr/bin/python ]"
Servizi
Puoi utilizzare 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, in modo che, se richiesto a causa del file installati, Elastic Beanstalk esegue il riavvio del servizio.
Sintassi
services:
sysvinit:
name of service
:
enabled: "true"
ensureRunning: "true"
files:
- "file name
"
sources:
- "directory
"
packages:
name of package manager
:
"package name
[: version
]"
commands:
- "name of command
"
Opzioni
ensureRunning
-
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
-
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.
Frammento di esempio
Di seguito viene riportato una esempio di frammento:
services:
sysvinit:
myservice:
enabled: true
ensureRunning: true
Comandi del container
Puoi utilizzare 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 specificati vengono eseguiti come utente root ed elaborati in ordine alfabetico in base al nome. 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.
Nota
L'output dei comandi del container viene registrato nel log delle istanze cfn-init-cmd.log
. Per ulteriori informazioni sul recupero e la visualizzazione dei log delle istanze, consulta Visualizzazione dei log dalle istanze Amazon. EC2
Puoi utilizzare leader_only
per eseguire il comando solo su una singola istanza o puoi configurare 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 del contenitore solo per i leader non vengono eseguiti a causa di modifiche alla configurazione di avvio, come una modifica dell'ID o del tipo di istanza. AMI
Sintassi
container_commands:
name of container_command
:
command: "command to run
"
leader_only: true
name of container_command
:
command: "command to run
"
Opzioni
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 oggettotest
, 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.
Frammento di esempio
Di seguito viene riportato una esempio di frammento.
container_commands:
collectstatic:
command: "django-admin.py collectstatic --noinput"
01syncdb:
command: "django-admin.py syncdb --noinput"
leader_only: true
02migrate:
command: "django-admin.py migrate"
leader_only: true
99customize:
command: "scripts/customize.sh"