Utilizzo delle variabili di ambiente Lambda
È possibile utilizzare le variabili di ambiente per regolare il comportamento della funzione senza aggiornare il codice. Una variabile di ambiente è una coppia di stringhe archiviata nella configurazione specifica della versione di una funzione. Il runtime Lambda rende le variabili di ambiente disponibili per il codice e imposta variabili di ambiente aggiuntive che contengono informazioni sulla richiesta di funzione e invocazione.
Nota
Per aumentare la sicurezza, è consigliabile utilizzare Gestione dei segreti AWS al posto delle variabili di ambiente per archiviare le credenziali del database e altre informazioni sensibili come chiavi API o token di autorizzazione. Per ulteriori informazioni, consulta Uso dei segreti in Secrets Manager nelle funzioni Lambda.
Le variabili di ambiente non vengono valutate prima dell'invocazione della funzione. Qualsiasi valore definito è considerato una stringa letterale e non espanso. Eseguire la valutazione della variabile nel codice funzione.
Creazione delle variabili di ambiente Lambda
Puoi configurare le variabili di ambiente in Lambda utilizzando la console Lambda, la AWS Command Line Interface (AWS CLI), AWS Serverless Application Model (AWS SAM) o un SDK AWS.
Scenario di esempio per le variabili di ambiente
È possibile utilizzare le variabili di ambiente per personalizzare il comportamento delle funzioni nell'ambiente di test e nell'ambiente di produzione. Ad esempio, puoi creare due funzioni con stesso codice ma configurazione diversa. Una funzione si connette a un database di test e l'altra a un database di produzione. In questo caso, puoi utilizzare le variabili di ambiente per passare alla funzione il nome host e altri dettagli di connessione per il database.
Nell'esempio seguente viene illustrato come definire l'host del database e il nome del database come variabili di ambiente.
Se si desidera che l'ambiente di test generi più informazioni di debug rispetto all'ambiente di produzione, è possibile impostare una variabile di ambiente per configurare l'ambiente di test in modo da utilizzare una registrazione più dettagliata o una traccia più dettagliata.
Ad esempio, nell'ambiente di test, è possibile impostare una variabile di ambiente con la chiave LOG_LEVEL e un valore che indica un livello di log di debug o trace. Nel codice della funzione Lambda, puoi quindi utilizzare questa variabile di ambiente per impostare il livello di log.
I seguenti esempi di codice in Python e Node.js illustrano come è possibile raggiungere questo obiettivo. Questi esempi presuppongono che la variabile di ambiente abbia un valore DEBUG in Python o debug in Node.js.
Recupero delle variabili di ambiente Lambda
Per recuperare le variabili di ambiente nel codice della funzione, utilizza il metodo standard per il linguaggio di programmazione.
Lambda memorizza le variabili di ambiente in modo sicuro crittografandole quando inattive. Puoi configurare Lambda per utilizzare una chiave di crittografia diversa, crittografare i valori delle variabili di ambiente lato client o impostare le variabili di ambiente in un modello CloudFormation con Gestione dei segreti AWS.
Variabili di ambiente di runtime definite
I tempi di esecuzione Lambda impostano diverse variabili di ambiente durante l'inizializzazione. La maggior parte delle variabili di ambiente fornisce informazioni sulla funzione o sul runtime. Le chiavi per queste variabili di ambiente sono riservate e non possono essere impostate nella configurazione della funzione.
Variabili d'ambiente riservate
-
_HANDLER: la posizione del gestore configurata nella funzione. -
_X_AMZN_TRACE_ID: l'intestazione di traccia X-Ray. Questa variabile di ambiente cambia a ogni invocazione.-
Questa variabile di ambiente non è definita per i runtime solo per il sistema operativo (la famiglia di runtime
provided). Puoi impostare_X_AMZN_TRACE_IDper runtime personalizzati utilizzando l'intestazione di rispostaLambda-Runtime-Trace-Iddal Chiamata successiva. -
Per le versioni di runtime Java 17 e successive, questa variabile di ambiente non viene utilizzata. Lambda archivia invece le informazioni di tracciamento nella proprietà di sistema
com.amazonaws.xray.traceHeader.
-
-
AWS_DEFAULT_REGION: la Regione AWS predefinita in cui viene eseguita la funzione Lambda. -
AWS_REGION: la Regione AWS in cui viene eseguita la funzione Lambda. Se immesso, questo valore sovrascriveAWS_DEFAULT_REGION.-
Per ulteriori informazioni sull'utilizzo delle variabili di ambiente Regione AWS con gli SDK AWS, consulta Regione AWS nella Guida di riferimento agli SDK AWS e agli strumenti.
-
-
AWS_EXECUTION_ENV: l'identificatore di runtime, preceduto daAWS_Lambda_, ad esempioAWS_Lambda_java8. Questa variabile di ambiente non è definita per i runtime solo per il sistema operativo (la famiglia di runtimeprovided). -
AWS_LAMBDA_FUNCTION_NAME: il nome della funzione. -
AWS_LAMBDA_FUNCTION_MEMORY_SIZE: la quantità di memoria disponibile per la funzione in MB. -
AWS_LAMBDA_FUNCTION_VERSION: la versione della funzione in esecuzione. -
AWS_LAMBDA_INITIALIZATION_TYPE: il tipo di inizializzazione della funzione, che èon-demand,provisioned-concurrencyosnap-start. Per informazioni, consulta Configurazione della simultaneità fornita o Miglioramento delle prestazioni di avvio con Lambda SnapStart.. -
AWS_LAMBDA_LOG_GROUP_NAME,AWS_LAMBDA_LOG_STREAM_NAME: il nome del gruppo Amazon CloudWatch Logs e il flusso per la funzione. Le variabili di ambienteAWS_LAMBDA_LOG_GROUP_NAMEeAWS_LAMBDA_LOG_STREAM_NAMEnon sono disponibili nelle funzioni Lambda SnapStart. -
AWS_ACCESS_KEY,AWS_ACCESS_KEY_ID,AWS_SECRET_ACCESS_KEY,AWS_SESSION_TOKEN: le chiavi di accesso ottenute dal ruolo di esecuzione della funzione. -
AWS_LAMBDA_RUNTIME_API: (Runtime personalizzato) L'host e la porta dell'API di runtime. -
LAMBDA_TASK_ROOT: il percorso del codice della funzione Lambda. -
LAMBDA_RUNTIME_DIR: il percorso delle librerie di runtime.
Le seguenti variabili di ambiente aggiuntive non sono riservate e possono essere estese nella configurazione della funzione.
Variabili d'ambiente non riservate
-
LANG– Le impostazioni locali del runtime (en_US.UTF-8). -
PATH– il percorso di esecuzione (/usr/local/bin:/usr/bin/:/bin:/opt/bin). -
LD_LIBRARY_PATH– il percorso della libreria di sistema (/var/lang/lib:/lib64:/usr/lib64:$LAMBDA_RUNTIME_DIR:$LAMBDA_RUNTIME_DIR/lib:$LAMBDA_TASK_ROOT:$LAMBDA_TASK_ROOT/lib:/opt/lib). -
NODE_PATH– (Node.js) Il percorso della libreria Node.js (/opt/nodejs/node12/node_modules/:/opt/nodejs/node_modules:$LAMBDA_RUNTIME_DIR/node_modules). -
NODE_OPTIONS: (Node.js) per i runtime Node.js, puoi utilizzareNODE_OPTIONSper riattivare le funzionalità sperimentali che Lambda disabilita per impostazione predefinita. -
PYTHONPATH: (Python) il percorso della libreria Python ($LAMBDA_RUNTIME_DIR). -
GEM_PATH– (Ruby) Il percorso della libreria Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/3.3.0:/opt/ruby/gems/3.3.0). -
AWS_XRAY_CONTEXT_MISSING– Per il tracciamento X-Ray, Lambda imposta questo valore suLOG_ERRORper evitare di generare errori di runtime dall'SDK X-Ray. -
AWS_XRAY_DAEMON_ADDRESS– Per il tracciamento X-Ray, l'indirizzo IP e la porta del daemon X-Ray. -
AWS_LAMBDA_DOTNET_PREJIT: (.NET) imposta questa variabile per abilitare o disabilitare le ottimizzazioni di runtime specifiche di .NET. I valori includonoalways,nevereprovisioned-concurrency. Per ulteriori informazioni, consulta Configurazione della simultaneità fornita per una funzione. -
TZ– il fuso orario dell'ambiente (:UTC). L'ambiente di esecuzione utilizza NTP per sincronizzare l'orologio di sistema.
I valori di esempio mostrati riflettono i runtime più recenti. La presenza di variabili specifiche o dei loro valori può variare nei runtime precedenti.