【发布时间】:2020-02-27 19:52:01
【问题描述】:
我正在尝试从地图列表创建 csv 文件,并通过 lambda 函数将它们上传到 S3 存储桶。以下是代码:
public void createCSV(List<Map<String, AttributeValue>> changedRecords, Context context, String tableName)
throws IOException {
Calendar calendar = Calendar.getInstance();
SimpleDateFormat formatter = new SimpleDateFormat("yyyyMMddHHmmss");
String outputName = tableName + "_" + formatter.format(calendar.getTime()) + ".csv";
List<String> headers = changedRecords.stream().flatMap(map -> map.keySet().stream()).distinct()
.collect(Collectors.toList());
try (FileWriter writer = new FileWriter(outputName, true);) {
for (String string : headers) {
writer.write(string);
writer.write(",");
}
writer.write("\r\n");
for (Map<String, AttributeValue> lmap : changedRecords) {
for (Entry<String, AttributeValue> string2 : lmap.entrySet()) {
writer.write(string2.getValue().getS());
writer.write(",");
}
writer.write("\r\n");
}
}
catch (Exception e) {
e.printStackTrace();
}
s3.putObject(new PutObjectRequest("bucket_name", "data/" + outputName, outputName));
}
得到以下fileNotFound异常:
java.io.FileNotFoundException: data_20200227192207.csv(只读文件 系统) 在 java.io.FileOutputStream.open0(本机方法) 在 java.io.FileOutputStream.open(FileOutputStream.java:270) 在 java.io.FileOutputStream.(FileOutputStream.java:213) 在 java.io.FileOutputStream.(FileOutputStream.java:133) 在 java.io.FileWriter.(FileWriter.java:78) 在 com.amazonaws.lambda.demo.PLMLambda.createCSV(PLMLambda.java:84) 在 com.amazonaws.lambda.demo.PLMLambda.handleRequest(PLMLambda.java:54) 在 com.amazonaws.lambda.demo.PLMLambda.handleRequest(PLMLambda.java:1) 在 lambdainternal.EventHandlerLoader$PojoHandlerAsStreamHandler.handleRequest(EventHandlerLoader.java:178) 在 lambdainternal.EventHandlerLoader$2.call(EventHandlerLoader.java:906) 在 lambdainternal.AWSLambda.startRuntime(AWSLambda.java:341) 在 lambdainternal.AWSLambda.(AWSLambda.java:63) 在 java.lang.Class.forName0(本机方法) 在 java.lang.Class.forName(Class.java:348) 在 lambdainternal.LambdaRTEntry.main(LambdaRTEntry.java:114)
【问题讨论】:
标签: amazon-s3 aws-lambda aws-java-sdk aws-java-sdk-dynamodb