Modifica dell'ambiente di runtime - 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à.

Modifica dell'ambiente di runtime

È possibile utilizzare le estensioni interne per modificare il processo di runtime. Le estensioni interne non sono processi separati, sono eseguiti nell'ambito del processo di runtime.

Lambda fornisce variabili di ambiente specifiche della lingua che è possibile impostare per aggiungere opzioni e strumenti al runtime. Lambda fornisce anche Script wrapper, che consentono a Lambda di delegare l'avvio del runtime allo script. È possibile creare uno script wrapper per personalizzare il comportamento di avvio del runtime.

Variabili di ambiente specifiche della lingua

Lambda supporta metodi di sola configurazione per abilitare il precaricamento del codice durante l'inizializzazione della funzione tramite le seguenti variabili di ambiente specifiche della lingua:

  • JAVA_TOOL_OPTIONS: su Java, Lambda supporta questa variabile di ambiente per impostare ulteriori variabili della riga di comando in Lambda. Questa variabile di ambiente consente di specificare l'inizializzazione degli strumenti, in particolare l'avvio di agenti del linguaggio di programmazione nativo o Java utilizzando le opzioni agentlib o javaagent. Per ulteriori informazioni, consulta la sezione Variabili di ambiente JAVA_TOOL_OPTIONS.

  • NODE_OPTIONS: disponibile nei runtime di Node.js.

  • DOTNET_STARTUP_HOOKS – Su.NET Core 3.1 e versioni successive, questa variabile di ambiente specifica un percorso ad un assembly (dll) che Lambda può utilizzare.

L'utilizzo di variabili di ambiente specifiche della lingua è il modo preferito per impostare le proprietà di avvio.

Script wrapper

È possibile creare uno script wrapper per personalizzare il comportamento di avvio runtime della funzione Lambda. Uno script wrapper consente di impostare parametri di configurazione che non possono essere impostati tramite variabili di ambiente specifiche della lingua.

Nota

Le chiamate potrebbero non riuscire se lo script wrapper non avvia correttamente il processo di runtime.

Gli script wrapper sono supportati su tutti i runtime Lambda nativi. Gli script wrapper non sono supportati su Runtime solo per il sistema operativo (la famiglia di runtime provided).

Quando si utilizza uno script wrapper per la funzione, Lambda avvia il runtime utilizzando lo script. Lambda invia allo script il percorso all'interprete e tutti gli argomenti originali per l'avvio del runtime standard. Lo script può estendere o trasformare il comportamento di avvio del programma. Ad esempio, lo script può iniettare e modificare argomenti, impostare variabili di ambiente o acquisire metriche, errori e altre informazioni diagnostiche.

È possibile specificare lo script impostando il valore della variabile di ambiente AWS_LAMBDA_EXEC_WRAPPER come percorso del file system di un file binario o di uno script eseguibile.

Esempio: creare e utilizzare uno script wrapper con Python 3.8

Nell'esempio seguente, si crea uno script wrapper per avviare l'interprete Python con l'opzione -X importtime. Quando si esegue la funzione, Lambda genera una voce di log per mostrare la durata del tempo di importazione per ogni importazione.

Per creare e utilizzare uno script wrapper con Python 3.8
  1. Per creare lo script wrapper, incollare il codice seguente in un file denominato importtime_wrapper:

    #!/bin/bash # the path to the interpreter and all of the originally intended arguments args=("$@") # the extra options to pass to the interpreter extra_args=("-X" "importtime") # insert the extra options args=("${args[@]:0:$#-1}" "${extra_args[@]}" "${args[@]: -1}") # start the runtime with the extra options exec "${args[@]}"
  2. Per assegnare le autorizzazioni eseguibili dello script, immettere chmod +x importtime_wrapper dalla riga di comando.

  3. Distribuire lo script come livello Lambda.

  4. Crea una funzione utilizzando la console Lambda.

    1. Aprire la console Lambda.

    2. Scegli Crea funzione.

    3. In Basic information (Informazioni di base) , per Function name (Nome funzione) , inserisci wrapper-test-function.

    4. In Runtime, scegliere Python 3.8.

    5. Scegli Crea funzione.

  5. Aggiungi il livello alla tua funzione.

    1. Scegliere la funzione, quindi scegliere Codice se non è già selezionato.

    2. Scegliere Add a layer (Aggiungi un livello).

    3. In Scegli un layer, scegliere il nome e la versione del layer compatibile creato in precedenza.

    4. Scegli Aggiungi.

  6. Aggiungi il codice e la variabile di ambiente alla tua funzione.

    1. Nell'editor del codice della funzione, incollare il seguente codice funzione:

      import json def lambda_handler(event, context): # TODO implement return { 'statusCode': 200, 'body': json.dumps('Hello from Lambda!') }
    2. Selezionare Salva.

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

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

    5. In Chiave, inserire AWS_LAMBDA_EXEC_WRAPPER.

    6. In Valore, specifica /opt/importtime_wrapper.

    7. Selezionare Salva.

  7. Per eseguire la funzione, scegliere Test.

    Poiché lo script wrapper ha avviato l'interprete Python con l'opzione -X importtime, i log mostrano il tempo richiesto per ogni importazione. Ad esempio:

    ... 2020-06-30T18:48:46.780+01:00 import time: 213 | 213 | simplejson 2020-06-30T18:48:46.780+01:00 import time: 50 | 263 | simplejson.raw_json ...