Usa le variabili di ambiente Lambda per configurare i valori nel codice - AWS Lambda

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

Usa le variabili di ambiente Lambda per configurare i valori nel codice

È 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, consigliamo di utilizzare AWS Secrets Manager al posto delle variabili di ambiente per archiviare le credenziali del database e altre informazioni sensibili come API chiavi o token di autorizzazione. Per ulteriori informazioni, consulta Creare e gestire segreti con. AWS Secrets Manager

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.

Puoi configurare le variabili di ambiente in Lambda utilizzando la console Lambda, (), AWS Command Line Interface AWS Serverless Application Model (AWS CLI) o utilizzando un.AWS SAM AWS SDK

Console

Puoi definire le variabili di ambiente sulla versione non pubblicata della funzione. Quando pubblicate una versione, le variabili di ambiente vengono bloccate per quella versione insieme ad altre impostazioni di configurazione specifiche della versione.

È possibile creare una variabile di ambiente per la funzione definendo una chiave e un valore. La funzione utilizza il nome della chiave per recuperare il valore della variabile di ambiente.

Per impostare le variabili di ambiente nella console Lambda
  1. Aprire la pagina Funzioni della console Lambda.

  2. Scegliere una funzione.

  3. Scegli Configurazione, quindi scegli Variabili di ambiente.

  4. In Environment variables (Variabili di ambiente), scegliere Edit (Modifica).

  5. Scegli Add environment variable (Aggiungi variabile d'ambiente).

  6. Inserisci una coppia chiave valore.

    Requisiti
    • Le chiavi iniziano con una lettera e sono di almeno due caratteri.

    • Le chiavi contengono solo lettere, numeri e il carattere di sottolineatura (_).

    • Le chiavi non sono riservate da Lambda.

    • La dimensione totale di tutte le variabili di ambiente non supera i 4 KB.

  7. Seleziona Salva.

Generazione di un elenco di variabili di ambiente nell'editor di codice della console

Puoi generare un elenco di variabili di ambiente nell'editor di codice Lambda. È un modo rapido per fare riferimento alle variabili di ambiente durante la scrittura del codice.

  1. Scegli la scheda Codice.

  2. Scegli la scheda Variabili di ambiente.

  3. Scegli Strumenti, quindi Mostra variabili di ambiente.

Le variabili di ambiente rimangono crittografate quando sono elencate nell'editor di codice della console. Se hai abilitato gli helper di crittografia per la crittografia in transito, tali impostazioni rimangono invariate. Per ulteriori informazioni, consulta Protezione delle variabili di ambiente Lambda.

L'elenco delle variabili di ambiente è di sola lettura ed è disponibile solo nella console Lambda. Questo file non è incluso quando scarichi l'archivio di file .zip della funzione e non è possibile aggiungere variabili di ambiente caricando questo file.

AWS CLI

L'esempio seguente imposta due variabili di ambiente in una funzione denominata my-function.

aws lambda update-function-configuration \ --function-name my-function \ --environment "Variables={BUCKET=amzn-s3-demo-bucket,KEY=file.txt}"

Quando applichi le variabili di ambiente con il comando update-function-configuration, viene sostituito l'intero contenuto della struttura Variables. Per mantenere le variabili di ambiente esistenti quando ne aggiungi una nuova, includi tutti i valori esistenti nella richiesta.

Per ottenere la configurazione corrente, utilizza il comando get-function-configuration.

aws lambda get-function-configuration \ --function-name my-function

Verrà visualizzato l'output seguente:

{ "FunctionName": "my-function", "FunctionArn": "arn:aws:lambda:us-east-2:111122223333:function:my-function", "Runtime": "nodejs20.x", "Role": "arn:aws:iam::111122223333:role/lambda-role", "Environment": { "Variables": { "BUCKET": "amzn-s3-demo-bucket", "KEY": "file.txt" } }, "RevisionId": "0894d3c1-2a3d-4d48-bf7f-abade99f3c15", ... }

È possibile passare l'ID di revisione dall'output di get-function-configuration come parametro a update-function-configuration. Ciò garantisce che i valori non cambino da quando leggi la configurazione a quando la aggiorni.

Per configurare la chiave di crittografia di una funzione, imposta l'opzione KMSKeyARN.

aws lambda update-function-configuration \ --function-name my-function \ --kms-key-arn arn:aws:kms:us-east-2:111122223333:key/055efbb4-xmpl-4336-ba9c-538c7d31f599
AWS SAM

Puoi usare il AWS Serverless Application Modelper configurare le variabili di ambiente per la tua funzione. Aggiorna le proprietà Environment e Variables nel tuo template.yaml file, quindi esegui sam deploy.

Esempio template.yaml
AWSTemplateFormatVersion: '2010-09-09' Transform: AWS::Serverless-2016-10-31 Description: An AWS Serverless Application Model template describing your function. Resources: my-function: Type: AWS::Serverless::Function Properties: CodeUri: . Description: '' MemorySize: 128 Timeout: 120 Handler: index.handler Runtime: nodejs18.x Architectures: - x86_64 EphemeralStorage: Size: 10240 Environment: Variables: BUCKET: amzn-s3-demo-bucket KEY: file.txt # Other function properties...
AWS SDKs

Per gestire le variabili di ambiente utilizzando un AWS SDK, utilizzate le seguenti API operazioni.

Per ulteriori informazioni, consultate la AWS SDKdocumentazione relativa al linguaggio di programmazione preferito.

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_ID per runtime personalizzati utilizzando l'intestazione di risposta Lambda-Runtime-Trace-Id dal 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— L'impostazione predefinita Regione AWS in cui viene eseguita la funzione Lambda.

  • AWS_REGION— Il Regione AWS luogo in cui viene eseguita la funzione Lambda. Se immesso, questo valore sovrascrive AWS_DEFAULT_REGION.

    • Per ulteriori informazioni sull'utilizzo delle variabili di Regione AWS ambiente con AWS SDKs, vedete AWS Region nella AWS SDKsand Tools Reference Guide.

  • AWS_EXECUTION_ENV: l'identificatore di runtime, preceduto da AWS_Lambda_, ad esempio AWS_Lambda_java8. Questa variabile di ambiente non è definita per i runtime solo per il sistema operativo (la famiglia di runtime provided).

  • 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-concurrency o snap-start. Per informazioni, consulta Configurazione della simultaneità con provisioning o Migliorare le prestazioni di avvio con Lambda SnapStart.

  • AWS_LAMBDA_LOG_GROUP_NAME, AWS_LAMBDA_LOG_STREAM_NAME — Il nome del gruppo e dello stream Amazon CloudWatch Logs per la funzione. Le variabili di AWS_LAMBDA_LOG_STREAM_NAME ambiente AWS_LAMBDA_LOG_GROUP_NAME e non 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 del runtime API.

  • 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).

  • PYTHONPATH – (Python 2.7, 3.6, 3.8) Il percorso della libreria Python ($LAMBDA_RUNTIME_DIR).

  • GEM_PATH – (Ruby) Il percorso della libreria Ruby ($LAMBDA_TASK_ROOT/vendor/bundle/ruby/2.5.0:/opt/ruby/gems/2.5.0).

  • AWS_XRAY_CONTEXT_MISSING— Per il tracciamento a raggi X, Lambda lo imposta per evitare di LOG_ERROR generare errori di runtime dall'X-Ray. SDK

  • AWS_XRAY_DAEMON_ADDRESS – Per il tracciamento X-Ray, l'indirizzo IP e la porta del daemon X-Ray.

  • AWS_LAMBDA_DOTNET_PREJIT— Per. NET6 e. NET7 runtime, imposta questa variabile per abilitare o disabilitare. NETottimizzazioni di runtime specifiche. I valori includono always, never e provisioned-concurrency. Per ulteriori informazioni, consulta Configurazione della concorrenza 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.

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.

Variabili di ambiente nella console Lambda.

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.