AWS Lambda Native Tracing for Node.js

È possibile impostare Instana Tracing per le funzioni Lambda di AWS scritte in Node.js.

Prerequisiti

Configurare l' agente AWS per il monitoraggio di Lambda, per garantire la raccolta delle informazioni necessarie sulle versioni e su alcune metriche del runtime che Instana non può raccogliere dall'interno del runtime AWS Lambda.

Nota: L'impostazione dell'agente AWS è facoltativa.

Impostazione del tracciamento per le funzioni Lambda di Node.js

Instana offre diversi modi per abilitare il tracciamento per le funzioni Lambda di AWS. Sono disponibili le seguenti opzioni di impostazione:

Nota: Instana non offre strati Lambda nelle regioni GovCloud (us-gov-west-1 e us-gov-east-1). Se si vuole usare Instana nelle regioni GovCloud, installare manualmente il pacchetto Instana Node.js @instana/aws-lambda e avvolgere la funzione di gestione come descritto nella sezione Installazione manuale di @instana/aws-lambda.

Configurazione di Instana AutoTrace

La configurazione di Instana AutoTrace per Node.js consente di tracciare le funzioni Lambda di AWS è di utilizzare il livello Instana Lambda e un gestore di funzioni personalizzato. Questo approccio non richiede la modifica del codice della funzione Lambda e avviene esclusivamente attraverso la configurazione. È anche adatto per essere automatizzato o incluso in una pipeline di distribuzione Lambda.

Per abilitare il tracciamento delle funzioni Lambda di Node.js, eseguire i seguenti passaggi:

  1. Aggiungere il livello Instana Lambda alla funzione.

    1. Nella pagina di configurazione della funzione Lambda, clicca sulla Layers casella e poi su Add a layer. livello
    2. Nella finestra popup che si apre, seleziona Fornisci un ARN della versione del livello e copia e incolla l'ARN per il livello Instana Lambda corrispondente alla tua regione; puoi trovare l'ARN corretto per il livello Instana Lambda nella sezione Livelli Instana Lambda. selezione del livello
  2. Configurare il Lambda Handler. Impostare il gestore su instana-aws-lambda-auto-wrap.handler se si utilizza il metodo CommonJS. Impostare il gestore su instana-aws-lambda-auto-wrap-esm.handler se si utilizzano i Moduli ES ( ES6 ) (disponibili dalla versione 223 del layer).

    Per modificare le impostazioni del gestore Lambda, nella pagina di configurazione si trova la sezione "Impostazioni di base".

    pulsante di modifica della sezione impostazioni di base

    Fare clic su modifica e inserire instana-aws-lambda-auto-wrap.handler nel campo "Handler".

    modificare le impostazioni di base per impostare il gestore di Instana

    Il livello Instana Lambda attiva automaticamente il gestore runtime predefinito Node.js index.handler. Se si usa un gestore personalizzato, specificarlo nella variabile d'ambiente LAMBDA_HANDLER per notificarlo al Lambda Layer di Instana. Vedere la sezione successiva per tutte le variabili d'ambiente che devono essere impostate.

    La pagina di configurazione di Lambda potrebbe visualizzare un avviso del tipo Lambda non trova il file instana-aws-lambda-auto-wrap.js. Questo potrebbe essere visualizzato anche in seguito, quando si torna alla pagina di configurazione. Non lasciatevi distrarre da questo avvertimento. Il gestore è contenuto nel livello Instana Lambda, ma la pagina di configurazione di AWS Lambda non ne tiene conto.

  3. Configurare le variabili d'ambiente. Aggiungi le seguenti variabili di ambiente:

    • INSTANA_ENDPOINT_URL: Questo è il tuo endpoint di monitoraggio senza server. Assicurarsi di utilizzare il valore corretto per la propria regione che inizia con https://serverless-.
    • INSTANA_AGENT_KEY: La chiave dell'agente.
    • LAMBDA_HANDLER: Impostare il gestore personalizzato. Se il file principale è myModule.js, che esporta la funzione myHandler, impostare la variabile d'ambiente su myModule.myHandler. Il valore predefinito è index.handler.

    Nell'esempio seguente, il gestore Lambda principale originale è index.js, quindi non è necessario impostare la variabile di ambiente LAMBDA_HANDLER. impostazioni per le variabili env predefinite

    Nell'esempio seguente, il gestore Lambda principale originale è server.js, pertanto è necessario impostare la variabile di ambiente LAMBDA_HANDLER su server.handler. impostazioni per le variabili env personalizzate

    È possibile ottenere i valori corretti per queste variabili d'ambiente anche accedendo all'installazione di Instana, facendo clic su... Altro -> Agenti -> Installazione degli agenti Instana -> Piattaforma: AWS -> Tecnologia: AWS Lambda.

  4. Salva la definizione della funzione Lambda. salva

Tutte le operazioni descritte in precedenza possono essere eseguite tramite la console web di AWS o uno qualsiasi dei consueti strumenti di gestione di AWS, come ad esempio:

Ecco un esempio di comando CLI di aws che può servire come punto di partenza se si vuole automatizzare l'integrazione di Instana con i 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=... , ...}""
 

Installare manualmente @instana/aws-lambda

Invece di usare il livello Lambda di Instana, si può anche scegliere di installare manualmente il pacchetto npm @instana/aws-lambda :

  1. Aggiungere la dipendenza @instana/aws-lambda al progetto eseguendo npm install -S @instana/aws-lambda (o yarn add @instana/aws-lambda) nella directory del progetto. Questo aggiungerà il pacchetto alla cartella node_modules e salverà la dipendenza nel file package.json .
  2. Aggiungere le variabili d'ambiente INSTANA_ENDPOINT_URL e INSTANA_AGENT_KEY con i valori richiesti.
  3. Modificare il codice della funzione secondo quanto indicato nella sezione Avvolgimento manuale del gestore.

Avvolgere manualmente il gestore

Se non si vuole o non si vuole usare il gestore di auto-wrap, è necessario modificare leggermente il codice della funzione Lambda Node.js AWS per abilitare il tracciamento di Instana.

Nota: Le modifiche al codice descritte in questa sezione non sono necessarie se si utilizza il livello Instana Lambda e il gestore di auto-wrap, come descritto nella sezione AutoTrace AWS Lambda.
Nota: se si esegue il bundle del gestore Lambda con webpack, questo approccio non è consigliato, poiché il pacchetto principale di Instana non supporta la preelaborazione con webpack. L'approccio AutoTrace AWS Lambdas è adatto ai Lambdas che utilizzano webpack. In alternativa, si può usare il wrapping manuale ed escludere, come minimo, il pacchetto @instana/aws-lambda (o tutte le dipendenze) dal preprocesso di webpack. Vedere questa sezione nella documentazione di Node.js; per il framework Serverless, consultare anche la sezione Framework Serverless.
  1. Aggiungere la riga const instana = require('@instana/aws-lambda'); all'inizio del file del gestore JavaScript.
  2. Avvolgere la funzione del gestore in una chiamata a instana.wrap() .
  3. Configurare le variabili d'ambiente per la connessione al backend di Instana come descritto nella documentazione di Instana AutoTrace per AWS Lambda.

Ecco alcuni esempi prima/dopo dei diversi stili di funzione del gestore che possono essere utilizzati per i lambda Node.js basati su AWS :

Gestore stile funzione asincrona

Se si utilizza una funzione async come gestore, il risultato dovrebbe essere simile a questo:

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

Il codice risultante dovrebbe assomigliare a questo:

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

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

Gestore di lambda in stile promessa

Se si utilizza un gestore di tipo promise, dovrebbe essere simile a questo:

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

Il codice risultante dovrebbe assomigliare a questo:

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 di tipo callback, dovrebbe essere simile a questo:

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

Il codice risultante dovrebbe assomigliare a questo:

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

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

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

I valori di configurazione che non sono supportati nel tracciamento Lambda nativo (come agentHost, agentPort e reportUnhandledPromiseRejections) vengono ignorati silenziosamente.

Si noti che si possono usare anche le variabili d'ambiente elencate nella sezione Variabili d'ambiente aggiuntive e la maggior parte di quelle elencate nella pagina di configurazione Node.js.

Strato Instana Lambda per funzioni basate su container

Se il vostro team utilizza distribuzioni Lambda basate su container, potete usare i nostri container di base su icr.io/instana/aws-lambda-nodejs o includere il seguente snippet nel vostro file Docker e impostare gli argomenti del tempo di compilazione sulle versioni appropriate.

Attualmente Instana supporta solo l'architettura x86_64 .

Questa immagine non è destinata all'uso in ambienti FedRAMP-compliant.

# 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:14

# 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" ]
 

Al posto di icr.io/instana/aws-lambda-nodejs:latest, si può anche usare una versione specifica del modulo npm Instana @instana/aws-lambda maggiore o uguale a 1.137.2 (vedere CHANGELOG ), quindi ad esempio:

FROM icr.io/instana/aws-lambda-nodejs:1.140.1 as instana-layer
 

Oppure si può bloccare solo la versione principale, consentendo però le versioni minori/patch più recenti:

FROM icr.io/instana/aws-lambda-nodejs:1 as instana-layer
 
Nota: le versioni future di icr.io/instana/aws-lambda-nodejs abbandoneranno il supporto per i vecchi runtime Lambda Node.js. Ad esempio, a partire dalla versione icr.io/instana/aws-lambda-nodejs:2.0.0, il supporto per nodejs8.x sarà abbandonato. Si consiglia di selezionare la versione principale quando si utilizzano runtime Lambda meno recenti.

Integrazione di Instana Tracing con il framework Serverless

Modificare il sito serverless.yml per integrare il tracciamento di Instana con il framework Serverless. Seguire i passaggi:

  1. Copiare l' ARN del livello dall'elenco e aggiungere l'ARN alla sezione dei livelli della definizione della funzione di destinazione.

  2. Aggiungere le variabili d'ambiente INSTANA_AGENT_KEY, INSTANA_ENDPOINT_URL e LAMBDA_HANDLER. Per ulteriori informazioni, vedere Configurazione di Instana AutoTrace.

Si veda il seguente esempio serverless.yml:

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
 

Offline senza server

Prerequisito: Assicurarsi di aver seguito i passi 1 e 2 della sezione Integrazione di Instana Tracing con Serverless Framework.

Modificare il file serverless.yml per interconnettere Instana con Serverless Framework e Serverless Offline. Seguire i passaggi:

  1. Impostate la variabile d'ambiente NODE_PATH come $NODE_PATH:/opt/nodejs/node_modules.
  2. Impostare useDocker il campo da true nella sezione custom . Quindi il livello Instana verrà scaricato automaticamente in un contenitore Docker.

Si veda il seguente esempio serverless.yml:

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: Assicurarsi di aver seguito i passi 1 e 2 della sezione Integrazione di Instana Tracing con Serverless Framework.

Modificare il file serverless.yml per interconnettere Instana con Serverless Framework e Serverless Webpack.

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

Si veda il seguente esempio serverless.yml:

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
 

Note:

Strati lambda Instana

Il livello Node.js include l' estensione Instana AWS Lambda. I dati di monitoraggio e le tracce vengono scaricati localmente all'estensione Instana Lambda, che li inoltra al backend di Instana. Questa caratteristica offre il seguente vantaggio: la funzione Lambda risponde al client che l'ha invocata subito dopo il termine del gestore, senza attendere l'invio dei dati al backend di Instana.

Questa funzione è limitata alle funzioni Lambda configurate con una memoria di almeno 256 MB. È possibile disabilitare l'estensione Instana Lambda impostando la variabile d'ambiente INSTANA_DISABLE_LAMBDA_EXTENSION a una stringa non vuota per la funzione Lambda.

Nota: Seguire la configurazione di Instana AutoTrace per utilizzare il livello Instana Lambda.
Nota: Instana non offre strati Lambda nelle regioni GovCloud (us-gov-west-1 e us-gov-east-1). Se si vuole usare Instana nelle regioni GovCloud, è necessario installare manualmente il pacchetto Instana Node.js @instana/aws-lambda e avvolgere la funzione di gestione come descritto nella sezione Installazione manuale di @instana/aws-lambda.

Architettura x86_64

Gli ARN dell'ultima versione dei livelli AWS Lambda per i runtime Lambda elencati in Runtime supportati sono i seguenti, per regione:

Regione ARN @instana/aws-lambda Versione
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs:150 5.0.2
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs:149 5.0.2
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs:36 5.0.2
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs:305 5.0.2
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs:303 5.0.2
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs:149 5.0.2
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs:303 5.0.2
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs:149 5.0.2
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs:303 5.0.2
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs:302 5.0.2
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs:148 5.0.2
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs:148 5.0.2
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs:97 5.0.2
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs:18 5.0.2
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs:54 5.0.2
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs:301 5.0.2
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs:129 5.0.2
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs:78 5.0.1
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs:82 5.0.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs:279 5.0.2
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs:125 5.0.2
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs:279 5.0.2
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs:125 5.0.2
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs:125 5.0.2
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs:279 5.0.2
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs:279 5.0.2
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs:279 5.0.2
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs:122 5.0.2
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs:124 5.0.2
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs:124 5.0.2
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs:52 5.0.2
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs:278 5.0.2
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs:278 5.0.2
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs:278 5.0.2
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs:278 5.0.2
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs:278 5.0.2

Cioè, 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 della Cina).

Assicuratevi di utilizzare sempre le versioni più recenti e di aggiornare la versione del layer che state utilizzando a intervalli regolari per beneficiare delle nuove funzionalità e delle correzioni che forniamo quando pubblichiamo una nuova versione del layer.

Architettura arm64

Regione ARN @instana/aws-lambda Versione
af-south-1 arn:aws:lambda:af-south-1:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-east-1 arn:aws:lambda:ap-east-1:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-east-2 arn:aws:lambda:ap-east-2:410797082306:layer:instana-nodejs-arm64:35 5.0.2
ap-northeast-1 arn:aws:lambda:ap-northeast-1:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ap-northeast-2 arn:aws:lambda:ap-northeast-2:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ap-northeast-3 arn:aws:lambda:ap-northeast-3:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-south-1 arn:aws:lambda:ap-south-1:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ap-south-2 arn:aws:lambda:ap-south-2:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-southeast-1 arn:aws:lambda:ap-southeast-1:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ap-southeast-2 arn:aws:lambda:ap-southeast-2:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ap-southeast-3 arn:aws:lambda:ap-southeast-3:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-southeast-4 arn:aws:lambda:ap-southeast-4:410797082306:layer:instana-nodejs-arm64:123 5.0.2
ap-southeast-5 arn:aws:lambda:ap-southeast-5:410797082306:layer:instana-nodejs-arm64:80 5.0.2
ap-southeast-6 arn:aws:lambda:ap-southeast-6:410797082306:layer:instana-nodejs-arm64:18 5.0.2
ap-southeast-7 arn:aws:lambda:ap-southeast-7:410797082306:layer:instana-nodejs-arm64:53 5.0.2
ca-central-1 arn:aws:lambda:ca-central-1:410797082306:layer:instana-nodejs-arm64:162 5.0.2
ca-west-1 arn:aws:lambda:ca-west-1:410797082306:layer:instana-nodejs-arm64:107 5.0.2
cn-north-1 arn:aws-cn:lambda:cn-north-1:107998019096:layer:instana-nodejs-arm64:72 5.0.1
cn-northwest-1 arn:aws-cn:lambda:cn-northwest-1:107998019096:layer:instana-nodejs-arm64:78 5.0.1
eu-central-1 arn:aws:lambda:eu-central-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
eu-central-2 arn:aws:lambda:eu-central-2:410797082306:layer:instana-nodejs-arm64:120 5.0.2
eu-north-1 arn:aws:lambda:eu-north-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
eu-south-1 arn:aws:lambda:eu-south-1:410797082306:layer:instana-nodejs-arm64:120 5.0.2
eu-south-2 arn:aws:lambda:eu-south-2:410797082306:layer:instana-nodejs-arm64:120 5.0.2
eu-west-1 arn:aws:lambda:eu-west-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
eu-west-2 arn:aws:lambda:eu-west-2:410797082306:layer:instana-nodejs-arm64:159 5.0.2
eu-west-3 arn:aws:lambda:eu-west-3:410797082306:layer:instana-nodejs-arm64:159 5.0.2
il-central-1 arn:aws:lambda:il-central-1:410797082306:layer:instana-nodejs-arm64:118 5.0.2
me-central-1 arn:aws:lambda:me-central-1:410797082306:layer:instana-nodejs-arm64:120 5.0.2
me-south-1 arn:aws:lambda:me-south-1:410797082306:layer:instana-nodejs-arm64:120 5.0.2
mx-central-1 arn:aws:lambda:mx-central-1:410797082306:layer:instana-nodejs-arm64:51 5.0.2
sa-east-1 arn:aws:lambda:sa-east-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
us-east-1 arn:aws:lambda:us-east-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
us-east-2 arn:aws:lambda:us-east-2:410797082306:layer:instana-nodejs-arm64:155 5.0.2
us-west-1 arn:aws:lambda:us-west-1:410797082306:layer:instana-nodejs-arm64:159 5.0.2
us-west-2 arn:aws:lambda:us-west-2:410797082306:layer:instana-nodejs-arm64:159 5.0.2

Supporto SSM

Disponibile dalla versione 99 dello strato instana-nodejs/@instana/aws-lambda@1.138.0.

È possibile fornire la chiave dell'agente Instana anche tramite il Parameter Store di AWS SSM ( System Manager ).

  1. Aggiungere la chiave agente Instana all'archivio dei parametri SSM. Ricordare o copiare il nome del parametro.
  2. Rimuovere INSTANA_AGENT_KEY dalle variabili d'ambiente.
  3. Aggiungere INSTANA_SSM_PARAM_NAME alle variabili d'ambiente con il nome del parametro copiato.
  4. Se il parametro è stato aggiunto come "SecureString",, è necessario impostare anche INSTANA_SSM_DECRYPTION=true. Se si è utilizzato il tipo "String", non è necessario impostare alcuna variabile aggiuntiva.
Nota: Importante: il supporto SSM ha le seguenti considerazioni: Se non si rimuove INSTANA_AGENT_KEY dalle variabili d'ambiente, le variabili d'ambiente SSM vengono ignorate. Se la funzione Lambda è di breve durata, il fetch SSM potrebbe non essere completato prima del termine della funzione. In questi casi, la chiave agente Instana potrebbe non essere recuperata. Per evitare questo problema, fornire la chiave direttamente attraverso la variabile d'ambiente INSTANA_AGENT_KEY.

Utilizzo dell'API Instana nelle funzioni Lambda

È possibile accedere e utilizzare l'intera API Instana nel codice Lambda, proprio come in una semplice app Node.js vanilla che utilizza @instana/collector.

Se si utilizza il livello Lambda di Instana Node.js e il gestore di auto-wrap, è necessario aggiungere la seguente riga al codice:

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

Se si utilizza il wrapping manuale, questa riga è già presente nel file del gestore Lambda.

Nota: se si utilizza il livello Lambda di Instana Node.js, non aggiungere il pacchetto @instana/aws-lambda come dipendenza al file package.json . Questo pacchetto è fornito dal livello Instana Node.js Lambda. L'aggiunta come dipendenza mentre si utilizza anche il livello Lambda non è supportata.

Se il codice della funzione Lambda è composto da più file sorgenti, è possibile aggiungere l'istruzione const instana = require('@instana/aws-lambda'); anche in altri file di codice sorgente per ottenere l'accesso all'API Instana Node.js.

Variabili d'ambiente aggiuntive

Nome Predefinito Valore Descrizione
INSTANA_DISABLE_LAMBDA_EXTENSION false Qualsiasi stringa non vuota. Disattivare 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, abilitatela 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à di debug.
INSTANA_TIMEOUT 1000 Numero Timeout per l'invio di dati al backend di Instana, in millisecondi.