Я пытаюсь выполнить некоторые преобразования данных с помощью инструмента командной строки (Tarql). Я не уверен, как включить инструмент командной строки в свой пакет развертывания. Я думал о том, чтобы сохранить его в папке tmp, чтобы я мог работать с ним через ProcessBuilder, но я не знаю, как включить его в свой пакет развертывания.
Другая проблема, с которой я сталкиваюсь, заключается в том, что я не знаю, как сохранить файлы из корзины s3 в папку tmp.
Мой код:
public class LambdaTarqlExecution implements RequestHandler<S3Event, String> {
private static Logger log = LoggerFactory.getLogger(LambdaTarqlExecution.class);
private AmazonS3 s3 = AmazonS3ClientBuilder.standard().build();
public LambdaTarqlExecution() {
}
// Test purpose only.
LambdaTarqlExecution(AmazonS3 s3) {
this.s3 = s3;
}
@Override
public String handleRequest(S3Event event, Context context) {
context.getLogger().log("Received event: " + event);
// Get the object from the event and show its content type
S3EventNotification.S3EventNotificationRecord record=event.getRecords().get(0);
String bucket = record.getS3().getBucket().getName();
try {
ObjectMetadata object1 = s3.getObject(new GetObjectRequest(bucket, "GeoMappings.sparql"),new File("/tmp/"));
ObjectMetadata object2 = s3.getObject(new GetObjectRequest(bucket, "Countries.csv"),new File("/tmp/"));
String[] command;
ProcessBuilder pb = new ProcessBuilder("/tmp/tarql.bat", "--write-base", "--base","ontologies.se.com/Procurment", "/tmp/GeoMappings.sparql", "/tmp/Countries.csv", ">", "/tmp/geo.ttl");
PutObjectResult result = s3.putObject("turtleFiles", "geo.ttl", "/tmp/geo.ttl");
} catch (AmazonServiceException e) {
// The call was transmitted successfully, but Amazon S3 couldn't process
// it, so it returned an error response.
e.printStackTrace();
} catch (SdkClientException e) {
// Amazon S3 couldn't be contacted for a response, or the client
// couldn't parse the response from Amazon S3.
e.printStackTrace();
}
return "sucess";
}
}