Verwenden des Lambda-Kontextobjekts zum Abrufen von Python-Funktionsinformationen - AWS Lambda

Verwenden des Lambda-Kontextobjekts zum Abrufen von Python-Funktionsinformationen

Wenn Lambda Ihre Funktion ausführt, wird ein Context-Objekt an den Handler. übergeben. Dieses Objekt stellt Methoden und Eigenschaften mit Informationen zum Aufruf, zur Funktion und zur Ausführungsumgebung bereit. Weitere Informationen darüber, wie das Kontextobjekt an den Funktions-Handler übergeben wird, finden Sie unter Lambda-Funktionshandler in Python definieren.

Context-Methoden
  • get_remaining_time_in_millis – Gibt die Anzahl der verbleibenden Millisekunden zurück, bevor die Ausführung das Zeitlimit überschreitet.

Context-Eigenschaften
  • function_name – Der Name der Lambda-Funktion.

  • function_version – Die Version der Funktion.

  • invoked_function_arn – Der Amazon-Ressourcenname (ARN), der zum Aufrufen der Funktion verwendet wird. Gibt an, ob der Aufrufer eine Versionsnummer oder einen Alias angegeben hat.

  • memory_limit_in_mb – Die Menge an Arbeitsspeicher, die der Funktion zugewiesen ist.

  • aws_request_id – Der Bezeichner der Aufrufanforderung.

  • log_group_name – Protokollgruppe für die Funktion.

  • log_stream_name – Der Protokollstream für die Funktions-Instance.

  • identity – Informationen zur Amazon-Cognito-Identität, die die Anforderung autorisiert hat.

    • cognito_identity_id— Die authentifizierte Amazon-Cognito-Identität.

    • cognito_identity_pool_id – Der Amazon-Cognito-Identitätspool, der den Aufruf autorisiert hat.

  • client_context – (mobile Apps) Clientkontext, der Lambda von der Clientanwendung bereitgestellt wird.

    • client.installation_id

    • client.app_title

    • client.app_version_name

    • client.app_version_code

    • client.app_package_name

    • custom – Ein dict mit benutzerdefinierten Werten, die von der mobilen Clientanwendung festgelegt wurden.

    • env – Ein dict mit Umgebungsinformationen, die vom AWS SDK bereitgestellt wurden.

Powertools für Lambda (Python) bietet eine Schnittstellendefinition für das Lambda-Kontextobjekt. Sie können die Schnittstellendefinition für Typhinweise verwenden oder die Struktur des Lambda-Kontextobjekts genauer untersuchen. Die Schnittstellendefinition finden Sie unter lambda_context.py im powertools-lambda-python auf GitHub.

Das folgende Beispiel zeigt eine Handler-Funktion zur Protokollierung von Context-Informationen.

Beispiel handler.py
import time def lambda_handler(event, context): print("Lambda function ARN:", context.invoked_function_arn) print("CloudWatch log stream name:", context.log_stream_name) print("CloudWatch log group name:", context.log_group_name) print("Lambda Request ID:", context.aws_request_id) print("Lambda function memory limits in MB:", context.memory_limit_in_mb) # We have added a 1 second delay so you can see the time remaining in get_remaining_time_in_millis. time.sleep(1) print("Lambda time remaining in MS:", context.get_remaining_time_in_millis())

Zusätzlich zu den oben aufgeführten Optionen können Sie das AWS X-Ray-SDK für Instrumentieren von Python-Code in AWS Lambda zudem verwenden, um kritische Code-Pfade zu identifizieren, deren Leistung nachzuverfolgen und die Daten für die Analyse zu erfassen.