AWS Lambda-Context-Objekt in Go - 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.

AWS Lambda-Context-Objekt in Go

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.

Die Lambda-Kontextbibliothek bietet die folgenden globalen Variablen, Methoden und Eigenschaften.

Globale Variablen
  • FunctionName – Der Name der Lambda-Funktion.

  • FunctionVersion – Die Version der Funktion.

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

  • LogGroupName – Protokollgruppe für die Funktion.

  • LogStreamName – Der Protokollstrom für die Funktionsinstance.

Context-Methoden
  • Deadline – Gibt das Datum zurück, an dem eine Zeitüberschreitung für die Ausführung eintritt (in Unix-Millisekunden).

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

  • AwsRequestID – Der Bezeichner der Aufrufanforderung.

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

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

Zugreifen auf Aufrufkontextinformationen

Lambda-Funktionen haben Zugriff auf Metadaten über ihre Umgebung und die Aufrufanforderung. Darauf kann unter Paketkontext zugegriffen werden. Falls Ihr Handler context.Context als Parameter umfasst, fügt Lambda Informationen über Ihre Funktion in der Value-Eigenschaft des Kontexts ein. Beachten Sie, dass Sie die lambdacontext-Bibliothek importieren müssen, um auf die Inhalte des context.Context-Objekts zuzugreifen.

package main import ( "context" "log" "github.com/aws/aws-lambda-go/lambda" "github.com/aws/aws-lambda-go/lambdacontext" ) func CognitoHandler(ctx context.Context) { lc, _ := lambdacontext.FromContext(ctx) log.Print(lc.Identity.CognitoIdentityPoolID) } func main() { lambda.Start(CognitoHandler) }

Im obigen Beispiel lc ist die Variable, die verwendet wird, um die Informationen zu verarbeiten, die das Kontextobjekt erfasst hat und diese Informationen log.Print(lc.Identity.CognitoIdentityPoolID)druckt, in diesem Fall die CognitoIdentityPoolID.

Das folgende Beispiel bietet eine Einführung in die Verwendung der Kontextobjekte zur Überwachung der Abschlussdauer Ihrer Lambda-Funktion. Damit können Sie die Leistungserwartungen analysieren und Ihren Funktionscode bei Bedarf entsprechend anpassen.

package main import ( "context" "log" "time" "github.com/aws/aws-lambda-go/lambda" ) func LongRunningHandler(ctx context.Context) (string, error) { deadline, _ := ctx.Deadline() deadline = deadline.Add(-100 * time.Millisecond) timeoutChannel := time.After(time.Until(deadline)) for { select { case <- timeoutChannel: return "Finished before timing out.", nil default: log.Print("hello!") time.Sleep(50 * time.Millisecond) } } } func main() { lambda.Start(LongRunningHandler) }