Abilita le tue applicazioni su Lambda - Amazon CloudWatch

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

Abilita le tue applicazioni su Lambda

Puoi abilitare Application Signals per le tue funzioni Lambda. Application Signals strumenta automaticamente le funzioni Lambda utilizzando le librerie AWS Distro for OpenTelemetry (ADOT) avanzate, fornite tramite un livello Lambda. Questo AWS Lambda Layer per OpenTelemetry pacchetti e distribuisce le librerie necessarie per la strumentazione automatica per Application Signals.

Oltre a supportare Application Signals, questo layer Lambda è anche un componente del OpenTelemetry supporto Lambda e fornisce funzionalità di tracciamento.

Puoi anche migliorare l'osservabilità di Lambda utilizzando la ricerca delle transazioni, che consente l'acquisizione di intervalli di traccia per l'invocazione della funzione Lambda senza campionamento. Questa funzionalità consente di raccogliere intervalli per le funzioni, indipendentemente dal flag nella propagazione del contesto di traccia. sampled Ciò garantisce che non vi sia alcun impatto aggiuntivo sui servizi dipendenti a valle. Abilitando la ricerca delle transazioni su Lambda, ottieni una visibilità completa sulle prestazioni delle tue funzioni e puoi risolvere i problemi che si verificano raramente. Per iniziare, consulta Ricerca di transazioni

Nozioni di base

Esistono tre metodi per abilitare Application Signals per le funzioni Lambda.

Dopo aver abilitato Application Signals per una funzione Lambda, occorrono alcuni minuti prima che la telemetria di quella funzione venga visualizzata nella console Application Signals.

  • Usa la console Application Signals CloudWatch

  • Usa la console Lambda

  • Aggiungi manualmente il AWS Lambda Layer per OpenTelemetry al runtime della funzione Lambda.

Ciascuno di questi metodi aggiunge il AWS Lambda Layer for OpenTelemetry alla tua funzione.

Usa la console CloudWatch Application Signals

Usa questi passaggi per utilizzare la console Application Signals per abilitare Application Signals per una funzione Lambda.

  1. Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/.

  2. Nel riquadro di navigazione, scegli Application Signals, Servizi.

  3. Nell'area dell'elenco dei servizi, scegli Abilita segnali applicativi.

  4. Scegli la piastrella Lambda.

  5. Seleziona ogni funzione che desideri abilitare per Application Signals, quindi scegli Fine.

Usa la console Lambda

Usa questi passaggi per utilizzare la console Lambda per abilitare Application Signals per una funzione Lambda.

  1. Apri la AWS Lambda console all'indirizzo. https://console.aws.amazon.com/lambda/

  2. Nel riquadro di navigazione, scegli Funzioni, quindi scegli il nome della funzione che desideri abilitare.

  3. Scegli la scheda Configurazione, quindi scegli Strumenti di monitoraggio e operazioni.

  4. Scegli Modifica.

  5. Nella sezione Segnali CloudWatch applicativi e raggi X, seleziona sia Raccogli automaticamente le tracce delle applicazioni e le metriche standard delle applicazioni con Application Signals sia Raccogli automaticamente le tracce del servizio Lambda per la visibilità end-to-end con X-Ray. .

  6. Scegli Save (Salva).

Abilita Application Signals su Lambda utilizzando AWS CDK

Se non hai ancora abilitato Application Signals in questo account, devi concedere ad Application Signals le autorizzazioni necessarie per scoprire i tuoi servizi. Per ulteriori informazioni, consulta Abilita Application Signals nel tuo account.

  1. Abilita Application Signals per le tue applicazioni

    import { aws_applicationsignals as applicationsignals } from 'aws-cdk-lib'; const cfnDiscovery = new applicationsignals.CfnDiscovery(this, 'ApplicationSignalsServiceRole', { } );

    La CloudFormation risorsa Discovery concede ad Application Signals le seguenti autorizzazioni:

    • xray:GetServiceGraph

    • logs:StartQuery

    • logs:GetQueryResults

    • cloudwatch:GetMetricData

    • cloudwatch:ListMetrics

    • tag:GetResources

    Per ulteriori informazioni su questo ruolo, consulta Autorizzazioni di ruolo collegate al servizio per Application Signals CloudWatch .

  2. Aggiungi la policy IAM CloudWatchLambdaApplicationSignalsExecutionRolePolicy alla funzione lambda.

    const fn = new Function(this, 'DemoFunction', { code: Code.fromAsset('$YOUR_LAMBDA.zip'), runtime: Runtime.PYTHON_3_12, handler: '$YOUR_HANDLER' }) fn.role?.addManagedPolicy(ManagedPolicy.fromAwsManagedPolicyName('CloudWatchLambdaApplicationSignalsExecutionRolePolicy'));
  3. Sostituisci $AWS_LAMBDA_LAYER_FOR_OTEL_ARN con l'effettivo AWS Lambda Layer for OpenTelemetry ARN nella regione corrispondente.

    fn.addLayers(LayerVersion.fromLayerVersionArn( this, 'AwsLambdaLayerForOtel', '$AWS_LAMBDA_LAYER_FOR_OTEL_ARN' )) fn.addEnvironment("AWS_LAMBDA_EXEC_WRAPPER", "/opt/otel-instrument");

(Facoltativo) Monitora lo stato delle applicazioni

Dopo aver abilitato le applicazioni su Lambda, puoi monitorare lo stato delle applicazioni. Per ulteriori informazioni, consulta Monitoraggio dell'integrità operativa delle applicazioni con Application Signals.

Abilita manualmente i segnali applicativi.

Usa questi passaggi per abilitare manualmente Application Signals per una funzione Lambda.

  1. Aggiungi il AWS Lambda Layer per OpenTelemetry al tuo runtime Lambda. Per trovare il layer ARN, vedere. AWS Lambda Layer per OpenTelemetry ARNs

  2. Aggiungere la variabile di ambiente AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument

    Aggiungi la variabile di ambiente LAMBDA_APPLICATION_SIGNALS_REMOTE_ENVIRONMENT per configurare ambienti Lambda personalizzati. Per impostazione predefinita, gli ambienti lambda sono configurati per. lambda:default

  3. Collega la policy IAM AWS gestita CloudWatchLambdaApplicationSignalsExecutionRolePolicyal ruolo di esecuzione Lambda.

  4. (Facoltativo) Ti consigliamo di abilitare il tracciamento attivo Lambda per ottenere un'esperienza di tracciamento migliore. Per ulteriori informazioni, consulta Visualizzare le chiamate alla funzione Lambda utilizzando. AWS X-Ray

Disattiva manualmente i segnali applicativi

Per disabilitare manualmente Application Signals per una funzione Lambda, rimuovi il AWS Lambda Layer for dal runtime Lambda e OpenTelemetry rimuovi la variabile di ambiente. AWS_LAMBDA_EXEC_WRAPPER=/opt/otel-instrument

Configurazione di Application Signals

Puoi usare questa sezione per configurare Application Signals in Lambda.

Raggruppamento di più funzioni Lambda in un unico servizio

La variabile di ambiente OTEL_SERVICE_NAME imposta il nome del servizio. Questo verrà visualizzato come nome del servizio per l'applicazione nei dashboard di Application Signals. Puoi assegnare lo stesso nome di servizio a più funzioni Lambda e queste verranno unite in un unico servizio in Application Signals. Quando non si fornisce un valore per questa chiave, viene utilizzato il nome predefinito della funzione Lambda.

Campionamento

Per impostazione predefinita, la strategia di campionamento delle tracce è basata sui dati principali. È possibile modificare la strategia di campionamento impostando le variabili di ambiente. OTEL_TRACES_SAMPLER

Ad esempio, imposta la frequenza di campionamento delle tracce al 30%.

OTEL_TRACES_SAMPLER=traceidratio OTEL_TRACES_SAMPLER_ARG=0.3

Per ulteriori informazioni, vedere Specificazione delle variabili di OpenTelemetry ambiente.

Abilitazione di tutta la strumentazione della libreria

Per ridurre gli avvii a freddo di Lambda, per impostazione predefinita, solo la strumentazione AWS SDK e HTTP è abilitata per Python, Node e Java. Puoi impostare variabili di ambiente per abilitare la strumentazione per altre librerie utilizzate nella tua funzione Lambda.

  • Python: OTEL_PYTHON_DISABLED_INSTRUMENTATIONS=none

  • Nodo — OTEL_NODE_DISABLED_INSTRUMENTATIONS=none

  • Giava — OTEL_INSTRUMENTATION_COMMON_DEFAULT_ENABLED=true

AWS Lambda Layer per OpenTelemetry ARNs

Le tabelle seguenti elencano ARNs come utilizzare il AWS Lambda Layer OpenTelemetry per ogni regione in cui è supportato.

Python
Regione ARN

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroPython:16

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroPython:13

Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroPython:20

Stati Uniti occidentali (Oregon)

arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroPython:20

Africa (Città del Capo)

arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroPython:10

Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroPython:10

Asia Pacific (Hyderabad)

arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroPython:10

Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroPython:10

Asia Pacifico (Melbourne)

arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroPython:10

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Asia Pacific (Osaka)

arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroPython:12

Asia Pacific (Seul)

arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroPython:13

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:12

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroPython:13

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Canada (Centrale)

arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Francoforte)

arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Irlanda)

arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Londra)

arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Milano)

arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroPython:10

Europa (Parigi)

arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Spagna)

arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroPython:10

Europa (Stoccolma)

arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Europa (Zurigo)

arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroPython:10

Israele (Tel Aviv)

arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroPython:10

Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroPython:10

Medio Oriente (Emirati Arabi Uniti)

arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroPython:10

Sud America (San Paolo)

arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroPython:13

Node.js
Regione ARN

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroJs:8

Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Stati Uniti occidentali (Oregon)

arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroJs:8

Africa (Città del Capo)

arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroJs:8

Asia Pacific (Hyderabad)

arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroJs:6

Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Melbourne)

arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Asia Pacific (Osaka)

arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroJs:8

Asia Pacific (Seul)

arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroJs:8

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Canada (Centrale)

arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Francoforte)

arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Irlanda)

arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Londra)

arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Milano)

arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroJs:8

Europa (Parigi)

arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Spagna)

arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroJs:8

Europa (Stoccolma)

arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

Europa (Zurigo)

arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroJs:8

Israele (Tel Aviv)

arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroJs:8

Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroJs:8

Medio Oriente (Emirati Arabi Uniti)

arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroJs:8

Sud America (San Paolo)

arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroJs:8

.Net
Regione ARN

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:6

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Stati Uniti occidentali (Oregon)

arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Africa (Città del Capo)

arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacific (Hyderabad)

arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Melbourne)

arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacific (Osaka)

arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacific (Seul)

arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Canada (Centrale)

arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Francoforte)

arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Irlanda)

arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Londra)

arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Milano)

arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Parigi)

arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Spagna)

arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Stoccolma)

arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Europa (Zurigo)

arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroDotNet:5

Israele (Tel Aviv)

arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroDotNet:5

Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroDotNet:5

Medio Oriente (Emirati Arabi Uniti)

arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroDotNet:5

Sud America (San Paolo)

arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroDotNet:5

Java
Regione ARN

Stati Uniti orientali (Virginia settentrionale)

arn:aws:lambda:us-east-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Stati Uniti orientali (Ohio)

arn:aws:lambda:us-east-2:615299751070:layer:AWSOpenTelemetryDistroJava:5

Stati Uniti occidentali (California settentrionale)

arn:aws:lambda:us-west-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Stati Uniti occidentali (Oregon)

arn:aws:lambda:us-west-2:615299751070:layer:AWSOpenTelemetryDistroJava:5

Africa (Città del Capo)

arn:aws:lambda:af-south-1:904233096616:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Hong Kong)

arn:aws:lambda:ap-east-1:888577020596:layer:AWSOpenTelemetryDistroJava:5

Asia Pacific (Hyderabad)

arn:aws:lambda:ap-south-2:796973505492:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Giacarta)

arn:aws:lambda:ap-southeast-3:039612877180:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Melbourne)

arn:aws:lambda:ap-southeast-4:713881805771:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Mumbai)

arn:aws:lambda:ap-south-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Asia Pacific (Osaka)

arn:aws:lambda:ap-northeast-3:615299751070:layer:AWSOpenTelemetryDistroJava:5

Asia Pacific (Seul)

arn:aws:lambda:ap-northeast-2:615299751070:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Singapore)

arn:aws:lambda:ap-southeast-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Sydney)

arn:aws:lambda:ap-southeast-2:615299751070:layer:AWSOpenTelemetryDistroJava:5

Asia Pacifico (Tokyo)

arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Canada (Centrale)

arn:aws:lambda:ca-central-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Francoforte)

arn:aws:lambda:eu-central-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Irlanda)

arn:aws:lambda:eu-west-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Londra)

arn:aws:lambda:eu-west-2:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Milano)

arn:aws:lambda:eu-south-1:257394471194:layer:AWSOpenTelemetryDistroJava:5

Europa (Parigi)

arn:aws:lambda:eu-west-3:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Spagna)

arn:aws:lambda:eu-south-2:490004653786:layer:AWSOpenTelemetryDistroJava:5

Europa (Stoccolma)

arn:aws:lambda:eu-north-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Europa (Zurigo)

arn:aws:lambda:eu-central-2:156041407956:layer:AWSOpenTelemetryDistroJava:5

Israele (Tel Aviv)

arn:aws:lambda:il-central-1:746669239226:layer:AWSOpenTelemetryDistroJava:5

Medio Oriente (Bahrein)

arn:aws:lambda:me-south-1:980921751758:layer:AWSOpenTelemetryDistroJava:5

Medio Oriente (Emirati Arabi Uniti)

arn:aws:lambda:me-central-1:739275441131:layer:AWSOpenTelemetryDistroJava:5

Sud America (San Paolo)

arn:aws:lambda:sa-east-1:615299751070:layer:AWSOpenTelemetryDistroJava:5

Implementa le funzioni Lambda utilizzando il contenitore Amazon ECR

Le funzioni Lambda distribuite come immagini di container non supportano i livelli Lambda nel modo tradizionale. Quando si utilizzano immagini di contenitori, non è possibile collegare un layer come si farebbe con altri metodi di distribuzione Lambda. È invece necessario incorporare manualmente il contenuto del layer nell'immagine del contenitore durante il processo di creazione.

Java

Puoi imparare a integrare AWS Lambda Layer for OpenTelemetry nella tua funzione Java Lambda containerizzata, scaricare layer.zip l'artefatto e integrarlo nel contenitore di funzioni Java Lambda per abilitare il monitoraggio dei segnali applicativi.

Prerequisiti

  • AWS CLI configurato con le tue credenziali

  • Docker installato

  • Queste istruzioni presuppongono che tu sia sulla piattaforma x86_64

  1. Imposta la struttura del progetto

    Crea una directory per la tua funzione Lambda

    mkdir java-appsignals-container-lambda && \ cd java-appsignals-container-lambda

    Crea una struttura di progetto Maven

    mkdir -p src/main/java/com/example/java/lambda mkdir -p src/main/resources
  2. Crea Dockerfile

    Scarica e integra il supporto OpenTelemetry Layer with Application Signals direttamente nell'immagine del tuo contenitore Lambda. A tale scopo, viene creato il Dockerfile file.

    FROM public.ecr.aws/lambda/java:21 # Install utilities RUN dnf install -y unzip wget maven # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-java-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip # Copy and build function code COPY pom.xml ${LAMBDA_TASK_ROOT} COPY src ${LAMBDA_TASK_ROOT}/src RUN mvn clean package -DskipTests # Copy the JAR file to the Lambda runtime directory (from inside the container) RUN mkdir -p ${LAMBDA_TASK_ROOT}/lib/ RUN cp ${LAMBDA_TASK_ROOT}/target/function.jar ${LAMBDA_TASK_ROOT}/lib/ # Set the handler CMD ["com.example.java.lambda.App::handleRequest"]
    Nota

    Il layer.zip file contiene la OpenTelemetry strumentazione necessaria per il supporto di AWS Application Signals per monitorare la funzione Lambda.

    Le fasi di estrazione degli strati garantiscono:

    • I contenuti di layer.zip vengono estratti correttamente in /opt/ directory

    • Lo otel-instrument script riceve le autorizzazioni di esecuzione appropriate

    • Il file temporaneo layer.zip viene rimosso per ridurre le dimensioni dell'immagine

  3. Codice funzione Lambda: crea un file Java per il tuo gestore Lambda all'indirizzo src/main/java/com/example/lambda/App.java:

    Il tuo progetto dovrebbe assomigliare a:

    . ├── Dockerfile ├── pom.xml └── src └── main ├── java │ └── com │ └── example │ └── java │ └── lambda │ └── App.java └── resources
  4. Crea e distribuisci l'immagine del contenitore

    Imposta le variabili di ambiente

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Autenticazione con ECR

    Innanzitutto con l'ECR pubblico (per l'immagine di base):

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Quindi con il tuo ECR privato:

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Crea, tagga e pubblica la tua immagine

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest
  5. Creare e configurare la funzione Lambda

    Crea una nuova funzione utilizzando la console Lambda.

    Seleziona l'immagine del contenitore come opzione di distribuzione.

    Scegli Browse images per selezionare la tua immagine Amazon ECR.

  6. Test e verifiche: testa la tua Lambda con un semplice evento. Se l'integrazione dei livelli ha esito positivo, la Lambda viene visualizzata nella mappa dei servizi di Application Signals.

    Vedrai tracce e metriche per la tua funzione Lambda nella CloudWatch console.

Risoluzione dei problemi

Se Application Signals non funziona, controlla quanto segue:

  • Controllate i registri delle funzioni per eventuali errori relativi alla strumentazione OpenTelemetry

  • Verificate se la variabile AWS_LAMBDA_EXEC_WRAPPER di ambiente è impostata correttamente

  • Assicurati che l'estrazione dei livelli nel file Docker sia stata completata correttamente

  • Conferma se le autorizzazioni IAM sono allegate correttamente

  • Se necessario, aumentare le impostazioni di Timeout e Memory nella configurazione generale della funzione Lambda

.Net

Puoi imparare come integrare il supporto OpenTelemetry Layer with Application Signals nella tua funzione.Net Lambda containerizzata, scaricare l'layer.zipartefatto e integrarlo nella funzione.Net Lambda per abilitare il monitoraggio degli Application Signals.

Prerequisiti

  • AWS CLI configurato con le tue credenziali

  • Docker installato

  • .Net 8 SDK

  • Queste istruzioni presuppongono che tu sia su una piattaforma x86_64

  1. Imposta la struttura del progetto

    Crea una directory per l'immagine del contenitore della funzione Lambda

    mkdir dotnet-appsignals-container-lambda && \ cd dotnet-appsignals-container-lambda
  2. Crea Dockerfile

    Scarica e integra il supporto OpenTelemetry Layer with Application Signals direttamente nell'immagine del tuo contenitore Lambda. A tale scopo, viene creato il Dockerfile file.

    FROM public.ecr.aws/lambda/dotnet:8 # Install utilities RUN dnf install -y unzip wget dotnet-sdk-8.0 which # Add dotnet command to docker container's PATH ENV PATH="/usr/lib64/dotnet:${PATH}" # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-dotnet-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip WORKDIR ${LAMBDA_TASK_ROOT} # Copy the project files COPY dotnet-lambda-function/src/dotnet-lambda-function/*.csproj ${LAMBDA_TASK_ROOT}/ COPY dotnet-lambda-function/src/dotnet-lambda-function/Function.cs ${LAMBDA_TASK_ROOT}/ COPY dotnet-lambda-function/src/dotnet-lambda-function/aws-lambda-tools-defaults.json ${LAMBDA_TASK_ROOT}/ # Install dependencies and build the application RUN dotnet restore # Use specific runtime identifier and disable ReadyToRun optimization RUN dotnet publish -c Release -o out --self-contained false /p:PublishReadyToRun=false # Copy the published files to the Lambda runtime directory RUN cp -r out/* ${LAMBDA_TASK_ROOT}/ CMD ["dotnet-lambda-function::dotnet_lambda_function.Function::FunctionHandler"]
    Nota

    Il layer.zip file contiene la OpenTelemetry strumentazione necessaria per il supporto di AWS Application Signals per monitorare la funzione Lambda.

    Le fasi di estrazione degli strati garantiscono:

    • I contenuti di layer.zip vengono estratti correttamente in /opt/ directory

    • Lo otel-instrument script riceve le autorizzazioni di esecuzione appropriate

    • Il file temporaneo layer.zip viene rimosso per ridurre le dimensioni dell'immagine

  3. Codice della funzione Lambda: inizializza il tuo progetto Lambda utilizzando il modello Lambda .NET: AWS

    # Install the Lambda templates if you haven't already dotnet new -i Amazon.Lambda.Templates # Create a new Lambda project dotnet new lambda.EmptyFunction -n dotnet-lambda-function

    Il tuo progetto dovrebbe assomigliare a:

    . ├── Dockerfile └── dotnet-lambda-function ├── src │ └── dotnet-lambda-function │ ├── Function.cs │ ├── Readme.md │ ├── aws-lambda-tools-defaults.json │ └── dotnet-lambda-function.csproj └── test └── dotnet-lambda-function.Tests ├── FunctionTest.cs └── dotnet-lambda-function.Tests.csproj
  4. Crea e distribuisci l'immagine del contenitore

    Imposta le variabili di ambiente

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Aggiorna il Function.cs codice per:

    Aggiorna il dotnet-lambda-function.csproj codice per:

    <Project Sdk="Microsoft.NET.Sdk"> <PropertyGroup> <TargetFramework>net8.0>/TargetFramework> <ImplicitUsings>enable</ImplicitUsings> <Nullable>enable</Nullable> <GenerateRuntimeConfigurationFiles>true</GenerateRuntimeConfigurationFiles> <AWSProjectType>Lambda</AWSProjectType> <CopyLocalLockFileAssemblies>true</CopyLocalLockFileAssemblies> <PublishReadyToRun>true</PublishReadyToRun> </PropertyGroup> <ItemGroup> <PackageReference Include="Amazon.Lambda.Core" Version="2.5.0" /> <PackageReference Include="Amazon.Lambda.Serialization.SystemTextJson" Version="2.4.4" /> <PackageReference Include="AWSSDK.S3" Version="3.7.305.23" /> </ItemGroup> </Project>
  5. Crea e distribuisci l'immagine del contenitore

    Imposta le variabili di ambiente

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Autenticazione con Amazon ECR pubblico

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Autenticazione con Amazon ECR privato

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Crea un repository Amazon ECR (se necessario)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Crea, tagga e invia la tua immagine

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  6. Creare e configurare la funzione Lambda

    Crea una nuova funzione utilizzando la console Lambda.

    Seleziona l'immagine del contenitore come opzione di distribuzione.

    Scegli Browse images per selezionare la tua immagine Amazon ECR.

  7. Test e verifiche: testa la tua Lambda con un semplice evento. Se l'integrazione dei livelli ha esito positivo, la Lambda viene visualizzata nella mappa dei servizi di Application Signals.

    Vedrai tracce e metriche per la tua funzione Lambda nella CloudWatch console.

Risoluzione dei problemi

Se Application Signals non funziona, controlla quanto segue:

  • Controllate i registri delle funzioni per eventuali errori relativi alla strumentazione OpenTelemetry

  • Verificate se la variabile AWS_LAMBDA_EXEC_WRAPPER di ambiente è impostata correttamente

  • Assicurati che l'estrazione dei livelli nel file Docker sia stata completata correttamente

  • Conferma se le autorizzazioni IAM sono allegate correttamente

  • Se necessario, aumentare le impostazioni di Timeout e Memory nella configurazione generale della funzione Lambda

Node.js

Puoi imparare come integrare il supporto OpenTelemetry Layer with Application Signals nella funzione Lambda Node.js containerizzata, scaricare l'layer.zipartefatto e integrarlo nella funzione Lambda Node.js per abilitare il monitoraggio di Application Signals.

Prerequisiti

  • AWS CLI configurato con le tue credenziali

  • Docker installato

  • Queste istruzioni presuppongono che tu sia sulla piattaforma x86_64

  1. Imposta la struttura del progetto

    Crea una directory per l'immagine del contenitore della funzione Lambda

    mkdir nodejs-appsignals-container-lambda &&\ cd nodejs-appsignals-container-lambda
  2. Crea Dockerfile

    Scarica e integra il supporto OpenTelemetry Layer with Application Signals direttamente nell'immagine del tuo contenitore Lambda. A tale scopo, viene creato il Dockerfile file.

    # Dockerfile FROM public.ecr.aws/lambda/nodejs:22 # Install utilities RUN dnf install -y unzip wget # Download the OpenTelemetry Layer with AppSignals Support RUN wget https://github.com/aws-observability/aws-otel-js-instrumentation/releases/latest/download/layer.zip -O /tmp/layer.zip # Extract and include Lambda layer contents RUN mkdir -p /opt && \ unzip /tmp/layer.zip -d /opt/ && \ chmod -R 755 /opt/ && \ rm /tmp/layer.zip # Install npm dependencies RUN npm init -y RUN npm install # Copy function code COPY *.js ${LAMBDA_TASK_ROOT}/ # Set the CMD to your handler CMD [ "index.handler" ]
    Nota

    Il layer.zip file contiene la OpenTelemetry strumentazione necessaria per il supporto di AWS Application Signals per monitorare la funzione Lambda.

    Le fasi di estrazione degli strati garantiscono:

    • I contenuti di layer.zip vengono estratti correttamente in /opt/ directory

    • Lo otel-instrument script riceve le autorizzazioni di esecuzione appropriate

    • Il file temporaneo layer.zip viene rimosso per ridurre le dimensioni dell'immagine

  3. Codice funzione Lambda

    Crea un index.js file con il seguente contenuto:

    const { S3Client, ListBucketsCommand } = require('@aws-sdk/client-s3'); // Initialize S3 client const s3Client = new S3Client({ region: process.env.AWS_REGION }); exports.handler = async function(event, context) { console.log('Received event:', JSON.stringify(event, null, 2)); console.log('Handler initializing:', exports.handler.name); const response = { statusCode: 200, body: {} }; try { // List S3 buckets const command = new ListBucketsCommand({}); const data = await s3Client.send(command); // Extract bucket names const bucketNames = data.Buckets.map(bucket => bucket.Name); response.body = { message: 'Successfully retrieved buckets', buckets: bucketNames }; } catch (error) { console.error('Error listing buckets:', error); response.statusCode = 500; response.body = { message: `Error listing buckets: ${error.message}` }; } return response; };

    La struttura del tuo progetto dovrebbe assomigliare a questa:

    . ├── Dockerfile └── index.js
  4. Crea e distribuisci l'immagine del contenitore

    Imposta le variabili di ambiente

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Autenticazione con Amazon ECR pubblico

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Autenticazione con Amazon ECR privato

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Crea un repository Amazon ECR (se necessario)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Crea, tagga e invia la tua immagine

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  5. Creare e configurare la funzione Lambda

    Crea una nuova funzione utilizzando la console Lambda.

    Seleziona l'immagine del contenitore come opzione di distribuzione.

    Scegli Browse images per selezionare la tua immagine Amazon ECR.

  6. Test e verifiche: testa la tua Lambda con un semplice evento. Se l'integrazione dei livelli ha esito positivo, la Lambda viene visualizzata nella mappa dei servizi di Application Signals.

    Vedrai tracce e metriche per la tua funzione Lambda nella CloudWatch console.

Risoluzione dei problemi

Se Application Signals non funziona, controlla quanto segue:

  • Controllate i registri delle funzioni per eventuali errori relativi alla strumentazione OpenTelemetry

  • Verificate se la variabile AWS_LAMBDA_EXEC_WRAPPER di ambiente è impostata correttamente

  • Assicurati che l'estrazione dei livelli nel file Docker sia stata completata correttamente

  • Conferma se le autorizzazioni IAM sono allegate correttamente

  • Se necessario, aumentare le impostazioni di Timeout e Memory nella configurazione generale della funzione Lambda

Python

Puoi imparare come integrare il supporto OpenTelemetry Layer with Application Signals nella tua funzione Python Lambda containerizzata, scaricare l'layer.zipartefatto e integrarlo nella funzione Python Lambda per abilitare il monitoraggio di Application Signals.

Prerequisiti

  • AWS CLI configurato con le tue credenziali

  • Docker installato

  • Queste istruzioni presuppongono che tu sia sulla piattaforma x86_64

  1. Imposta la struttura del progetto

    Crea una directory per l'immagine del contenitore della funzione Lambda

    mkdir python-appsignals-container-lambda &&\ cd python-appsignals-container-lambda
  2. Crea Dockerfile

    Scarica e integra il supporto OpenTelemetry Layer with Application Signals direttamente nell'immagine del tuo contenitore Lambda. A tale scopo, viene creato il Dockerfile file.

    Nota

    Il layer.zip file contiene la OpenTelemetry strumentazione necessaria per il supporto di AWS Application Signals per monitorare la funzione Lambda.

    Le fasi di estrazione degli strati garantiscono:

    • I contenuti di layer.zip vengono estratti correttamente in /opt/ directory

    • Lo otel-instrument script riceve le autorizzazioni di esecuzione appropriate

    • Il file temporaneo layer.zip viene rimosso per ridurre le dimensioni dell'immagine

  3. Codice funzione Lambda

    Crea la tua funzione Lambda in un app.py file:

    import json import boto3 def lambda_handler(event, context): """ Sample Lambda function that can be used in a container image. Parameters: ----------- event: dict Input event data context: LambdaContext Lambda runtime information Returns: __ dict Response object """ print("Received event:", json.dumps(event, indent=2)) # Create S3 client s3 = boto3.client('s3') try: # List buckets response = s3.list_buckets() # Extract bucket names buckets = [bucket['Name'] for bucket in response['Buckets']] return { 'statusCode': 200, 'body': json.dumps({ 'message': 'Successfully retrieved buckets', 'buckets': buckets }) } except Exception as e: print(f"Error listing buckets: {str(e)}") return { 'statusCode': 500, 'body': json.dumps({ 'message': f'Error listing buckets: {str(e)}' }) }

    La struttura del tuo progetto dovrebbe assomigliare a questa:

    . ├── Dockerfile ├── app.py └── instructions.md
  4. Crea e distribuisci l'immagine del contenitore

    Imposta le variabili di ambiente

    AWS_ACCOUNT_ID=$(aws sts get-caller-identity --query Account --output text) AWS_REGION=$(aws configure get region) # For fish shell users: # set AWS_ACCOUNT_ID (aws sts get-caller-identity --query Account --output text) # set AWS_REGION (aws configure get region)

    Autenticazione con Amazon ECR pubblico

    aws ecr-public get-login-password --region us-east-1 | docker login --username AWS --password-stdin public.ecr.aws

    Autenticazione con Amazon ECR privato

    aws ecr get-login-password --region $AWS_REGION | docker login --username AWS --password-stdin $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com

    Crea un repository Amazon ECR (se necessario)

    aws ecr create-repository \ --repository-name lambda-appsignals-demo \ --region $AWS_REGION

    Crea, tagga e invia la tua immagine

    # Build the Docker image docker build -t lambda-appsignals-demo . # Tag the image docker tag lambda-appsignals-demo:latest $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest # Push the image docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_REGION.amazonaws.com/lambda-appsignals-demo:latest 5. Create and Configure the Lambda Function
  5. Creare e configurare la funzione Lambda

    Crea una nuova funzione utilizzando la console Lambda.

    Seleziona l'immagine del contenitore come opzione di distribuzione.

    Scegli Browse images per selezionare la tua immagine Amazon ECR.

  6. Test e verifiche: testa la tua Lambda con un semplice evento. Se l'integrazione dei livelli ha esito positivo, la Lambda viene visualizzata nella mappa dei servizi di Application Signals.

    Vedrai tracce e metriche per la tua funzione Lambda nella CloudWatch console.

Risoluzione dei problemi

Se Application Signals non funziona, controlla quanto segue:

  • Controllate i registri delle funzioni per eventuali errori relativi alla strumentazione OpenTelemetry

  • Verificate se la variabile AWS_LAMBDA_EXEC_WRAPPER di ambiente è impostata correttamente

  • Assicurati che l'estrazione dei livelli nel file Docker sia stata completata correttamente

  • Conferma se le autorizzazioni IAM sono allegate correttamente

  • Se necessario, aumentare le impostazioni di Timeout e Memory nella configurazione generale della funzione Lambda