Verwenden von AWS Lambda mit AWS X-Ray - AWS Lambda

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.

Verwenden von AWS Lambda mit AWS X-Ray

Sie können mit AWS X-Ray die Komponenten Ihrer Anwendung visualisieren, Leistungsengpässe erkennen und Anforderungen beheben, die zu einem Fehler geführt haben. Ihre Lambda-Funktionen senden Ablaufverfolgungs-Daten an X-Ray und X-Ray verarbeitet die Daten, um eine Service-Map und durchsuchbare Ablaufverfolgungs-Zusammenfassungen zu generieren.

Wenn Sie die X-Ray-Verfolgung in einem Service aktiviert haben, der Ihre Funktion aufruft, sendet Lambda automatisch Ablaufverfolgungen an X-Ray. Der Upstream-Service, z. B. Amazon API Gateway oder eine Anwendung auf Amazon EC2, die mit dem X-Ray-SDK instrumentiert ist, entnimmt eingehenden Anforderungen Proben und fügt einen Ablaufverfolfungs-Header hinzu, der angibt, ob Lambda Ablaufverfolgungen senden soll oder nicht. Ablaufverfolgungen von Produzenten von Upstream-Nachrichten, wie Amazon SQS, werden automatisch mit Ablaufverfolgungen von Downstream-Lambda-Funktionen verknüpft, wodurch eine end-to-end Ansicht der gesamten Anwendung erstellt wird. Weitere Informationen finden Sie unter Ablaufverfolgung ereignisgesteuerter Anwendungen im AWS X-Ray-Entwicklerhandbuch.

Anmerkung

X-Ray Tracing wird derzeit nicht für Lambda-Funktionen mit Amazon Managed Streaming für Apache Kafka (Amazon MSK), selbstverwaltetem Apache Kafka, Amazon MQ mit ActiveMQ und RabbitMQ oder Zuordnungen von Amazon-DocumentDB-Ereignisquellen unterstützt.

Gehen Sie folgendermaßen vor, um die aktive Nachverfolgung Ihrer Lambda-Funktion mit der Konsole umzuschalten:

So aktivieren Sie die aktive Nachverfolgung
  1. Öffnen Sie die Seite Funktionen der Lambda-Konsole.

  2. Wählen Sie eine Funktion aus.

  3. Wählen Sie Configuration (Konfiguration) und dann Monitoring and operations tools (Überwachungs- und Produktionstools).

  4. Wählen Sie Bearbeiten aus.

  5. Schalten Sie unter X-Ray Active tracing (Aktive Nachverfolgung) ein.

  6. Wählen Sie Speichern.

Preisgestaltung

Sie können X-Ray-Nachverfolgung jeden Monat bis zu einem bestimmten Limit als Teil des AWS kostenlosen Kontingents kostenlos nutzen. Über den Schwellenwert hinaus berechnet X-Ray Gebühren für die Speicherung und den Abruf der Nachverfolgung. Weitere Informationen finden Sie unter AWS X-Ray Preise.

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 Richtlinie zur Ausführungsrolle hinzu.

X-Ray verfolgt nicht alle Anfragen an Ihre Anwendung nach. X-Ray wendet einen Sampling-Algorithmus an, um sicherzustellen, dass die Nachverfolgung effizient ist, und stellt dennoch ein repräsentatives Beispiel aller Anfragen bereit. Die Samplingrate beträgt 1 Anforderung pro Sekunde und 5 Prozent aller weiteren Anforderungen.

Anmerkung

Sie können die X-Ray-Samplingrate nicht für Ihre Funktionen konfigurieren.

In X-Ray, zeichnet eine Ablaufverfolgung Informationen zu einer Anforderung auf, die von einem oder mehreren Services verarbeitet wird. Services-Datensatzsegmente, die Ebenen von Teilsegmenten enthalten. Lambda zeichnet ein Segment für den Lambda-Service auf, der die Aufruferanforderung verarbeitet, und eines für die Arbeit, die von der Funktion ausgeführt wird. Das Funktionssegment enthält Teilsegmente für Initialization, Invocation, Restore (nur Lambda SnapStart) und Overhead. Weitere Informationen finden Sie unter Lebenszyklus der Lambda-Ausführungsumgebung.

Anmerkung

X-Ray verarbeitet unbehandelte Ausnahmen in Ihrer Lambda-Funktion als Error-Status. X-Ray zeichnet die Fault-Status nur dann auf, wenn bei Lambda interne Serverfehler auftreten. Weitere Informationen finden Sie unter Fehler, Störungen und Ausnahmen im X-Ray-Entwicklerhandbuch.

Das Initialization-Teilsegment stellt die Init-Phase des Lebenszyklus der Lambda-Ausführungsumgebung dar. Während dieser Phase erstellt oder gibt Lambda eine Ausführungsumgebung mit den von Ihnen konfigurierten Ressourcen frei, lädt den Funktionscode und alle Ebenen herunter, initialisiert Erweiterungen, initialisiert die Laufzeit und führt den Initialisierungscode der Funktion aus.

Das Invocation-Teilsegment stellt die Aufrufphase dar, in welcher der Lambda-Funktionshandler aufgerufen wird. Dies beginnt mit der Laufzeit- und Erweiterungsregistrierung und endet, wenn die Laufzeit bereit ist, die Antwort zu senden.

(nur Lambda SnapStart): Das Teilsegment Restore zeigt die Zeit an, die Lambda benötigt, um einen Snapshot wiederherzustellen, die Laufzeit (JVM) zu laden und alle afterRestore-Laufzeit-Hooks auszuführen. Der Prozess der Wiederherstellung von Snapshots kann Zeit beinhalten, die für Aktivitäten außerhalb der MicroVM aufgewendet wird. Diese Zeit wird im Restore-Untersegment erfasst. Die Zeit, die Sie außerhalb der microVM für die Wiederherstellung eines Snapshots aufwenden, wird Ihnen nicht in Rechnung gestellt.

Das Overhead-Teilsegment stellt die Phase dar, die zwischen dem Zeitpunkt, zu dem die Laufzeit die Antwort sendet, und dem Signal für den nächsten Aufruf auftritt. Während dieser Zeit beendet die Laufzeit alle Aufgaben im Zusammenhang mit einem Aufruf und bereitet sich auf das Einfrieren der Sandbox vor.

Anmerkung

Gelegentlich bemerken Sie in Ihren X-Ray-Ablaufverfolgungen eine große Lücke zwischen den Phasen der Funktionsinitialisierung und des Funktionsaufrufs. Bei Funktionen, die bereitgestellte Gleichzeitigkeit verwenden, liegt dass daran, dass Lambda Ihre Funktions-Instances lange vor dem Aufruf initialisiert. Für Funktionen, die unreservierte (On-demand) Gleichzeitigkeit verwenden, kann Lambda eine Funktions-Instance proaktiv initialisieren, auch wenn kein Aufruf erfolgt. Visuell werden diese beiden Fälle als Zeitlücke zwischen der Initialisierungs- und der Aufrufphase angezeigt.

Wichtig

In Lambda können Sie das X-Ray-SDK verwenden, um das Invocation-Teilsegment mit zusätzlichen Teilsegmenten für nachgeschaltete Aufrufe, Anmerkungen und Metadaten zu erweitern. Sie können nicht direkt auf das Funktionssegment zugreifen oder Arbeiten außerhalb des Handler-Aufruffunktionsbereichs aufzeichnen.

In den folgenden Themen finden Sie eine sprachspezifische Einführung in die Ablaufverfolgung in Lambda:

Eine vollständige Liste der Services, welche die aktive Instrumentierung unterstützen, finden Sie unter Unterstützte AWS-Services im AWS X-Ray-Entwicklerhandbuch.

Berechtigungen für die Ausführungsrolle

Lambda benötigt die folgenden Berechtigungen, um Ablaufverfolgungsdaten an X-Ray zu senden. Fügen Sie sie der Ausführungsrolle Ihrer Funktion hinzu.

Diese Berechtigungen sind in der von AWSXRayDaemonWriteAccess verwalteten Richtlinie enthalten.

Der AWS X-Ray-Daemon.

Anstatt Ablaufverfolgungsdaten direkt an die X-Ray-API zu senden, verwendet das X-Ray-SDK einen Daemon-Prozess. Der AWS X-Ray-Daemon ist eine Anwendung, die in der Lambda-Umgebung ausgeführt wird und auf UDP-Datenverkehr wartet, der Segmente und Teilsegmente enthält. Sie puffert eingehende Daten und schreibt sie in X-Ray in Batches, wodurch der Verarbeitungs- und Speicheraufwand reduziert wird, der zum Nachverfolgen von Aufrufen erforderlich ist.

Die Lambda-Laufzeit erlaubt dem Daemon bis zu 3 Prozent des konfigurierten Speichers Ihrer Funktion oder 16 MB, je nachdem, welcher Wert größer ist. Wenn Ihre Funktion während des Aufrufs nicht genügend Arbeitsspeicher hat, beendet die Laufzeitumgebung zuerst den Daemon-Prozess, um Speicher freizugeben.

Der Daemon-Prozess wird vollständig von Lambda verwaltet und kann nicht vom Benutzer konfiguriert werden. Alle Segmente, die durch Funktionsaufrufe generiert werden, werden im selben Konto wie die Lambda-Funktion aufgezeichnet. Der Daemon kann nicht so konfiguriert werden, dass er sie an ein anderes Konto umleitet.

Weitere Informationen finden Sie unter X-Ray-Daemon im X-Ray-Entwicklerhandbuch.

Aktivieren der aktiven Ablaufverfolgung mit der Lambda-API

Verwenden Sie die folgenden API-Operationen, um die Protokollierungskonfiguration mit der AWS CLI oder dem AWS-SDK zu verwalten:

Der folgende AWS CLI-Beispielbefehl aktiviert die aktive Nachverfolgung für eine Funktion mit dem Namen 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.

Aktivieren von aktiver Ablaufverfolgung mit AWS CloudFormation

Verwenden Sie die AWS::Lambda::Function-Eigenschaft, um die Nachverfolgung für eine AWS CloudFormation-Ressource in einer TracingConfig-Vorlage zu aktivieren.

Beispiel function-inline.yml – Ablaufverfolgungskonfiguration
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 Eigenschaft Tracing.

Beispiel template.yml – Ablaufverfolgungskonfiguration
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...