首先修改 build.gradle。
// build.gradle apply plugin: 'java' repositories { mavenCentral() } dependencies { compile ( 'com.amazonaws:aws-lambda-java-core:1.1.0', 'com.amazonaws:aws-lambda-java-events:1.1.0' ) } task buildZip(type: Zip) { from compileJava from processResources into('lib') { from configurations.compile如果打包有發生錯誤,可以刪除.Classpath} } build.dependsOn buildZip
.Classpath
再重新打包嘗試。
接下來寫一隻簡單的範例。
package example; import com.amazonaws.services.lambda.runtime.Context; import com.amazonaws.services.lambda.runtime.RequestHandler; public class Hello implements RequestHandler<Integer, String> { public String myHandler(int myCount, Context context) { return String.valueOf(myCount); } @Override public String handleRequest(Integer input, Context context) { return "Default " + input.toString(); } }
打包後上傳 .jar,"Handler" 改成 "example.Hello::myHandler", 然後在 "Configure test events" 裡面將輸入值改成數字(目前預設是 Json),就可以測試了。
"Handler" 的格式是 "包.類::函數";所以上述可以改成 "example.Hello:: handleRequest" 再測試一次。
另外如果輸入格式是 Json,可以將 Integer
改成 Map<String,String>
。
備註:Java 預設必須調整記憶體大於 768MB 與 Timeout 5秒,否則都會出現 "Task timed out after 3.00 seconds"。 因為實際執行的日誌顯示最大使用記憶體只達 34MB,推測啟動服務加上載入 .jar 需要這麼多才可以。
參考資料:
系列:
沒有留言:
張貼留言