May 27th, 2009
· . Requests to AWS can now be signed in order to authenticate them. Amazon plans to make the signing of requests mandatory as of 15th August 2009, so it is recommended to start doing so now.
To have your requests automatically signed by Ruby/AWS, simply add the 'secret_key_id' parameter to your ~/.amazonrc configuration file. Its value should, rather predictably, be your secret access key, which can be retrieved here:
· You needn't be concerned about Amazon's warnings not to show your secret key to anyone else, because it will be used only for signing requests, prior to sending them. The key itself will not be sent over the network to Amazon, even in encrypted form.
· In order to incorporate the new functionality, minor changes had to be made to the way the AWS request URLs are encoded. This change means that previous requests cached by earlier versions of Ruby/AWS will not be found in the cache. This is a minor, one-time inconvenience, and it just means that the requests will be performed and cached again.
· When Amazon's AWS servers check whether the correct signature has been applied to a request, they recalculate the signature based on the data in the request and check for a match with the signature supplied by Ruby/AWS.
· This introduces a complicating factor, namely the treatment of non-ASCII characters in the request, such as accented letters. When recalculating the signature, Amazon will use the UTF-8 representation of any such characters. This will cause a signature mismatch if you used a different encoding, such as ISO-8859-1 (a.k.a. Latin-1), when you supplied values for your request parameters.
· Ruby/AWS can't (reliably) dynamically determine which character encoding your strings use, so this information can now be supplied via the ~/.amazonrc configuration file, using the 'encoding' parameter. This should be set to whichever encoding you use. If left unset, it defaults to UTF-8. An exception will be raised if you attempt to use an invalid (i.e. unknown) encoding.
· Currently, the encoding you use makes no difference unless your requests are being signed, but because signing will soon be mandatory, I recommend you explicitly state which encoding you intend to use.
· You may also change the encoding in use at any time by assigning to the @encoding instance variable of your Request object.
· The robustness of the software has been improved by handling the following additional exceptions while communicating with the AWS servers: Errno::ECONNREFUSED, Errno::ECONNABORTED, Errno::ETIMEDOUT and Timeout::Error. Users have reported that all of these occur from time to time, although only Windows platforms seem to suffer from Errno::ECONNABORTED.
· The version of the AWS API used is now 2009-03-31, the latest at the time of writing.
February 20th, 2009
· Ruby/AWS's configuration files now accept locale-specific parameters.
· Operation#batch is a new method that allows operations of any class to be batched.
· VehiclePartLookup, VehiclePartSearch, and VehicleSearch operations are now supported.
· The list of search indices for ItemSearch operations has been updated.
· Parameter checking for ItemSearch operations no longer occurs.
· The configuration file now supports a new global parameter, "api", for requesting a different version of the AWS API.
· AWS internal errors are now handled.
· They raise an Amazon::AWS::Error::AWSError exception.
October 3rd, 2008
· It's now possible to have Ruby/AWS use a user configuration file with a name other than .amazonrc.
· This is achieved by defining $AMAZONRCFILE.
· If left undefined, the default of .amazonrc is used.
· Locations other than $HOME were not being checked for .amazonrc.
· This bug has now been fixed.
September 22nd, 2008
· $AMAZONRCDIR is now searched for .amazonrc before $HOME and the other directories.
· There is a new top-level class of exception for Ruby/AWS, Amazon::AmazonError.
· Most non-operational exceptions are now immediate subclasses of AmazonError.
· Amazon::AWS::Error::AWSError was previously a class that generated exceptions, but it's now simply a container class derived from AmazonError.
· All operational exceptions (the ones whose class is dynamically created when AWS returns an error) are now subclasses of AWSError.
September 11th, 2008
· The version of the Amazon AWS API requested when performing operations is now 2008-08-19 (the latest at the time of this writing).
· Config file lines may contain leading whitespace.
· The exception class Amazon::Config::ConfigError was not defined.
· Operations other than ItemSearch now use the appropriate pagination parameter to fetch multiple results pages.
· Previously, they all attempted to use ItemPage.