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 | 2 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 | 9 months 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 | 3 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. |
A client for Amazon Web Services inspired by FlickRaw.
AWSRaw has a simple goal: to let you follow the AWS API docs, and translate that into Ruby code with the minimum of fuss. It adds as little abstraction as possible on top of the AWS REST API. (Think of it as the opposite of fog.)
You use a regular HTTP library (Faraday) to make requests, and AWSRaw provides useful additions like request signing.
This is a pre-release of 1.0, so to install it as a gem you'll need to use gem install --pre awsraw
, or declare it as gem 'awsraw', '~>1.0.0.alpha'
in your
Gemfile
.
1.0 has solid tests, but has only had light use so far, and feedback is definitely welcome.
So far we've only built S3 support. We'd love to see pull requests for other AWS services.
The old, 0.1 version lives on the 0.1-maintenance branch.
For all the examples below, you'll need to set up your credentials like this:
credentials = AWSRaw::Credentials.new(
:access_key_id => "...",
:secret_access_key => "..."
)
Set up your Faraday connection something like this:
connection = Faraday.new("http://s3.amazonaws.com") do |faraday|
faraday.use AWSRaw::S3::FaradayMiddleware, credentials
faraday.response :logger
faraday.adapter Faraday.default_adapter
end
A simple GET request:
response = connection.get("/mah-sekret-buckit/reaction.gif")
A PUT request:
connection.put do |request|
request.url "/mah-sekret-buckit/reaction.gif"
request.headers["Content-Type"] = "image/gif"
request.body = File.new("reaction.gif")
end
See the AWS S3 REST API docs for all the requests you can make.
If your request has a body and you don't provide a Content-MD5
header for it,
AWSRaw will try to calculate one. (The S3 API requires the Content-MD5
header
for correct request signing.)
It can handle the body behaving as either a String
or a File
. If you want
to do something different with the body, you'll need to set the Content-MD5
header yourself.
You must also provide a Content-Type
header for your request if there's a
request body. AWSRaw will raise an exception if you don't.
If you need a signed URI with an expiry date, this is how to do it. See the AWS docs on the subject.
signer = AWSRaw::S3::QueryStringSigner.new(credentials)
uri = signer.sign(
"https://s3.amazonaws.com/mah-sekret-buckit/reaction.gif",
Time.now + 600 # The URI will expire in 10 minutes.
)
You can use AWSRaw to generate signatures for browser-based uploads. See the AWS docs on the topic.
policy = [
{ "bucket" => "mah-secret-buckit" }
]
policy_json = JSON.generate(policy)
http_post_variables = {
"AWSAccessKeyID" => credentials.access_key_id,
"key" => "reaction.gif",
"policy" => AWSRaw::S3::Signature.encode_form_policy(policy_json),
"signature" => AWSRaw::S3::Signature.form_signature(policy_json, credentials)
}
Then get your browser to do an XHR request using the http_post_variables, and Bob's your aunty.
git checkout -b my-new-feature
)git commit -am 'Add some feature'
)git push origin my-new-feature
)