Trouble generating url for s3 in script snap

hi all, i m using script snap to generate presigned url for an object in s3 .

Failure: ReferenceError: “AmazonS3Client” is not defined, Reason: Script failed with the following error: ReferenceError: “AmazonS3Client” is not defined, Resolution: Fix the errors in the script file:

following is the script :

// Ensure compatibility with both JDK 7 and 8 JSR-223 Script Engines
try { load(“nashorn:mozilla_compat.js”); } catch(e) { }

//Import the interface required by the Script snap.

// Import the Java utility classes.



  • Create an object that implements the methods defined by the “ScriptHook”

  • interface. We’ll be passing this object to the constructor for the

  • ScriptHook interface.
    var impl = {

    • These variables (input, output, error, log) are defined by the
    • ExecuteScript snap when evaluating this script.
      input : input,
      output : output,
      error : error,
      log : log,


    • The “execute()” method is called once when the pipeline is started

    • and allowed to process its inputs or just send data to its outputs.

    • Exceptions are automatically caught and sent to the error view.
      execute : function () {“Executing Transform Script”);
      while (this.input.hasNext()) {

           // Read the next document, wrap it in a map and write out the wrapper
           var doc =;
           //var credentials = new BasicAWSCredentials(aws_id,secret_key);
           var client = new AmazonS3Client( credentials );
           var request = new GeneratePresignedUrlRequest( "snaplogic01-dev", "sample.pdf", HttpMethod.PUT);
           request.setExpiration( new Date( System.currentTimeMillis() + (120 * 60 * 1000) ));
           var wrapper = new java.util.HashMap();
           wrapper.put("original", doc);
           wrapper.put("url",client.generatePresignedUrl( request ).toString());
           this.output.write(doc, wrapper);
 "Transform Script finished");



  • The Script Snap will look for a ScriptHook object in the “hook”
  • variable. The snap will then call the hook’s “execute” method.
    var hook = new com.snaplogic.scripting.language.ScriptHook(impl);