Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
Evaporatejs | 1,762 | 26 | 12 | 4 months ago | 51 | October 08, 2017 | 91 | JavaScript | ||
Javascript library for browser to S3 multipart resumable uploads | ||||||||||
Lambdaws | 1,277 | 9 | 6 years ago | 15 | March 26, 2015 | 18 | lgpl-3.0 | JavaScript | ||
Deploy, run and get results from Amazon AWS Lambda in a breeze | ||||||||||
Django S3direct | 602 | 76 | 1 | a year ago | 78 | June 17, 2022 | 33 | mit | Python | |
Directly upload files to S3 compatible services with Django. | ||||||||||
Meteor Slingshot | 599 | 4 years ago | 3 | June 30, 2016 | 98 | mit | JavaScript | |||
Upload files directly to AWS S3, Google Cloud Storage and others in meteor | ||||||||||
Gulp Awspublish | 398 | 1,530 | 199 | 5 months ago | 57 | March 04, 2022 | 21 | mit | JavaScript | |
gulp plugin to publish files to amazon s3 | ||||||||||
React Native Aws3 | 363 | 80 | 2 | 4 years ago | 7 | April 29, 2019 | 52 | mit | JavaScript | |
Pure JavaScript React Native library for uploading to AWS S3 | ||||||||||
S3 Upload Stream | 320 | 303 | 86 | 3 years ago | 19 | December 04, 2014 | 22 | mit | JavaScript | |
A Node.js module for streaming data to Amazon S3 via the multipart upload API | ||||||||||
S3 Parallel Put | 277 | 3 years ago | 8 | April 11, 2019 | 12 | mit | Python | |||
Parallel uploads to Amazon AWS S3 | ||||||||||
Lambda Uploader | 261 | 9 | 3 | a year ago | 19 | May 14, 2018 | 31 | apache-2.0 | Python | |
Helps package and upload Python lambda functions to AWS | ||||||||||
Node S3 Uploader | 232 | 78 | 6 | 5 years ago | 45 | November 24, 2016 | 31 | mit | JavaScript | |
Flexible and efficient resize, rename, and upload images to Amazon S3 disk storage. Uses the official AWS Node SDK for transfer, and ImageMagick for image processing. Support for multiple image versions targets. |

Using Amazon's Lambda Service, Lambdaws cloudifies any JavaScript function — including existing libraries — with no extra code. It removes the friction you get when using AWS Lambda directly. The goal of Lambdaws is to make it trivial to build highly scalable, highly available applications.
Lambdaws will automatically:
Lambdaws will not:
npm install lambdaws
λ
takes an inline asynchronous function and deploy it to AWS Lambda. If you call cloudedCalculator it will run in the cloud.
This is not the recommended way of working with Lambdaws and should only be used for testing purposes. Modules should be used whenever possible.
Please note that λ
is used here only for shortening the code and for clarity.
var λ = require('lambdaws').create;
// A simple inlined asynchronous function computing A + B
var calculator = function(a, b, callback) {
callback(a + b);
};
// This will automatically instrument and upload your function to AWS Lambda
var cloudedCalculator = λ(calculator);
// cloudedCalculator is a reference to the function in the cloud.
// Therefore calling this function will invoke it on AWS Lambda rather than locally.
cloudedCalculator(5, 2, function(err, data) {
// Automatic instrumentation of the code added a SQS message push of the result
// the result of the function is then available in real time without polling CloudWatch
console.log(data); // Prints 7
});
var cloudedCalculator = λ(
'./my_module', // Relative path to module
'functionNameInsideModule', // The name of the function in the module. Optional if module returns a function.
['async', 'request'], // External dependencies. Must reside in node_modules for now.
{ description : 'my custom description' } // Settings override
);
You can tell Lambdaws to download and install system libraries. An example of library is phantomjs. The available libraries can be found on this repository. Feel free to make pull requests to add new libraries. The reason for this feature is that lambda has max upload size of 30Mb.
var cloudedBrowser = λ(
'./my_module_depending_on_phantomjs', // Relative path to module
'functionNameInsideModule', // The name of the function in the module. Optional if module returns a function.
['Q', ':phantomjs'], // External libraries are prepended with ":"
{ name : 'PhantomJSExample' } // Settings override
);
λ(yourFunc, {
name: '', // (string) defaults to 'default'
memory: '256', // (string) defaults to '128'
description: 'Description of your function', // (string) defaults to ''
timeout: 10, // (int, seconds) defaults to 3 seconds,
ignoreResponse: true // Will not send results back to SQS, function will run ~ 150ms faster
});
You can set your AWS credentials in one of three ways.
By default, the AWS SDK looks for credentials in ~/.aws/credentials
. If you do not set anything, lambdaws will use the default profile. For more information see the docs.
You can use a different profile:
var lambdaws = require('lambdaws');
lambdaws.config({
credentials: 'my-profile', // string, profile name.
role: '' // ** Required **
});
lambdaws.start();
You can set the access and secret keys manually:
var lambdaws = require('lambdaws');
lambdaws.config({
credentials: {
accessKey: '', // string, AWS AccessKeyId.
secretKey: '', // string, AWS AccessKeySecret.
},
role: '' // ** Required **
});
lambdaws.start();
The lambda function will run in the role
specified. It must be an ARN of the IAM role that has s3:GetObject
, sqs:SendMessage
, lambda:InvokeFunction
, and logs:*
allowed. The AWSLambdaExecute
managed policy can be used in place of lambda:InvokeFunction
. Your lambda functions may require additional permissions on the role
if they use other AWS services.
The credentials
must be for a user that can has allowed policies for sqs:CreateQueue
, sqs:DeleteMessage
and lambda:*
actions.
See example/example.js
Documentation needed. See bin/lambdaws-cli.js
for implementation and usage.
The same constraints imposed by AWS Lambda apply. Your function should also be stateless and independent of the underlying architecture. Be also aware that any variable that your function uses must be declared by your function. Global and outer-scope variables are not uploaded to AWS Lambda.
This repo is in early stage so don't be shy and report bugs if you find some. Contributions are more than welcomed! Please visit the Trello Board to vote and see which cards are the most in-demand. When you decide to tackle a card, please move it to the according list, assign it to yourself, and make a pull request.