Go 中的 AWS Lambda 內容物件 - AWS Lambda

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

Go 中的 AWS Lambda 內容物件

當 Lambda 執行您的函數時,它會將內容物件傳遞至處理常式。此物件提供的方法和各項屬性包含了有關叫用、函式以及執行環境的資訊。

Lambda 內容程式庫提供下列全域變數、方法和屬性。

全域變數
  • FunctionName – Lambda 函數的名稱。

  • FunctionVersion – 函數的版本

  • MemoryLimitInMB - 分配給函數的記憶體數量。

  • LogGroupName - 函數的日誌群組。

  • LogStreamName - 函數執行個體的記錄串流。

內容方法
  • Deadline - 傳回執行逾時的日期,以 Unix 時間毫秒為單位。

內容屬性
  • InvokedFunctionArn - 用於叫用此函數的 Amazon Resource Name (ARN)。指出叫用者是否指定版本號或別名。

  • AwsRequestID - 叫用請求的識別符。

  • Identity - (行動應用程式) 已授權請求的 Amazon Cognito 身分的相關資訊。

  • ClientContext - (行動應用程式) 用戶端應用程式提供給 Lambda 的用戶端內容。

存取叫用內容資訊

Lambda 函數有權存取有關其環境和叫用請求的中繼資料。這可以在套件內容進行存取。如果處理常式將 context.Context 納為參數,Lambda 即會將函數的相關資訊插入至內容的 Value 屬性。請注意,您需要匯入 lambdacontext 程式庫以存取 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) }

在上面的例子中,lc是用於消耗上下文對象捕獲並log.Print(lc.Identity.CognitoIdentityPoolID)打印該信息的信息的變量,在本例中為 CognitoIdentityPool ID。

以下範例說明如何使用內容物件來監控執行 Lambda 函數的時間長度。這可讓您分析效能期望值,並在必要時據以調整您的函式程式碼。

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) }