Search code examples
node.jsamazon-web-servicesamazon-s3knox-amazon-s3-clientrecorder.js

Send recorded audio to S3


I am using RecorderJs to record audio. When done; I want to save it to amazon S3 (I am using knox library) via server (because I don't want to share the key).

recorder.exportWAV(function(blob) {
    // sending it to server 
});

On the server side, using knox ...

knox.putBuffer(blob, path, {"Content-Type": 'audio/wav', 
                            "Content-Length": blob.length},
                           function(e,r) {
                               if (!e) {
                                   console.log("saved at " + path);
                                   future.return(path);
                               } else {
                                   console.log(e);
                               }
                           });

And this is saving just 2 bytes!!

Also; is this the best way to save server memory. Or are there better alternatives?

I also see this: Recorder.forceDownload(blob[, filename])

Should I force download and then send it to server?

Or should I save to S3 directly from my domain. Is there a option in S3 which cannot be hacked by other user trying to store data on my server?


Solution

  • Or should i save to S3 directly from my domain. Is there a option in S3 which cannot be hacked by other user trying to store data on my server?

    You can use S3 bucket policies or AIM policies on S3 buckets to restrict access to your buckets.

    Bucket Policies:http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingBucketPolicies.html

    AIM Policies: http://docs.aws.amazon.com/AmazonS3/latest/dev/UsingIAMPolicies.html

    There are several related threads on SO about this too, for example:

    Enabling AWS IAM Users access to shared bucket/objects

    AWS s3 bucket policy invalid group principal