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à.
Utilizzo dell'oggetto contestuale Lambda per recuperare le informazioni sulla funzione Go
Quando Lambda esegue la funzione, passa un oggetto Context al gestore. Questo oggetto fornisce i metodi e le proprietà con informazioni sulla chiamata, sulla funzione e sull'ambiente di esecuzione.
La libreria contesto Lambda offre le variabili globali, i metodi e le proprietà indicate di seguito.
Variabili globali
-
FunctionName
: il nome della funzione Lambda. -
FunctionVersion
: la versione della funzione. -
MemoryLimitInMB
: la quantità di memoria allocata per la funzione. -
LogGroupName
: il gruppo di log per la funzione. -
LogStreamName
: il flusso di log per l'istanza della funzione.
Metodi del contesto
-
Deadline
: restituisce la data del timeout dell'esecuzione in millisecondi Unix.
Proprietà del contesto
-
InvokedFunctionArn
— L'Amazon Resource Name (ARN) utilizzato per richiamare la funzione. Indica se l'invoker ha specificato un numero di versione o un alias. -
AwsRequestID
: l'identificatore della richiesta di invocazione. -
Identity
: (app per dispositivi mobili) Informazioni relative all'identità Amazon Cognito che ha autorizzato la richiesta. -
ClientContext
: (app per dispositivi mobili) Contesto client fornito a Lambda dall'applicazione client.
Accesso alle informazioni relative al contesto di invocazione
Le funzioni Lambda hanno accesso ai metadata relativi al loro ambiente e alla richiesta di invocazione. È possibile accedervi mediante il Package contextcontext.Context
come parametro, Lambda inserirà le informazioni relative alla funzione nella proprietà Value
del contesto. È necessario importare la libreria lambdacontext
per accedere ai contenuti dell'oggetto context.Context
.
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) }
Nell'esempio precedente, lc
è la variabile utilizzata per consumare le informazioni acquisite dall'oggetto contestuale e log.Print(lc.Identity.CognitoIdentityPoolID)
stampa tali informazioni, in questo caso l' CognitoIdentityPoolID.
L'esempio che segue illustra come utilizzare l'oggetto contesto per monitorare il tempo impiegato per il completamento della funzione Lambda. In tal modo è possibile analizzare le aspettative prestazionali e, se necessario modificare la funzione di conseguenza.
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) }