本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用 Lambda 上下文對象檢索 Java 函數信息
當 Lambda 執行您的函數時,它會將內容物件傳遞至處理常式。此物件提供的方法和各項屬性提供了有關調用、函式以及執行環境的資訊。
內容方法
-
getRemainingTimeInMillis()
- 傳回執行逾時前剩餘的毫秒數。 -
getFunctionName()
– 傳回 Lambda 函數的名稱。 -
getFunctionVersion()
- 傳回函數的版本。 -
getInvokedFunctionArn()
— 傳回用來叫用函數的 Amazon 資源名稱 (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 /測試/爪/例TestContext子
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 應用程式
-
java17-examples
– 一個 Java 函數,示範如何使用 Java 記錄來表示輸入事件資料物件。 -
java-basic
- 具有單元測試和變數日誌組態的最小 Java 函數集合。 -
java 事件
— Java 函數的集合,其中包含如何處理來自各種服務(例如 Amazon API 網關,Amazon 和亞馬 Amazon Kinesis)的事件的骨架代碼。SQS這些函數使用最新版本的aws-lambda-java-events庫(3.0.0 及更新版本)。這些範例不需要做 AWS SDK為相依性。 -
s3-java
— 一種 Java 函數,可處理來自 Amazon S3 的通知事件,並使用 Java 類別程式庫 (JCL) 從上傳的影像檔建立縮圖。 -
使用API閘道來叫用 Lambda 函數 — 一種 Java 函數,可掃描包含員工資訊的 Amazon DynamoDB 表格。然後,其會使用 Amazon Simple Notification Service 向員工傳送文字訊息,慶祝他們的工作週年紀念日。此範例使用API閘道來叫用函數。