JavaのFileオブジェクトを使ってファイル出力を行う
JavaでHTMLファイルを作成し、S3にアップロードするjarファイルをlambdaで実行しようとすると、ファイル作成時に「permission denied」エラーが出た。
いろいろ試した結果、「/tmp」配下にならファイルを出力できるようだ。
package main;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.RequestHandler;
public class LambdaFunctionHandler implements RequestHandler<Object, Object> {
@Override
public Object handleRequest(Object input, Context context) {
try {
File file = new File("/tmp/index.html");
PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file)));
pw.println("<html><body>TEST</body></test>");
pw.close();
lambdaLogger.log("Suucess to make file.");
} catch (IOException e) {
lambdaLogger.log("Failed to create temp file.");
}
return null;
}
}
↑だったらうまく動いた。
網羅的に調べたわけではないので他にディレクトリに出力できるかはわかりません。(誰かしっていたら教えてください)
lambdaはスケジュール機能も追加されたようなのでもう少し遊んでみようと思う。