Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
Instrumentierung von Python-Code in AWS Lambda
Lambda lässt sich mit integrieren AWS X-Ray , um Ihnen bei der Verfolgung, dem Debuggen und der Optimierung von Lambda-Anwendungen zu helfen. Sie können es verwenden X-Ray, um eine Anfrage zu verfolgen, während sie Ressourcen in Ihrer Anwendung durchläuft. Dazu können Lambda-Funktionen und andere Dienste gehören. AWS
Um Ablaufverfolgungsdaten an diese zu senden X-Ray, können Sie eine von drei SDK-Bibliotheken verwenden:
-
AWS Distro for OpenTelemetry (ADOT)
— Eine sichere, produktionsbereite, AWS unterstützte Distribution des (OTel) SDK. OpenTelemetry -
AWS X-Ray-SDK für Python— Ein SDK zum Generieren und Senden von Trace-Daten an. X-Ray
-
Powertools für AWS Lambda (Python) — Ein Entwickler-Toolkit zur Implementierung von Best Practices für Serverless und zur Steigerung der Geschwindigkeit von Entwicklern.
Jedes der SDKs bietet Möglichkeiten, Ihre Telemetriedaten an den Dienst zu senden. X-Ray Anschließend können Sie X-Ray die Leistungskennzahlen Ihrer Anwendung anzeigen, filtern und Einblicke in sie gewinnen, um Probleme und Optimierungsmöglichkeiten zu identifizieren.
Wichtig
Die X-Ray und Powertools for AWS Lambda SDKs sind Teil einer eng integrierten Instrumentierungslösung, die von angeboten wird. AWS Die ADOT Lambda Layers sind Teil eines branchenweiten Standards für die Verfolgung von Instrumenten, die im Allgemeinen mehr Daten erfassen, aber möglicherweise nicht für alle Anwendungsfälle geeignet sind. Mit beiden Lösungen können Sie eine durchgängige Ablaufverfolgung implementieren. X-Ray Weitere Informationen zur Auswahl zwischen diesen Optionen finden Sie unter Auswahl zwischen der AWS Distribution for Open Telemetry und SDKs. X-Ray
Sections
Verwenden Sie Powertools für AWS Lambda (Python) und AWS SAM zur Rückverfolgung
Verwenden Sie Powertools für AWS Lambda (Python) und die AWS CDK zur Rückverfolgung
Verwenden von ADOT zum Instrumentieren Ihrer Python-Funktionen
Verwenden Sie das X-Ray SDK zur Instrumentierung Ihrer Python-Funktionen
Speichern von Laufzeitabhängigkeiten in einer Ebene (X-Ray SDK)
Verwenden Sie Powertools für AWS Lambda (Python) und AWS SAM zur Rückverfolgung
Gehen Sie wie folgt vor, um eine Python-Beispielanwendung von Hello World mit integrierten Powertools for AWS Lambda (Python) -Modulen mithilfe von herunterzuladen, zu erstellen und bereitzustellen. AWS SAM Diese Anwendung implementiert ein grundlegendes API-Backend und verwendet Powertools zum Ausgeben von Protokollen, Metriken und Traces. Es besteht aus einem Amazon-API-Gateway-Endpunkt und einer Lambda-Funktion. Wenn Sie eine GET-Anfrage an den API Gateway-Endpunkt senden, ruft die Lambda-Funktion auf, sendet Protokolle und Metriken im Embedded Metric Format an und sendet CloudWatch Traces an. AWS X-Ray Die Funktion gibt eine Hello-World-Nachricht zurück.
Voraussetzungen
Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie Folgendes:
-
Python 3.11
-
AWS SAM CLI-Version 1.75 oder höher. Wenn Sie eine ältere Version der AWS SAM CLI haben, finden Sie weitere Informationen unter AWS SAM CLI https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade aktualisieren.
Stellen Sie ein Beispiel bereit AWS SAM Anwendung
-
Initialisieren Sie die Anwendung mit der Hello World Python-Vorlage.
sam init --app-template hello-world-powertools-python --name sam-app --package-type Zip --runtime python3.11 --no-tracing -
Entwickeln Sie die App.
cd sam-app && sam build -
Stellen Sie die Anwendung bereit.
sam deploy --guided -
Folgen Sie den Anweisungen auf dem Bildschirm. Um die im interaktiven Erlebnis bereitgestellten Standardoptionen zu akzeptieren, drücken Sie
Enter.Anmerkung
Für ist die Autorisierung HelloWorldFunction möglicherweise nicht definiert. Ist das in Ordnung? , stellen Sie sicher, dass Sie eintreten
y. -
Rufen Sie die URL der bereitgestellten Anwendung ab:
aws cloudformation describe-stacks --stack-name sam-app --query 'Stacks[0].Outputs[?OutputKey==`HelloWorldApi`].OutputValue' --output text -
Rufen Sie den API-Endpunkt auf:
curl -X GET<URL_FROM_PREVIOUS_STEP>Wenn der Link erfolgreich ausgeführt wurde, sehen Sie die folgende Antwort:
{"message":"hello world"} -
Führen Sie sam traces aus, um die Traces für die Funktion zu erhalten.
sam tracesDas Nachverfolgungsergebnis sieht folgendermaßen aus:
New XRay Service Graph Start time: 2023-02-03 14:59:50+00:00 End time: 2023-02-03 14:59:50+00:00 Reference Id: 0 - (Root) AWS::Lambda - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [1] Summary_statistics: - total requests: 1 - ok count(2XX): 1 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0.924 Reference Id: 1 - AWS::Lambda::Function - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [] Summary_statistics: - total requests: 1 - ok count(2XX): 1 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0.016 Reference Id: 2 - client - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [0] Summary_statistics: - total requests: 0 - ok count(2XX): 0 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0 XRay Event [revision 1] at (2023-02-03T14:59:50.204000) with id (1-63dd2166-434a12c22e1307ff2114f299) and duration (0.924s) - 0.924s - sam-app-HelloWorldFunction-YBg8yfYtOc9j [HTTP: 200] - 0.016s - sam-app-HelloWorldFunction-YBg8yfYtOc9j - 0.739s - Initialization - 0.016s - Invocation - 0.013s - ## lambda_handler - 0.000s - ## app.hello - 0.000s - Overhead -
Dies ist ein öffentlicher API-Endpunkt, der über das Internet zugänglich ist. Es wird empfohlen, dass Sie den Endpunkt nach dem Testen löschen.
sam delete
X-Ray führt nicht alle Anfragen auf Ihre Bewerbung zurück. X-Ray wendet einen Stichprobenalgorithmus an, um sicherzustellen, dass die Ablaufverfolgung effizient ist, und liefert gleichzeitig eine repräsentative Stichprobe aller Anfragen. Die Samplingrate beträgt 1 Anforderung pro Sekunde und 5 Prozent aller weiteren Anforderungen. Sie können die X-Ray Samplingrate für Ihre Funktionen nicht konfigurieren.
Verwenden Sie Powertools für AWS Lambda (Python) und die AWS CDK zur Rückverfolgung
Gehen Sie wie folgt vor, um eine Python-Beispielanwendung von Hello World mit integrierten Powertools for AWS Lambda (Python) -Modulen mithilfe von herunterzuladen, zu erstellen und bereitzustellen. AWS CDK Diese Anwendung implementiert ein grundlegendes API-Backend und verwendet Powertools zum Ausgeben von Protokollen, Metriken und Traces. Es besteht aus einem Amazon-API-Gateway-Endpunkt und einer Lambda-Funktion. Wenn Sie eine GET-Anfrage an den API Gateway-Endpunkt senden, ruft die Lambda-Funktion auf, sendet Protokolle und Metriken im Embedded Metric Format an und sendet CloudWatch Traces an. AWS X-Ray Die Funktion gibt eine Hello-World-Nachricht zurück.
Voraussetzungen
Zur Durchführung der Schritte in diesem Abschnitt benötigen Sie Folgendes:
-
Python 3.11
-
AWS SAM CLI-Version 1.75 oder höher. Wenn Sie eine ältere Version der AWS SAM CLI haben, finden Sie weitere Informationen unter AWS SAM CLI https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/manage-sam-cli-versions.html#manage-sam-cli-versions-upgrade aktualisieren.
Stellen Sie ein Beispiel bereit AWS CDK Anwendung
-
Erstellen Sie ein Projektverzeichnis für Ihre neue Anwendung.
mkdir hello-world cd hello-world -
Initialisieren Sie die App.
cdk init app --language python -
Installieren Sie die Python-Abhängigkeiten.
pip install -r requirements.txt Erstellen Sie ein Verzeichnis lambda_function unter dem Stammordner.
mkdir lambda_function cd lambda_functionErstellen Sie eine Datei namens app.py und fügen Sie den folgenden Code zur Datei hinzu. Dies ist der Code für die Lambda-Funktion.
from aws_lambda_powertools.event_handler import APIGatewayRestResolver from aws_lambda_powertools.utilities.typing import LambdaContext from aws_lambda_powertools.logging import correlation_paths from aws_lambda_powertools import Logger from aws_lambda_powertools import Tracer from aws_lambda_powertools import Metrics from aws_lambda_powertools.metrics import MetricUnit app = APIGatewayRestResolver() tracer = Tracer() logger = Logger() metrics = Metrics(namespace="PowertoolsSample") @app.get("/hello") @tracer.capture_method def hello(): # adding custom metrics # See: https://docs.powertools.aws.dev/lambda-python/latest/core/metrics/ metrics.add_metric(name="HelloWorldInvocations", unit=MetricUnit.Count, value=1) # structured log # See: https://docs.powertools.aws.dev/lambda-python/latest/core/logger/ logger.info("Hello world API - HTTP 200") return {"message": "hello world"} # Enrich logging with contextual information from Lambda @logger.inject_lambda_context(correlation_id_path=correlation_paths.API_GATEWAY_REST) # Adding tracer # See: https://docs.powertools.aws.dev/lambda-python/latest/core/tracer/ @tracer.capture_lambda_handler # ensures metrics are flushed upon request completion/failure and capturing ColdStart metric @metrics.log_metrics(capture_cold_start_metric=True) def lambda_handler(event: dict, context: LambdaContext) -> dict: return app.resolve(event, context)-
Öffnen Sie das Verzeichnis hello_world. Sie sollten eine Datei mit dem Namen hello_world_stack.py sehen.
cd .. cd hello_world Öffnen Sie hello_world_stack.py und fügen Sie den folgenden Code in die Datei ein. Es enthält den Lambda-Konstruktor, der die Lambda-Funktion erstellt, Umgebungsvariablen für Powertools konfiguriert und die Protokollspeicherung auf eine Woche festlegt, sowie den ApiGatewayv 1-Konstruktor, der die REST-API erstellt.
from aws_cdk import ( Stack, aws_apigateway as apigwv1, aws_lambda as lambda_, CfnOutput, Duration ) from constructs import Construct class HelloWorldStack(Stack): def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None: super().__init__(scope, construct_id, **kwargs) # Powertools Lambda Layer powertools_layer = lambda_.LayerVersion.from_layer_version_arn( self, id="lambda-powertools", # At the moment we wrote this example, the aws_lambda_python_alpha CDK constructor is in Alpha, o we use layer to make the example simpler # See https://docs.aws.amazon.com/cdk/api/v2/python/aws_cdk.aws_lambda_python_alpha/README.html # Check all Powertools layers versions here: https://docs.powertools.aws.dev/lambda-python/latest/#lambda-layer layer_version_arn=f"arn:aws:lambda:{self.region}:017000801446:layer:AWSLambdaPowertoolsPythonV2:21" ) function = lambda_.Function(self, 'sample-app-lambda', runtime=lambda_.Runtime.PYTHON_3_11, layers=[powertools_layer], code = lambda_.Code.from_asset("./lambda_function/"), handler="app.lambda_handler", memory_size=128, timeout=Duration.seconds(3), architecture=lambda_.Architecture.X86_64, environment={ "POWERTOOLS_SERVICE_NAME": "PowertoolsHelloWorld", "POWERTOOLS_METRICS_NAMESPACE": "PowertoolsSample", "LOG_LEVEL": "INFO" } ) apigw = apigwv1.RestApi(self, "PowertoolsAPI", deploy_options=apigwv1.StageOptions(stage_name="dev")) hello_api = apigw.root.add_resource("hello") hello_api.add_method("GET", apigwv1.LambdaIntegration(function, proxy=True)) CfnOutput(self, "apiUrl", value=f"{apigw.url}hello")-
Stellen Sie die Anwendung bereit.
cd .. cdk deploy -
Rufen Sie die URL der bereitgestellten Anwendung ab:
aws cloudformation describe-stacks --stack-name HelloWorldStack --query 'Stacks[0].Outputs[?OutputKey==`apiUrl`].OutputValue' --output text -
Rufen Sie den API-Endpunkt auf:
curl -X GET<URL_FROM_PREVIOUS_STEP>Wenn der Link erfolgreich ausgeführt wurde, sehen Sie die folgende Antwort:
{"message":"hello world"} -
Führen Sie sam traces aus, um die Traces für die Funktion zu erhalten.
sam tracesDas Nachverfolgungsergebnis sieht folgendermaßen aus:
New XRay Service Graph Start time: 2023-02-03 14:59:50+00:00 End time: 2023-02-03 14:59:50+00:00 Reference Id: 0 - (Root) AWS::Lambda - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [1] Summary_statistics: - total requests: 1 - ok count(2XX): 1 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0.924 Reference Id: 1 - AWS::Lambda::Function - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [] Summary_statistics: - total requests: 1 - ok count(2XX): 1 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0.016 Reference Id: 2 - client - sam-app-HelloWorldFunction-YBg8yfYtOc9j - Edges: [0] Summary_statistics: - total requests: 0 - ok count(2XX): 0 - error count(4XX): 0 - fault count(5XX): 0 - total response time: 0 XRay Event [revision 1] at (2023-02-03T14:59:50.204000) with id (1-63dd2166-434a12c22e1307ff2114f299) and duration (0.924s) - 0.924s - sam-app-HelloWorldFunction-YBg8yfYtOc9j [HTTP: 200] - 0.016s - sam-app-HelloWorldFunction-YBg8yfYtOc9j - 0.739s - Initialization - 0.016s - Invocation - 0.013s - ## lambda_handler - 0.000s - ## app.hello - 0.000s - Overhead -
Dies ist ein öffentlicher API-Endpunkt, der über das Internet zugänglich ist. Es wird empfohlen, dass Sie den Endpunkt nach dem Testen löschen.
cdk destroy
Verwenden von ADOT zum Instrumentieren Ihrer Python-Funktionen
ADOT bietet vollständig verwaltete Lambda-Ebenen, die alles packen, was Sie zum Sammeln von Telemetriedaten mit dem OTel-SDK benötigen. Indem Sie diese Ebene verwenden, können Sie Ihre Lambda-Funktionen instrumentieren, ohne einen Funktionscode ändern zu müssen. Sie können Ihren Ebenen auch für die benutzerdefinierte Initialisierung von OTel konfigurieren. Weitere Informationen finden Sie unter Benutzerdefinierte Konfiguration für den ADOT Collector auf Lambda
Für Python-Laufzeiten können Sie den AWS -verwaltete Lambda-Layer für ADOT Python hinzufügen, um Ihre Funktionen automatisch zu instrumentieren. Dieser Layer funktioniert sowohl für arm64- als auch für x86_64-Architekturen. Eine ausführliche Anleitung zum Hinzufügen dieser Ebene finden Sie unter AWS Distro for OpenTelemetry Lambda Support for Python in der ADOT-Dokumentation.
Verwenden Sie das X-Ray SDK zur Instrumentierung Ihrer Python-Funktionen
Um Details zu Aufrufen aufzuzeichnen, die Ihre Lambda-Funktion an andere Ressourcen in Ihrer Anwendung vornimmt, können Sie auch AWS X-Ray-SDK für Python verwenden. Um das SDK zu erhalten, fügen Sie das aws-xray-sdk-Paket den Abhängigkeiten Ihrer Anwendung hinzu.
Beispiel requirements.txt
jsonpickle==1.3 aws-xray-sdk==2.4.3
In Ihrem Funktionscode können Sie AWS SDK-Clients instrumentieren, indem Sie die boto3 Bibliothek mit dem aws_xray_sdk.core Modul patchen.
Beispiel Funktion — Verfolgung einer AWS SDK-Client
import boto3 from aws_xray_sdk.core import xray_recorder from aws_xray_sdk.core import patch_all logger = logging.getLogger() logger.setLevel(logging.INFO) patch_all() client = boto3.client('lambda') client.get_account_settings() def lambda_handler(event, context): logger.info('## ENVIRONMENT VARIABLES\r' + jsonpickle.encode(dict(**os.environ))) ...
Nachdem Sie die richtigen Abhängigkeiten hinzugefügt und die erforderlichen Codeänderungen vorgenommen haben, aktivieren Sie das Tracing in der Konfiguration Ihrer Funktion über die Lambda-Konsole oder die API.
Aktivieren der Nachverfolgung mit der Lambda-Konsole
Gehen Sie folgendermaßen vor, um die aktive Nachverfolgung Ihrer Lambda-Funktion mit der Konsole umzuschalten:
So aktivieren Sie die aktive Nachverfolgung
Öffnen Sie die Seite Funktionen
der Lambda-Konsole. -
Wählen Sie eine Funktion aus.
Wählen Sie Configuration (Konfiguration) und dann Monitoring and operations tools (Überwachungs- und Produktionstools).
Wählen Sie unter Zusätzliche Überwachungstools die Option Bearbeiten aus.
-
Wählen Sie unter CloudWatch Anwendungssignale die Option Für Lambda-Service-Traces aktivieren aus. AWS X-Ray
-
Wählen Sie Speichern.
Aktivieren der Nachverfolgung mit der Lambda-API
Konfigurieren Sie die Ablaufverfolgung für Ihre Lambda-Funktion mit dem AWS CLI oder AWS SDK und verwenden Sie die folgenden API-Operationen:
Der folgende AWS CLI Beispielbefehl aktiviert die aktive Ablaufverfolgung für eine Funktion namens my-function.
aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active
Der Ablaufverfolgungsmodus ist Teil der versionsspezifischen Konfiguration, wenn Sie eine Version Ihrer Funktion veröffentlichen. Sie können den Ablaufverfolgungsmodus für eine veröffentlichte Version nicht ändern.
Die Protokollierung wird aktiviert mit CloudFormation
Verwenden Sie die Eigenschaft, um die Protokollierung AWS::Lambda::Function für eine Ressource in einer CloudFormation Vorlage zu aktivieren. TracingConfig
Beispiel function-inline.yml — Konfiguration verfolgen
Resources: function: Type: AWS::Lambda::Function Properties:TracingConfig: Mode: Active...
Verwenden Sie für eine AWS Serverless Application Model (AWS SAM) AWS::Serverless::Function -Ressource die Tracing Eigenschaft.
Beispiel template.yml — Konfiguration verfolgen
Resources: function: Type: AWS::Serverless::Function Properties:Tracing: Active...
Interpretieren einer Ablaufverfolgung X-Ray
Ihre Funktion benötigt die Berechtigung zum Hochladen von Trace-Daten zu X-Ray. Wenn Sie die aktive Nachverfolgung in der Lambda-Konsole aktivieren, fügt Lambda der Ausführungsrolle Ihrer Funktion die erforderlichen Berechtigungen hinzu. Andernfalls fügen Sie die AWSXRayDaemonWriteAccess
Nachdem Sie die aktive Nachverfolgung konfiguriert haben, können Sie bestimmte Anfragen über Ihre Anwendung beobachten. Das X-Ray Service-Diagramm zeigt Informationen zu Ihrer Anwendung und all ihren Komponenten. Das folgende Beispiel zeigt eine Anwendung mit zwei Funktionen. Die primäre Funktion verarbeitet Ereignisse und gibt manchmal Fehler zurück. Die zweite Funktion oben verarbeitet Fehler, die in der ersten Protokollgruppe erscheinen, und verwendet das AWS SDK X-Ray, um Amazon Simple Storage Service (Amazon S3) und Amazon CloudWatch Logs aufzurufen.
X-Ray verfolgt nicht alle Anfragen an Ihre Anwendung zurück. X-Ray wendet einen Stichprobenalgorithmus an, um sicherzustellen, dass die Ablaufverfolgung effizient ist, und liefert gleichzeitig eine repräsentative Stichprobe aller Anfragen. Die Samplingrate beträgt 1 Anforderung pro Sekunde und 5 Prozent aller weiteren Anforderungen. Sie können die X-Ray Samplingrate für Ihre Funktionen nicht konfigurieren.
In X-Ray zeichnet ein Trace Informationen über eine Anfrage auf, die von einem oder mehreren Diensten verarbeitet wird. Lambda zeichnet 2 Segmente pro Trace auf, wodurch zwei Knoten im Dienstgraphen entstehen. In der folgenden Abbildung werden diese beiden Knoten hervorgehoben:
Der erste Knoten auf der linken Seite stellt den Lambda-Service dar, der die Aufrufanforderung empfängt. Der zweite Knoten stellt Ihre spezifische Lambda-Funktion dar. Das folgende Beispiel zeigt eine Nachverfolgung mit diesen zwei Segmenten. Beide heißen my-function, aber einer hat einen Ursprung von AWS::Lambda und der andere hat einen Ursprung von AWS::Lambda::Function. Wenn das AWS::Lambda-Segment einen Fehler anzeigt, hatte der Lambda-Service ein Problem. Wenn das AWS::Lambda::Function-Segment einen Fehler anzeigt, ist bei Ihrer Funktion ein Problem aufgetreten.
Dieses Beispiel erweitert das AWS::Lambda::Function-Segment, um seine drei Untersegmente anzuzeigen.
Anmerkung
AWS implementiert derzeit Änderungen am Lambda-Service. Aufgrund dieser Änderungen können geringfügige Unterschiede in Struktur und Inhalt der Systemprotokollmeldungen und Trace-Segmente auftreten, die von verschiedenen Lambda-Funktionen in Ihrem AWS-Konto.
Der hier gezeigte Beispiel-Trace veranschaulicht das Funktionssegment im alten Stil. Die Unterschiede zwischen den Segmenten im alten und im neuen Stil werden in den folgenden Abschnitten beschrieben.
Diese Änderungen werden in den kommenden Wochen implementiert, und alle Funktionen AWS-Regionen außer China und den GovCloud Regionen werden auf die Verwendung der Protokollnachrichten und Trace-Segmente im neuen Format umgestellt.
Das Funktionssegment im alten Stil enthält die folgenden Untersegmente:
-
Initialisierung – Stellt die Zeit dar, die für das Laden Ihrer Funktion und das Ausführen des Initialisierungscodes aufgewendet wurde. Dieses Untersegment erscheint nur für das erste Ereignis, das jede Instance Ihrer Funktion verarbeitet.
-
Invocation (Aufruf) – Stellt die Zeit dar, die beim Ausführen Ihres Handler-Codes vergeht.
-
Overhead (Aufwand) – Stellt die Zeit dar, die von der Lambda-Laufzeitumgebung bei der Verarbeitung des nächsten Ereignisses verbraucht wird.
Das Funktionssegment im neuen Stil enthält kein Invocation-Untersegment. Stattdessen werden Kundenuntersegmente direkt an das Funktionssegment angehängt. Weitere Informationen über die Struktur der alten und neuen Funktionssegmente finden Sie unter Grundlegendes zu X-Ray Spuren.
Sie können auch HTTP-Clients instrumentieren, SQL-Abfragen aufzeichnen und benutzerdefinierte Untersegmente mit Anmerkungen und Metadaten erstellen. Weitere Informationen finden Sie unter AWS X-Ray-SDK für Python im AWS X-Ray -Entwicklerhandbuch.
Preisgestaltung
Im Rahmen des kostenlosen Kontingents können Sie X-Ray Tracing jeden Monat bis zu einem bestimmten Limit kostenlos nutzen. AWS Bei Überschreitung dieses Schwellenwerts X-Ray fallen Gebühren für das Speichern und Abrufen von Traces an. Weitere Informationen finden Sie unter AWS X-Ray Preise
Speichern von Laufzeitabhängigkeiten in einer Ebene (X-Ray SDK)
Wenn Sie das X-Ray SDK verwenden, um AWS SDK-Clients Ihren Funktionscode zu instrumentieren, kann Ihr Bereitstellungspaket ziemlich umfangreich werden. Um zu vermeiden, dass bei jeder Aktualisierung Ihres Funktionscodes Laufzeitabhängigkeiten hochgeladen werden, packen Sie das X-Ray SDK in eine Lambda-Ebene.
Das folgende Beispiel zeigt eine AWS::Serverless::LayerVersion-Ressource, die das AWS X-Ray-SDK für Python speichert.
Beispiel template.yml — Ebene „Abhängigkeiten“
Resources: function: Type: AWS::Serverless::Function Properties: CodeUri: function/. Tracing: ActiveLayers: - !Ref libs...libs: Type: AWS::Serverless::LayerVersion Properties: LayerName: blank-python-lib Description: Dependencies for the blank-python sample app. ContentUri: package/. CompatibleRuntimes: - python3.11
Bei dieser Konfiguration aktualisieren Sie die Bibliotheksebene nur, wenn Sie Ihre Laufzeitabhängigkeiten ändern. Da das Funktionsbereitstellungspaket nur Ihren Code enthält, kann dies dazu beitragen, die Upload-Zeiten zu reduzieren.
Das Erstellen einer Ebene für Abhängigkeiten erfordert Build-Änderungen, um das Layer-Archiv vor der Bereitstellung zu generieren. Ein funktionierendes Beispiel finden Sie in der Beispielanwendung blank-python