AWS Lambda Native Tracing for Node.js

È possibile configurare il tracciamento di Instana per le funzioni di AWS Lambda scritte in Node.js.

Prerequisiti

Configurare l 'agente di AWS per il monitoraggio di Lambda, al fine di garantire la raccolta delle informazioni necessarie relative alle versioni e ad alcune metriche di runtime che Instana non è in grado di acquisire dall'interno del runtime di AWS Lambda.

Nota:
La configurazione dell'agente " AWS " è facoltativa.

Configurazione del tracciamento per le funzioni Lambda di Node.js

Instana offre diverse modalità per abilitare il tracciamento delle funzioni di ` AWS Lambda `. Sono disponibili le seguenti opzioni di configurazione:

Instana AutoTrace configurazione

La configurazione di Instana AutoTrace per Node.js consente di tracciare le funzioni AWS Lambda utilizzando il livello Lambda di Instana e un gestore di funzioni personalizzato.

Questo approccio non richiede alcuna modifica al codice della funzione Lambda; si attua esclusivamente tramite la configurazione. È anche adatto per essere automatizzato o incluso in una pipeline di distribuzione Lambda.

Per abilitare la traccia delle funzioni Lambda Node.js , effettuare le seguenti operazioni:

  1. Aggiungi il livello Lambda " Instana " alla tua funzione.
    1. Nella pagina di configurazione della tua funzione Lambda, fai clic sulla casella Layers , quindi fai clic su Add a layer.
      livello
    2. Nella finestra pop-up che si apre, seleziona "Fornisci un ARN della versione del layer" e copia e incolla l'ARN del layer Lambda " Instana " corrispondente alla tua regione. È possibile trovare l'ARN corretto nella sezione "Lambda Layers" all'indirizzo Instana.
      selezione livello
  2. Configurare il gestore Lambda.

    Imposta il gestore su instana-aws-lambda-auto-wrap.handler se utilizzi CommonJS.

    Imposta il gestore su instana-aws-lambda-auto-wrap-esm.handler se utilizzi i moduli ES ( ES6 ) (disponibile a partire dalla versione 223 del layer).

    Per modificare l'impostazione del gestore Lambda, trovare la sezione "Impostazioni di base" nella pagina di configurazione.

    pulsante modifica sezione impostazioni di base

    Fai clic su "Modifica" e inserisci instana-aws-lambda-auto-wrap.handler nel campo denominato "Handler".

    modifica le impostazioni di base per configurare l'handler di Instana

    Il livello Lambda di Instana attiva automaticamente il gestore di runtime predefinito Node.jsindex.handler. Se si utilizza un gestore personalizzato, specificarlo nella variabile d'ambiente LAMBDA_HANDLER per avvisare il Lambda Layer di Instana. Consultare la sezione successiva per tutte le variabili di ambiente che devono essere impostate.

    Nota:
    La pagina di configurazione di Lambda potrebbe visualizzare un avviso del tipo “Lambda non riesce a trovare il file instana-aws-lambda-auto-wrap.js ”. Questo avviso potrebbe comparire anche in un secondo momento, quando si torna alla pagina di configurazione. Non lasciare che questo avvertimento ti distragga. L'handler è contenuto nel livello Lambda " Instana ", ma la pagina di configurazione " AWS Lambda " non ne tiene conto.
  3. Configura variabili di ambiente.

    Aggiungi le seguenti variabili di ambiente:

    • INSTANA_ENDPOINT_URL: Questa variabile rappresenta il tuo endpoint di monitoraggio serverless. Assicurati di utilizzare il valore corretto per la tua regione che inizia con https://serverless-.
    • INSTANA_AGENT_KEY: la tua chiave agent.
    • LAMBDA_HANDLER: impostare il gestore personalizzato. Se il file principale è myModule.js, che esporta la funzione myHandler, impostare la variabile di ambiente su myModule.myHandler. Il valore predefinito è index.handler.

    Nell'esempio seguente, il gestore Lambda principale predefinito è index.js, pertanto non è necessario impostare la variabile d'ambiente LAMBDA_HANDLER.

    punto di monitoraggio serverless

    Nell'esempio seguente, il gestore Lambda principale originale è server.js, pertanto è necessario impostare la variabile d'ambiente LAMBDA_HANDLER su server.handler.

    impostazioni per variabili di ambiente personalizzate

    È inoltre possibile ottenere i valori corretti per queste variabili d'ambiente accedendo all'installazione di Instana, facendo clic su "Agents & collectors " > " Instana agents " > "Install agents " > " AWS Lambda ".

  4. Salva la definizione della funzione Lambda.
    salva

È possibile eseguire tutte le operazioni descritte in precedenza utilizzando la console web AWS o uno qualsiasi dei consueti strumenti di gestione AWS, quali:

Ecco un esempio di comando aws CLI che potrebbe fungere da punto di partenza se desideri automatizzare l'integrazione di Instana nelle tue funzioni Lambda di AWS :

# Do not copy and paste this verbatim!
# It will overwrite any previously defined collection of layers and
# environment variables.
aws --region $YOUR_REGION lambda update-function-configuration \
  --function-name $YOUR_LAMBDA_FUNCTION_NAME \
  --layers $INSTANA_LAYER_ARN \
  --handler instana-aws-lambda-auto-wrap.handler \
  --environment "Variables={INSTANA_ENDPOINT_URL=... , INSTANA_AGENT_KEY=... , ...}"

Instana Strati Lambda

Il livello " Node.js " include l 'estensione " Instana " AWS Lambda. L'estensione Lambda " Instana " esegue il offload dei dati di monitoraggio e delle tracce a livello locale, per poi inoltrarli al backend " Instana ". Questa funzionalità offre il seguente vantaggio: la funzione Lambda risponde al client richiedente immediatamente dopo che l'handler ha terminato l'esecuzione, senza attendere che i dati vengano inviati al backend di Instana.

Questa caratteristica è limitato alle funzioni Lambda configurate con una memoria di 256 MB o più. È possibile disabilitare l'estensione Lambda " Instana " impostando la variabile d'ambiente INSTANA_DISABLE_LAMBDA_EXTENSION su una stringa non vuota per la funzione Lambda.

Nota:
Segui la procedura di configurazione descritta all'indirizzo InstanaAutoTrace per utilizzare il Lambda Layer Instana.
Nota:
Instana non offre i Lambda Layer nelle regioni di GovCloud (us-gov-west-1 e us-gov-east-1). Se desideri utilizzare Instana nelle regioni GovCloud, devi installare manualmente @instana/aws-lambda il pacchetto Instana Node.js e racchiudere la tua funzione handler come descritto nella sezione Installazione manuale di @instana/aws-lambda.

Architettura x86_64

Gli ARN della versione più recente dei livelli " AWS Lambda " per i runtime Lambda elencati nella sezione " Runtime supportati " sono i seguenti, per regione:

Tabella 1. Instana Versioni del livello Lambda (x86_64)
Regione ARN @instana/aws-lambda Versione
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs:173 6.6.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs:172 6.6.1
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs:59 6.6.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs:328 6.6.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs:326 6.6.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs:172 6.6.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs:326 6.6.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs:172 6.6.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs:326 6.6.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs:325 6.6.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs:171 6.6.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs:171 6.6.1
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs:120 6.6.1
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs:41 6.6.1
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs:77 6.6.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs:324 6.6.1
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs:152 6.6.1
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs:81 6.1.0
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs:86 6.2.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs:302 6.6.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs:148 6.6.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs:302 6.6.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs:148 6.6.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs:148 6.6.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs:302 6.6.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs:302 6.6.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs:302 6.6.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs:145 6.6.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs:147 6.6.1
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs:null null
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs:75 6.6.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs:301 6.6.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs:301 6.6.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:301 6.6.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs:301 6.6.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs:301 6.6.1

Ovvero, il modello è arn:aws:lambda:${region}:410797082306:layer:instana-nodejs:${layer-version} (o arn:aws-cn:lambda:${region}:107998019096:layer:instana-nodejs:${layer-version} per le regioni AWS in Cina).

Utilizza sempre le versioni più recenti e aggiorna periodicamente la versione del livello che stai utilizzando. In questo modo potrai usufruire delle nuove funzionalità e delle correzioni fornite da Instana con ogni nuova versione di Layer.

Architettura arm64

Tabella 2. Instana Versioni del livello Lambda (arm64)
Regione ARN @instana/aws-lambda Versione
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs-arm64:58 6.6.1
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs-arm64:146 6.6.1
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs-arm64:103 6.6.1
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs-arm64:41 6.6.1
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs-arm64:76 6.6.1
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs-arm64:185 6.6.1
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs-arm64:130 6.6.1
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs-arm64:78 6.1.0
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs-arm64:86 6.2.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs-arm64:143 6.6.1
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs-arm64:143 6.6.1
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs-arm64:143 6.6.1
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs-arm64:182 6.6.1
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs-arm64:182 6.6.1
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs-arm64:141 6.6.1
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs-arm64:143 6.6.1
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs-arm64:null null
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs-arm64:74 6.6.1
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs-arm64:182 6.6.1
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs-arm64:182 6.6.1
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs-arm64:182 6.6.1

Installazione @instana/aws-lambda manuale

Per installare manualmente il collector Instana Node.js, eseguire il seguente comando:

npm install --save @instana/aws-lambda@latest
Aggiungi le seguenti variabili di ambiente:
  • INSTANA_ENDPOINT_URL: Questa variabile è il tuo endpoint di monitoraggio serverless. Assicurati di utilizzare il valore corretto per la tua regione che inizia con https://serverless-.
  • INSTANA_AGENT_KEY: la tua chiave agent.

Modifica il codice della funzione seguendo le istruzioni riportate nella sezione "Avvolgimento manuale dell'handler".

Avvolgere manualmente l'handler

Se non desideri utilizzare o non riesci a utilizzare il gestore di avvolgimento automatico, devi modificare leggermente il codice della funzione Node.js AWS Lambda per abilitare il tracciamento Instana.

Nota:
Le modifiche al codice descritte in questa sezione non sono necessarie se si utilizza il livello Lambda di Instana e il gestore di avvolgimento automatico, come descritto nella sezione "Lambda" all'indirizzo AutoTraceAWS.
Nota:
Se si integra l'handler Lambda con webpack, questo approccio non è consigliato, poiché il pacchetto principale di Instana non supporta la pre-elaborazione con webpack. L'approccio descritto all'indirizzo AutoTraceAWS è adatto per i progetti Lambda che utilizzano Webpack. In alternativa, puoi ricorrere al wrapping manuale ed escludere, come minimo, il pacchetto ( @instana/aws-lambda o tutte le dipendenze) dalla pre-elaborazione da parte di webpack. Si veda questa sezione nella documentazione di Node.js; per il framework Serverless, consultare anche la sezione dedicata al framework Serverless.
  1. Aggiungere la linea const instana = require('@instana/aws-lambda'); nella parte superiore del file JavaScript del gestore.
  2. Impacchettare la funzione del gestore in una chiamata instana.wrap() .
  3. Configurare le variabili d'ambiente per la connessione al backend Instana come descritto nella documentazione Instana AutoTrace per AWS Lambda.

Di seguito sono riportati alcuni esempi prima / dopo per i diversi stili di funzione del gestore che è possibile utilizzare per le Lambda AWS basate su Node.js :

Gestore in stile funzione asincrona

Se si utilizza una funzione async come gestore, dovrebbe essere simile alla seguente:

exports.handler = async (event, context) => {
  // your code
};
 

Il codice risultante dovrebbe essere simile al seguente:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap(async (event, context) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(
 

Handler Lambda in stile Promise

Se si utilizza un gestore di stile di promessa, dovrebbe essere simile al seguente:

exports.handler = (event, context) => {
  // your code, which returns a promise
};
 

Il codice risultante dovrebbe essere simile al seguente:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context) => {
  // your code, which returns a promise
}); // <- don't forget the closing ) for the instana.wrap(
 

Gestore lambda in stile callback

Se si utilizza un gestore stile callback, dovrebbe essere simile al seguente:

exports.handler = (event, context, callback) => {
  // your code
};
 

Il codice risultante dovrebbe essere simile al seguente:

const instana = require('@instana/aws-lambda');

exports.handler = instana.wrap((event, context, callback) => {
  // your code
}); // <- don't forget the closing ) for the instana.wrap(
 

Oggetto di configurazione

È inoltre possibile passare un oggetto di configurazione opzionale come primo argomento quando si incapsula il proprio gestore:

exports.handler = instana.wrap({
    // ... your configuration, for example:
    tracing: {
      stackTraceLength: 10
    }
  },
  async (event, context) => {
  // your code
});
 

I valori di configurazione non supportati nella traccia Lambda nativa (come agentHost, agentPort e reportUnhandledPromiseRejections) vengono ignorati in modalità non presidiata.

Si noti che è possibile utilizzare anche le variabili d'ambiente elencate nella sezione «Variabili d'ambiente aggiuntive» e la maggior parte di quelle riportate nella pagina di configurazione di Node.js.

Instana Livello Lambda per funzioni basate su container

Se il tuo team utilizza distribuzioni Lambda basate su container, puoi utilizzare i container di base disponibili all'indirizzo Instanaicr.io/instana/aws-lambda-nodejs oppure includere il seguente snippet nel tuo Dockerfile e impostare gli argomenti di compilazione sulle versioni appropriate.

Instana attualmente supporta solo x86_64 l'architettura.

# This is the container image that delivers Instana's monitoring capabilities.
# It will not become the base image for your Lambda container image, it just provides a few files.
FROM icr.io/instana/aws-lambda-nodejs:latest as instana-layer

# This is the actual base image for your Lambda container image. You can also use any other base image that is suitable
# for container image based Lambda functions.
FROM public.ecr.aws/lambda/nodejs:22

# Copy Instana's Node.js monitoring components into your Lambda container image.
COPY --from=instana-layer /opt/extensions/ /opt/extensions/
COPY --from=instana-layer /opt/nodejs/ /opt/nodejs/

# The remainder of your Dockerfile, as it was without adding the Instana layer. The following is just an example:
COPY index.js package.json package-lock.json /var/task/
WORKDIR /var/task
RUN npm install

# Override the CMD. This can also be done as a parameter override outside of the Dockerfile, for example in the AWS console.
# If you use ES modules, use CMD [ "instana-aws-lambda-auto-wrap-esm.handler" ] instead.
CMD [ "instana-aws-lambda-auto-wrap.handler" ]

Gestione versioni

Per visualizzare tutte le versioni disponibili, esegui il seguente comando:

curl -s https://icr.io/v2/instana/aws-lambda-nodejs/tags/list | jq .

Per ulteriori informazioni, consultare la sezione "Versioni" all'indirizzo Node.js.

Integrazione del tracciamento di Instana con Serverless Framework

Modifica il file serverless.yml per integrare il tracciamento di Instana e con Serverless Framework. Seguire i passi:

  1. Copiare l' ARN di livello dall'elenco e aggiungere l'ARN alla sezione livelli della definizione della funzione di destinazione.
  2. Aggiungere le variabili di ambiente INSTANA_AGENT_KEY, INSTANA_ENDPOINT_URL e LAMBDA_HANDLER. Per ulteriori informazioni, consultare Instana AutoTrace setup.

Consultare il seguente serverless.ymldi esempio:

service: service-a

provider:
  name: aws
  runtime: nodejs16.x
  stage: dev
  region: us-east-2

functions:
  with-layer:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

Serverless offline

Prerequisito: assicurati di aver seguito i passaggi 1 e 2 della sezione " Integrazione del tracciamento di Instana con Serverless Framework ".

Modifica il serverless.yml file per integrare Instana con Serverless Framework e Serverless Offline. Seguire i passi:

  1. Impostare la variabile di ambiente NODE_PATH su $NODE_PATH:/opt/nodejs/node_modules.
  2. Impostare il campo useDocker in modo che sia true nella sezione custom . A quel punto, il livello " Instana " verrà scaricato automaticamente in un contenitore " Docker ".

Consultare il seguente serverless.ymldi esempio:

service: service-b

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-offline

custom:
  serverless-offline:
    useDocker: true

functions:
  with-serverless-offline:
    environment:
      NODE_PATH: $NODE_PATH:/opt/nodejs/node_modules
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:111
    handler: instana-aws-lambda-auto-wrap.handler

Webpack senza server

Prerequisito: assicurati di aver seguito i passaggi 1 e 2 della sezione " Integrazione del tracciamento di Instana con Serverless Framework ".

Modifica il serverless.yml file per integrare Instana con Serverless Framework e Serverless Webpack.

Aggiungere entrypoint alla definizione della funzione Lambda di destinazione. Il punto di ingresso è il tuo handler Lambda originale Node.js, che viene attivato automaticamente dal livello Lambda Instana. Per ulteriori informazioni, consultare Instana AutoTrace setup.

Consultare il seguente serverless.ymldi esempio:

service: service-c

provider:
  name: aws
  runtime: nodejs12.x
  stage: dev
  region: us-east-2

plugins:
  - serverless-webpack

package:
  individually: true

functions:
  with-serverless-webpack:
    environment:
      INSTANA_ENDPOINT_URL: INSTANA_ENDPOINT_URL
      INSTANA_AGENT_KEY: INSTANA_AGENT_KEY
      LAMBDA_HANDLER: src/index.handler
    layers:
      - arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:110
    handler: instana-aws-lambda-auto-wrap.handler
    entrypoint: src/index.handler
Nota:
  • È necessario utilizzare la versione più aggiornata di serverless-webpack.
  • Si consiglia di utilizzare il Parameter Store (SSM) di AWS System Manager per le applicazioni serverless, al fine di evitare di inserire la chiave dell'agente Instana in chiaro nel file serverless.yml. Per ulteriori informazioni, consultare il blog Serverless Framework.

Assistenza SSM

È inoltre possibile specificare la chiave dell'agente di Instana tramite l'archivio dei parametri SSM ( System Manager ) all'indirizzo AWS.

  1. Aggiungi la chiave dell'agente di Instana all'archivio dei parametri SSM. Ricordare o copiare il nome del parametro.
  2. Rimuovi INSTANA_AGENT_KEY dalle tue variabili di ambiente.
  3. Aggiungere INSTANA_SSM_PARAM_NAME alle variabili di ambiente con il nome del parametro copiato.
  4. Se hai aggiunto il parametro come a"SecureString", devi anche impostareINSTANA_SSM_DECRYPTION=true . Se è stato utilizzato il tipo "Stringa", non è necessario impostare alcuna variabile aggiuntiva.
Nota:
Importante: per quanto riguarda il supporto SSM, occorre tenere presente quanto segue: se non si rimuove INSTANA_AGENT_KEY dalle variabili d'ambiente, le variabili d'ambiente SSM vengono ignorate. Se la tua funzione Lambda ha una durata breve, il recupero SSM potrebbe non completarsi prima che la funzione termini. In tali casi, potrebbe non essere possibile recuperare la chiave dell'agente di Instana. Per evitare questo problema, specificare la chiave direttamente tramite la variabile di ambiente INSTANA_AGENT_KEY.

Utilizzo di Instana API nelle funzioni Lambda

È possibile accedere e utilizzare l'intero Instana API nel codice Lambda, proprio come in una normale app Node.js utilizzando @instana/collector.

const instana = require('@instana/aws-lambda');
 
Nota:
Se scegli il AutoTrace configurazione, il pacchetto @instana/aws-lambda sarà automaticamente disponibile come dipendenza nella tua funzione Lambda.

Variabili d'ambiente aggiuntive

Nome Predefinito Valore Descrizione
INSTANA_DISABLE_LAMBDA_EXTENSION false Qualsiasi stringa non vuota. Disabilitare o meno l'estensione lambda.
INSTANA_ENABLE_LAMBDA_TIMEOUT_DETECTION false true oppure false La funzione è disabilitata per impostazione predefinita, perché l'esecuzione di un gestore di timeout potrebbe avvenire in un'altra esecuzione. Utilizzarlo solo per il debug. L'abilitazione può avere conseguenze indesiderate. Quindi, attivatelo a vostro rischio e pericolo.
INSTANA_MINIMUM_LAMBDA_TIMEOUT_FOR_TIMEOUT_DETECTION_IN_MS 2.000 $ Timeout in millisecondi Aumenta il rilevamento del timeout minimo in millisecondi.
INSTANA_DEBUG false true oppure false Abilita la modalità debug.
INSTANA_TIMEOUT 1000 Numero Timeout per l'invio dei dati al backend Instana, espresso in millisecondi.