本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
當 Lambda 執行您的函數時,它會將內容物件傳遞至處理常式。此物件提供的方法和各項屬性提供了有關調用、函式以及執行環境的資訊。
內容方法
-
getRemainingTimeInMillis()
- 傳回執行逾時前剩餘的毫秒數。 -
getFunctionName()
– 傳回 Lambda 函數的名稱。 -
getFunctionVersion()
- 傳回函數的版本。 -
getInvokedFunctionArn()
- 傳回用於叫用此函數的 Amazon Resource Name (ARN)。指出叫用者是否指定版本號或別名。 -
getMemoryLimitInMB()
- 傳回分配給函數的記憶體數量。 -
getAwsRequestId()
- 傳回叫用請求的識別符。 -
getLogGroupName()
- 傳回函數的日誌群組。 -
getLogStreamName()
- 傳回函數執行個體的記錄串流。 -
getIdentity()
- (行動應用程式) 傳回已授權請求的 Amazon Cognito 身分的相關資訊。 -
getClientContext()
- (行動應用程式) 傳回用戶端應用程式提供給 Lambda 的用戶端內容。 -
getLogger()
- 傳回函數的 Logger 物件。
下面的例子顯示使用內容物件存取 Lambda 記錄器的函數。
範例 Handler.java
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.RequestHandler;
import java.util.Map;
// Handler value: example.Handler
public class Handler implements RequestHandler<Map<String,String>, Void>{
@Override
public Void handleRequest(Map<String,String> event, Context context)
{
LambdaLogger logger = context.getLogger();
logger.log("EVENT TYPE: " + event.getClass());
return null;
}
}
函數會先記錄傳入事件的類別類型,再傳回 null
。
範例 記錄輸出
EVENT TYPE: class java.util.LinkedHashMap
內容物件的介面可在 aws-lambda-java-core
範例 src/test/java/example/TestContext.java
package example;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.CognitoIdentity;
import com.amazonaws.services.lambda.runtime.ClientContext;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
public class TestContext implements Context{
public TestContext() {}
public String getAwsRequestId(){
return new String("495b12a8-xmpl-4eca-8168-160484189f99");
}
public String getLogGroupName(){
return new String("/aws/lambda/my-function");
}
public String getLogStreamName(){
return new String("2020/02/26/[$LATEST]704f8dxmpla04097b9134246b8438f1a");
}
public String getFunctionName(){
return new String("my-function");
}
public String getFunctionVersion(){
return new String("$LATEST");
}
public String getInvokedFunctionArn(){
return new String("arn:aws:lambda:us-east-2:123456789012:function:my-function");
}
public CognitoIdentity getIdentity(){
return null;
}
public ClientContext getClientContext(){
return null;
}
public int getRemainingTimeInMillis(){
return 300000;
}
public int getMemoryLimitInMB(){
return 512;
}
public LambdaLogger getLogger(){
return new TestLogger();
}
}
如需記錄日誌的詳細資訊,請參閱 記錄和監控 Java Lambda 函數。
範例應用程式中的內容
本指南的 GitHub 儲存庫包含示範內容物件使用方式的範例應用程式。每個範例應用程式都包含易於部署和清理的指令碼、 AWS Serverless Application Model (AWS SAM) 範本和支援資源。
以 Java 編寫的範例 Lambda 應用程式
-
example-java
– Java 函數,示範如何使用 Lambda 處理訂單。此函數說明如何定義和還原序列化自訂輸入事件物件、使用 AWS SDK 和輸出記錄。 -
java-basic
- 具有單元測試和變數日誌組態的最小 Java 函數集合。 -
java-events
- Java 函數集合,其中包含如何處理來自各種服務 (例如 Amazon API Gateway、Amazon SQS 和 Amazon Kinesis) 事件的骨架程式碼。這些函數使用最新版 aws-lambda-java-events 程式庫 (3.0.0 及更新版)。這些範例不需要 AWS SDK 做為相依性。 -
s3-java
- 一種 Java 函數,它處理來自 Amazon S3 的通知事件,並使用 Java Class Library (JCL) 以從上傳的映像檔案建立縮圖。 -
layer-java
– Java 函數,說明如何使用 Lambda layer 將相依性與核心函數程式碼分開封裝。