22import com .amazonaws .services .lambda .runtime .LambdaLogger ;
33import com .amazonaws .services .s3 .model .S3Object ;
44import com .amazonaws .util .IOUtils ;
5+ import com .google .gson .Gson ;
56
67import java .io .IOException ;
78import java .net .HttpURLConnection ;
@@ -15,34 +16,37 @@ public class Handler {
1516 private static final String BUCKET_KEY = "bucket" ;
1617 private static final String PREFIX_KEY = "prefix" ;
1718
18- public Response handleRequest (Request request , Context context ) {
19+ public Response handleRequest (Event event , Context context ) {
1920
2021 Instant instant1 = Instant .now ();
2122 LambdaLogger logger = context .getLogger ();
23+ logger .log ("body: " + event .getBody ());
24+
25+ Gson gson = new Gson ();
26+ Body body = gson .fromJson (event .getBody (), Body .class );
2227
2328 try {
24- logger .log ("executable: " + request .getExecutable ());
25- logger .log ("args: " + request .getArgs ());
26- logger .log ("inputs: " + request .getInputs ());
27- logger .log ("outputs: " + request .getOutputs ());
28- logger .log ("bucket: " + request .getOptions ().get (BUCKET_KEY ));
29- logger .log ("prefix: " + request .getOptions ().get (PREFIX_KEY ));
30-
31- downloadData (request , logger );
32- downloadExecutable (request , logger );
33- execute (request .getExecutable (), String .join (" " , request .getArgs ()), logger );
34- uploadData (request , logger );
29+ logger .log ("executable: " + body .getExecutable ());
30+ logger .log ("args: " + body .getArgs ());
31+ logger .log ("inputs: " + body .getInputs ());
32+ logger .log ("outputs: " + body .getOutputs ());
33+ logger .log ("bucket: " + body .getOptions ().get (BUCKET_KEY ));
34+ logger .log ("prefix: " + body .getOptions ().get (PREFIX_KEY ));
35+
36+ downloadData (body , logger );
37+ downloadExecutable (body , logger );
38+ execute (body .getExecutable (), String .join (" " , body .getArgs ()), logger );
39+ uploadData (body , logger );
3540 } catch (Exception e ) {
36- return handleException (e , request );
41+ return handleException (e , body );
3742 }
3843 Response response = new Response ();
3944 response .setStatusCode (HttpURLConnection .HTTP_OK );
40- response .setMessage ("Execution of " + request .getExecutable () + " successful, duration: " + Duration .between (instant1 , Instant .now ()).getSeconds () + " seconds" );
41- response .setArgs (request .getArgs ().toString ());
45+ response .setMessage ("Execution of " + body .getExecutable () + " successful, duration: " + Duration .between (instant1 , Instant .now ()).getSeconds () + " seconds" );
4246 return response ;
4347 }
4448
45- private void downloadData (Request request , LambdaLogger logger ) throws IOException {
49+ private void downloadData (Body request , LambdaLogger logger ) throws IOException {
4650 for (Map <String , Object > input : request .getInputs ()) {
4751 String fileName = input .get ("name" ).toString ();
4852 String key = request .getOptions ().get (PREFIX_KEY ) + "/" + fileName ;
@@ -67,17 +71,17 @@ private void execute(String executable, String args, LambdaLogger logger) throws
6771 logger .log ("Stderr: " + errorMsg );
6872 }
6973
70- private void uploadData (Request request , LambdaLogger logger ) {
71- for (Map <String , String > input : request .getOutputs ()) {
74+ private void uploadData (Body body , LambdaLogger logger ) {
75+ for (Map <String , String > input : body .getOutputs ()) {
7276 String fileName = input .get ("name" );
7377 String filePath = FOLDER_PATH + fileName ;
74- String key = request .getOptions ().get (PREFIX_KEY ) + "/" + fileName ;
75- logger .log ("Uploading " + request .getOptions ().get (BUCKET_KEY ) + "/" + key );
76- S3Utils .putObject (request .getOptions ().get (BUCKET_KEY ), key , filePath );
78+ String key = body .getOptions ().get (PREFIX_KEY ) + "/" + fileName ;
79+ logger .log ("Uploading " + body .getOptions ().get (BUCKET_KEY ) + "/" + key );
80+ S3Utils .putObject (body .getOptions ().get (BUCKET_KEY ), key , filePath );
7781 }
7882 }
7983
80- private Response handleException (Exception e , Request request ) {
84+ private Response handleException (Exception e , Body body ) {
8185 Throwable cause ;
8286 if (e .getCause () != null ) {
8387 cause = e .getCause ();
@@ -89,16 +93,15 @@ private Response handleException(Exception e, Request request) {
8993 }
9094 Response response = new Response ();
9195 response .setStatusCode (HttpURLConnection .HTTP_INTERNAL_ERROR );
92- response .setMessage ("Execution of " + request .getExecutable () + " failed, cause: " + cause .getMessage ());
93- response .setArgs (request .getArgs ().toString ());
96+ response .setMessage ("Execution of " + body .getExecutable () + " failed, cause: " + cause .getMessage ());
9497 return response ;
9598 }
9699
97- private void downloadExecutable (Request request , LambdaLogger logger ) throws IOException {
98- logger .log ("Downloading executable" + request .getExecutable ());
99- String key = request .getOptions ().get (PREFIX_KEY ) + "/" + request .getExecutable ();
100- S3Object s3Object = S3Utils .getObject (request .getOptions ().get (BUCKET_KEY ), key );
101- S3Utils .saveToFile (s3Object , FOLDER_PATH + request .getExecutable ());
100+ private void downloadExecutable (Body body , LambdaLogger logger ) throws IOException {
101+ logger .log ("Downloading executable" + body .getExecutable ());
102+ String key = body .getOptions ().get (PREFIX_KEY ) + "/" + body .getExecutable ();
103+ S3Object s3Object = S3Utils .getObject (body .getOptions ().get (BUCKET_KEY ), key );
104+ S3Utils .saveToFile (s3Object , FOLDER_PATH + body .getExecutable ());
102105 }
103106
104107}
0 commit comments