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.
Apri la CloudWatch console all'indirizzo https://console.aws.amazon.com/cloudwatch/
. -
Nel riquadro di navigazione, scegli Application Signals, Servizi.
-
Nell'area dell'elenco dei servizi, scegli Abilita segnali applicativi.
-
Scegli la piastrella Lambda.
-
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.
Apri la AWS Lambda console all'indirizzo. https://console.aws.amazon.com/lambda/
-
Nel riquadro di navigazione, scegli Funzioni, quindi scegli il nome della funzione che desideri abilitare.
-
Scegli la scheda Configurazione, quindi scegli Strumenti di monitoraggio e operazioni.
-
Scegli Modifica.
-
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. .
-
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.
-
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 .
-
-
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'));
-
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.
-
Aggiungi il AWS Lambda Layer per OpenTelemetry al tuo runtime Lambda. Per trovare il layer ARN, vedere. AWS Lambda Layer per OpenTelemetry ARNs
-
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
-
Collega la policy IAM AWS gestita CloudWatchLambdaApplicationSignalsExecutionRolePolicyal ruolo di esecuzione Lambda.
-
(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
-
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
-
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
-
-
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
-
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
-
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.
-
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.zip
artefatto 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
-
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
-
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
-
-
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
-
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>
-
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
-
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.
-
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.zip
artefatto 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
-
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
-
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
-
-
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
-
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
-
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.
-
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.zip
artefatto 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
-
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
-
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
-
-
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
-
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
-
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.
-
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
-