首先修改 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 需要這麼多才可以。
參考資料:
系列:
沒有留言:
張貼留言