本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
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) }