Как я могу включить и использовать инструмент командной строки в моей функции java lambda? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь выполнить некоторые преобразования данных с помощью инструмента командной строки (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";
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...