Fetching contributors…
Cannot retrieve contributors at this time
290 lines (228 sloc) 19.5 KB


  • Changes the internal buffering concatenation to a much faster implementation: Buffer.concat by using the buffer-concat module for node.js v0.6.


  • Deprecates the usage of node.js v0.8.4 and below due to lack of proper SSL validation support for HTTPS.
  • Workaround for host based buckets that have dot in their name in order to enable their usage for node.js v0.10+ at the cost of disabling the SSL validation for that case. Refactoring the internals to use the path based addressing is the solution for proper HTTPS support.
  • Updates the EC2 API client to default to version 2013-02-01.
  • Updates the RDS API client to default to version 2013-02-12.


  • Fixes the do not silently return early if both content-type and content-length is specified issue #79.


  • [BREAKS COMPAT] Dropped the node.js v0.4.x support due to lack of support in npm 1.1.x.
  • All the dependencies are listed as optional dependencies. The library does feature detection. It fails on runtime if none of the depdendencies are installed.
  • Implemented debug mode which can be enabled by using NODE_ENV=development.


  • Changes the npm installation of the dependencies to a CLI wrapper due to bugs in npm with older node versions #61.
  • All the requests with HTTP request body are sent after status code 100 Continue, if possible. Impossible for SNS, STS, and DynamoDB as they simply bail out with 500 Internal Server Error. The request body is sent when the continue event is emitted. Should mitigate or fix #39. Can't declare this issue closed since there's not reliable way to reproduce all the errors, but should at least avoid EPIPE.
  • Updates the RDS API client to default to version 2013-01-10.


  • Removes the deep cloning of httpOptions as it breaks custom HTTP Agents #72.


  • Signs x-amz-date if present as request header instead of Date #71.
  • Adds s3.putFiles() method to upload multiple files #70.
  • s3.signUrl() returns the URL with path based addressing if the protocol is HTTPS. The host based addressing breaks HTTPS due to the reasons explained here for the HTTPS naming limitations.
  • Updates the EC2 API client to default to version 2012-12-01.
  • Updates the ElastiCache API client to default to version 2012-11-15.


  • Added the Australian region to the config.
  • Removed the noRegion flag for ElastiCache. For the moment, unavailable for Sydney, Australia.
  • Updates the ElastiCache API client to default to version 2012-08-01.


  • Don't error out on close events with 204 status code #67.
  • Updates the EC2 API client to default to version 2012-10-01.
  • Updates the SQS API client to default to version 2012-11-05.


  • Does not pass the S3 CreateBucketConfiguration document on bucket creation with s3.createBucket() into the default zone #64.
  • Allowing empty string for indicating the default zone (US East 1, N. Virginia) for s3.createBucket().


  • Small changes to the MIME detection code that relies on mime-magic due to the deprecation of mime.fileWrapper() #7.
  • Updates the RDS API client to default to version 2012-09-17.
  • Updates the EC2 API client to default to version 2012-08-15.
  • Fixes the xml2js broken handling of the root element that traditionally wasn't part of the object.


  • Deprecates the usage of node.js v0.4.10+. The support for node.js v0.4.10+ will be removed in aws2js v0.8.
  • Refactored the internals to depend of lodash (underscore.js drop-in replacement) instead of various custom solutions.
  • Enables the usage of npm shrinkwrap with the install.js dependencies #58.
  • Fixes the improperly signed header for DynamoDB when request body contains UTF-8 characters #60.
  • Updates the RDS API client to default to version 2012-07-31.


  • Removed the npm purging functionality #57.


  • Using the s3.put() String Request Body Handler may silently result in truncated data due to inconsistent use of the default 'utf8' encoding #55, #56. Updated the documentation to reflect this default.


  • Fixes the install script that wiped npm for global installations. Reported via email, therefore no issue number.
  • Updates the EC2 API client to default to version 2012-07-20.


  • Added the possibility to pick the library dependencies: libxml-to-js or xml2js for XML parsing, mime-magic or mime for MIME type detection. libxml-to-js and mime-magic are still the defaults. This adds the possibility to install the library without binary dependencies #22 - by using the xml2js and mime modules.
  • Added Windows support. By default, under Windows, aws2js installs with xml2js and mime-magic as dependencies.


  • Reverted the usage of Stream.pipe() for the Stream Request Body Handler #49, #50.


  • Enabled the ?delete subresource for S3 #51.
  • Added a new S3 helper: s3.delMultiObjects() that makes use of the ?delete subresource.


  • Adds Amazon Elastic MapReduce (EMR) support.
  • Updates the EC2 API client to default to version 2012-06-15.
  • jslint compliant code (library and tests).


  • New S3 helpers: s3.copyObject(), s3.moveObject(), s3.getBucket().
  • Improved the S3 helper s3.renameObject() by adding the optional headers argument. Deprecated s3.renameObject in favor of s3.moveObject().
  • New optional headers argument to the s3.del() low level method.


  • Adds s3.signUrl() low level method for creating pre-signed URLs #45.
  • Updates the EC2 API client to default to version 2012-06-01.
  • Updates the ELB API client to default to version 2012-06-01.


  • Fixes the double callback calling for the DynamoDB client #41.
  • Updates the EC2 API client to default to version 2012-05-01.


  • S3 lifecycle management API: s3.getLifeCycle(), s3.delLifeCycle(), s3.putLifeCycleRule(), s3.delLifeCycleRule() #37.


  • Fixes the broken host header for the S3 307 redirect #36.
  • Updates the EC2 API client to default to version 2012-04-01.
  • Updates the RDS API client to default to version 2012-04-23.


  • Fixes global variables leak #33.


  • Fixes The DynamoDB JSON conversion that did not support UTF-8 chars #30.
  • Only strings and numbers are allowed to be a x-amz header value for the S3 API #31. Prints a warning when things are unexpected. Most probably that's broken user input.


  • Corrected URL module's alias from 'url' to 'u' #28.
  • Updates the ElastiCache API client to default to version 2012-03-09.


  • Enables the region support for DynamoDB #27.


  • Support for the arguments without values into the optional query argument of s3.get().


  • Adds the possibility to pass HTTP options to the client loader #26.
  • If the connection is prematurely closed, if there's an XML document as response body, its parsed version is attached to the error object #26.
  • Updates the EC2 API client to default to version 2012-03-01.


  • Fixes a global variable fix #25.


  • Fixes the broken encoding of query parameters sent through the optional query argument of s3.get().
  • Updates the RDS API client to default to version 2012-01-15.


  • Fixes the query arguments handling due to backward incompatible changes into the S3 API request signing method. The aws2js implementation is backward compatible.
  • 'query' optional argument for the s3.get() method #23 for specifying request parameters if you would like to do it in a cleaner way.


  • Enables node.js v0.6.10+ support since #2636 is closed.
  • Forces mime-magic v0.2.5 as dependency due to build issues of v0.2.4 with some npm versions.
  • Makes the s3.putFileMultipart() to handle the partSize more elegant: optional parameter, defaults to 5242880 bytes, if invalid, it is forced as 5242880 bytes.


  • low level method for initiating / completing a multipart upload.
  • The file Request Body Handler now supports byte ranges in order to upload the parts of a multipart upload.
  • Removes some old 0.5 cruft. Requests to S3 with query parameters that didn't contained paths were not signed properly.
  • S3 multipart upload API: initUpload(), abortUpload, completeUpload(), putFilePart(), putStreamPart(), putBufferPart(), putFileMultipart().
  • Disables node 0.6.9 from the supported version due to #2636.


  • Uses the idea from #16 of aws-lib in order to make the query APIs request signing more stable.
  • Added Amazon STS (Security Token Service) support.
  • Added Amazon DynamoDB support.
  • Updates the EC2 API client to default to version 2011-12-15.
  • Updates the RDS API client to default to version 2011-12-19.
  • Updates the ELB API client to default to version 2011-11-15.
  • Added Amazon SNS (Simple Notification Service) support.
  • Added support for using STS credentials with the APIs that support this functionality: EC2, SQS, SNS, S3.
  • Patches in the client templates that don't have default API end points as expected. Now every client should work without the need of calling query.setRegion().
  • Adds a new query API helper: query.setPath().
  • All the setter helpers are chainable.


  • Added Amazon SimpleDB support.
  • Added sa-east-1 region (Brazil, Sao Paulo) support.


  • The client loader creates a new object on every invocation. This makes possible working with multiple clients having different internal states (such as: API endpoints, SQS queue paths, etc).
  • Forces dependencies that include bugfixes which affect aws2js.


  • [BREAKS COMPAT] The automatic S3 path escaping implemented in v0.5.0 won't escape anymore the ? char. There's no proper technical solution for solving the ambiguities regarding this char, therefore, if it's part of the S3 file name / S3 file path, it has to be manually escaped. This situations happens due to the fact that this char is used for seding query params as well. This version enables the query params for all resources.
  • Deprecated the usage of s3.escapePath(). Use JavaScript's encodeURI() instead.


  • Sending query parameters was broken for the S3 client into the previous v0.5.x releases due to automatic escaping.


  • Fixes the broken Content-Length header if Content-Type was manually specified for the S3 PUT operation.


  • Added Amazon CloudFormation support.


  • sqs.setQueue() in favor of sqs.queue(). Tells the story better if you look at how the aws2js API looks like.


  • sqs.queue() helper for calling a specific SQS queue.


  • s3.del() allows calling it without calling s3.setBucket(). If you really want to use that pesky path style addressing.
  • Throws an Error() if the credentials aren't set. Wrapping the error handling into a callback is not practical here since it's clearly an user error.
  • Throws an Error() if the request / response body handlers are invalid.


  • Revoked the ability to override Content-MD5 for s3.putFile().
  • The body handlers are more forgiving by returning the Error() as the error argument of the callback insteaf of throwing it.
  • Added Amazon SQS support.


  • [MIGHT BREAK COMPAT] The S3 paths are now escaped. The chars that normally aren't part of an S3 path are now URL encoded. The s3.escapePath() is called automatically. Exposed as helper in order to be able to know exactly the input for the S3 REST API.
  • The 'closed' events of the HTTPS response are treated as errors. The AWS APIs should end the request cleanly. Normally they do. This fixes possible hangs of the HTTPS support.
  • Avoids the node.js issue #1399 without my own http.js bundle.
  • Adds the client.getApiVersion() method in order to indicate which is the default or defined API version. The query APIs support this feature. This is an elegant way of wrapping client.query.Version which may be an arcane methodology for outsiders. Usually useful for debugging.
  • Adds the client.setApiVersion() method for setting the API version. The query APIs support this feature.
  • Adds s3.setEndPoint() helper for the S3 client.
  • Adds Amazon CloudWatch support.
  • Adds Amazon ElastiCache support.
  • Enables the client.getEndPoint() for all the API clients.
  • Updates the EC2 API client to default to version 2011-07-15.
  • Updates the ELB API client to default to version 2011-08-15.
  • Updates the AutoScaling API client to default to version 2011-01-01.
  • The input query for the query argument of the query APIs takes precendence over the query parameters that are configured into the client itself. This allows per API call custom configuration (eg: Version - indicates the API version).
  • Integrates with mime-magic to provide the automatic MIME type detenction when the Content-Type header for the S3 PUT operation is undefined. This method does a bit of I/O, it is slower than the previous method for computing the MIMEs, but the results are more reliable. The libmagic functionality returns the MIME type by reading the file itself instead of doing a dumb file extension lookup.
  • Deprecates in favor of query.request() for the query APIs.
  • The query.request() method makes the query argument to be optional.
  • Changed the internal structure of the library.
  • Deprecates s3.putObject() in favor of s3.putFile().
  • Implements new GET response handlers: buffer - the response contains a buffer key with the buffer contents; stream - returns the HTTPS response itself which implements node.js's Readable Stream interface.
  • Adds a new s3.putStream() helper for PUT'ing streams to S3.
  • Adds a new s3.putBuffer() helper for PUT'ing buffers to S3.
  • Goes fully async by removing the only blocking call, fs.statSync(), when using PUT with file request body handler.
  • Unit testing coverage.


  • Fixes a possible race condition that could appear into the fsync(2) wrapper.


  • Proper support for the fsync(2) wrapper. If s3.get() is used for downloading the objects to the disk, the ENOENT errors that could happened from time to time should now be gone.


  • Adds s3.renameObject().
  • Fixes the error reporting. When an AWS API didn't return XML as response body, the callback wasn't called.


  • Fixes the broken handling of error reporting of the XML parsing.


  • [BREAKS COMPAT] Removed the response argument in case of error. If there's an error document returned by the AWS API itself, it is exposed as error.document. This may break some code that expects the error document to be returned as the response argument. This change unifies the error reporting that won't expect the result argument anymore.
  • [MIGHT BREAK COMPAT] Returns the error argument as null in case of success in order to follow the node.js convention instead of undefined. This may break some code if the evaluation was made against 'undefined'.
  • Exposes client.getEndPoint() method if the client.setRegion() method is available.
  • Calls fsync(2) after each downloaded file via s3.get() in order to make sure that the application has a consistent behavior when the s3.get() callback is called.


  • Adds again the backport-0.4 dependency, v0.4.10-1, that targets issue #1399 from node v0.4.10. This release fixes a rare race condition that may appear when doing S3 PUT requests with bodies that are streamed from files.


  • Drops the backport-0.4 dependency. node.js v0.4.10 finally came around with the desired fixes. Only node 0.4.10 and above is supported.
  • Adds support for Amazon Auto Scaling.
  • Exposes the client.setMaxSockets() method for changing the https.Agent.defaultMaxSockets property.


  • Adds backport-0.4 as module dependency in order to properly fix the broken request.abort() support. This version is crappy workaround-free.
  • Adds support for Amazon Identity and Access Management (IAM).


  • If the WriteStream fails when the file response handler is in use by the GET request, the HTTPS request itself is aborted. Previously it was continued, therefore it might waste a lot of bandwidth, that you're going to pay for. This task was not trivial as a bug in node.js complicates the implementation of this feature. See #1085.


  • Changes file the GET response handler to receive an object indicating the file path instead the file path itself in order to introduce more flexibility. Unfortunately this introduces a slight backward incompatibility. Hate doing it, but it's a must.
  • Fixes the acl checker that did not accept a false value in order to go with the default 'private'.


  • [BREAKS COMPAT] Client loader. Previously all the clients were loaded when aws2js was required. Now a specific client is loaded when executing the exported load() method. Unfortunately, this introduces backward incompatibility.
  • [BREAKS COMPAT] Removed the client.config() method as it may break more stuff than it introduces.
  • The README relies on Wiki pages in order to provide the docs.
  • Amazon S3 support.
  • Amazon ELB support.
  • Made the Amazon RDS API version to be the latest 2011-04-01 by default.
  • Made the Amazon SES API version to be the latest 2010-12-01 by default.
  • Adds mime as dependency due to mime/type auto-detection for S3 uploads.


  • Updates the libxml-to-js dependency to v0.2.
  • Fixes the client.setRegion() call as it is currently broken.
  • Disables client.setRegion() for SES.


  • Implements the Amazon Simple Email Service (SES) client.


  • Migrated to a cleaner XML to JS implementation (my own libxml-to-js wrapper).
  • Initial public release with versioning and npm support.


  • Initial version, featuring Amazon EC2 and Amazon RDS support.