This is the NEWS file for the perl-Amazon-API project. This file
contains information on changes since the last release of the package,
as well as a running list of changes from previous versions. If
critical bugs are found in any of the software, notice of such bugs
and the versions in which they were fixed will be noted here, as well.
Version 2.1.3 fixes several seriaalization issues.
- fix paginators that use a compound key. Some paginators need to use a compound key to find the paged result set in the returned results element. The previous fix was incomplete since out_token can also be a compound key.
- Serializer is more stable on older XML APIs that use a wrapper object that is not necessarily describe in the botocore metadata
- updated examples and added a --log-level options to enable debugging
- use JSON, not JSON:PP in places
- clean-up overly verbose debug/trace messages...but this is a wip
Version 2.1.2 is a minor update to which fixes a couple of bugs.
- fix paginators that use a compound key. Some paginators need to use a compound key to find the paged result set in the returned results element. For example, the CloudFront ListDistributions API uses 'DistributionList.Items' as the result key...
- Some XML based APIs required different handling of request payload including adding the xmlns attribute
- return an empty hash when an API is succesful but returns no data
- ditch the use of ReadonlyX as it creates a host of problems when some modules use Readonly
None
_Version 2.1.1 is a minor update to which fixes a bug in the way pod was being generated.
- fix pod generation
- perltidy'ing of Botocore generated classes is now disabled by default to make creating classes a little faster. See cpan-dist/README.md.
- documentation cleanups and better more detailed explanations overall
Version 2.1.0 is a minor update to which fixes a few small bugs and updates the documetation. More importantly, this is the first release that I would consider production ready.
- initialize log level to error
- fix bug when invoking API directly (not using botocore)
- perltidy'ing of Botocore generated classes is now disabled by default to make creating classes a little faster. See cpan-dist/README.md.
- documentation cleanups and better more detailed explanations overall
Version 2.0.15 is a minor update to which fixes a few small bugs
- src/examples
- initialize log level from options
- None
Version 2.0.14 is a minor update to which fixes an uninitialized warning
Amazon::API::invoke_api- test limit_key in paginator since some services (like SNS::ListTopics) do not support a limit, they are hard coded by the API at 100.
- None
Version 2.0.13 is a minor update to fix packaging
- added
Pod::Findto list of requirements
- None
Version 2.0.12 fixes bugs and improves on request and response serialization
amazon-apihelp for shapes fixed (example:amazon-api -s sqs ListQueuesRequest)create-service- usesrealpathto verify BOTOCORE_PATH- fixes for many serialization issues including:
- incorrect interpretation of timestamp types
- inclusion of response members that were not actually in the response
- serialization of requests and responses has been significantly improved - please report issues
- updated examples
Version 2.0.11 fixes bugs and add option for disabling use of Botocore support
- uninitialized error for data with nanoseconds
- added option
use_botocorewhich defaults to true but can be used to disable the creation of a Botocore request object for APIs that require parameters that cannot be formatted correctly (yet) by this module - remove the paginator marker when using paginator
Version 2.0.10 fixes bugs and adds a build file for testing distribution prior to release
- error when a shape is a blob type
- error when no value is passed into some request methods
my $subnets = $ec2->DescribeSubnets();
- added .github/workflows/build.yml to project to test distribution before release
- initialize shapes to empty hash if type is structure and passed argument is undefined.
- use URL::Encode::url_encode to encode query string values (not
URI::Encode) Amazon::API::Botocore::Shape::_init_value()- recognize blob typesAmazon::API::Botocore::Shape::Utils- change new() in template to initialize structures when passed argument is undefined
Version 2.0.9 fixes bug for API rest-json API services that also use query parameters
- fixes to Amazon::API::invoke_api (see ChangeLog)
- None
- use a value of 80 columns when formatting documentation if no screen width can be detected.
Version 2.0.8 contains Docker build files for creating Docker containers that can:
- create an RPM for the
Amazon::APIdistribution - run the
create-serviceutility for creating single AWS API CPAN distributions
- RPM builder
create-serviceDocker container. See README.md
- use a value of 80 columns when formatting documentation if no screen width can be detected.
This version replaces the use of the DateTime module for formatting
timestamps with POSIX::strftime. DateTime introduces too many
more dependencies than justified for simply formatting a timestamp.
- remove
DateTimedependency
create-service- pass BOTOCORE_PATH to amazon-api if set on command line
- export BOTOCORE_PATH for
create_cpan_distribution - exit if error creating stubs
This version replaces the use of the DateTime module for formatting
timestamps with POSIX::strftime. DateTime introduces too many
more dependencies than justified for simply formatting a timestamp.
- remove
DateTimedependency
create-service- pass BOTOCORE_PATH to amazon-api if set on command line
- export BOTOCORE_PATH for
create_cpan_distribution - exit if error creating stubs
This version corrects a bug in the _create_stealth_logger() method
when a logger is passed.
- None
- when passing a logger to the API, the
create_stealth_logger()method was incorrectly trying to detect whether the logging methods (DEBUG, e.g.) existed in the namespace. It also failed to uppercase the log level when creating the method name.
This version corrects a bug in the create-service script
- None
- missing @ in automake variable prevented scandeps from working properly
- don't remove temp directory if DEBUG mode
This version instroduces the create-service utility for creating a
CPAN distribution file for a specific AWS API.
To use the utility you must have the Botocore project somewhere in an accessible path and a few additional required programs.
usage: ./create-service options
Utility to create a CPAN distribution for an AWS API
Options
-------
-h help
-b path path to Botocore project
-o path path for for files (a CPAN distribution will not be create)
-m module name override of Perl module suffix
-s service name name of the AWS API service (lower case)
-t create a regular tarball
Note: To use this utilty to create a CPAN distribution you must have
'make-cpan-dist' which can be found here:
https://github.com/rlauer6/make-cpan-dist.git
This utility is part of the Amazon::API distribtion (v2.0.4).
- new
create-serviceutility
configure.acupdated with correction toscandeps-static.pltest.
This version fixes a few bugs described below and adds more logging features.
- log_file, log_layout options added to constructor for logging to files and for customizing the log layout
- _set_default_logger() called by the constructor will add stealth loggers for Amazon::API and its sub-classes (unless they already exist).
- Readonly for scalars, changed to Readonly::Scalar
This version adds Log::Log4perl as a dependency. There are no code
changes in this version, only the requires file that is used to
create the CPAN distribution has been changed.
- None - essentially the same version as 2.0.0
- None
This version adds Pod::Parser as a dependency since it may not exist
on some systems. There are no code changes in this version, only the
requires files that is used to create the CPAN distribution has been
changed.
- None - essentially the same version as 2.0.0
- None
This is the first official release of the experimental version that employs botocore metadata to create classes for accessing AWS API services.
- None - essentially the same version as 1.4.9
- None
This is a minor release which includes edits to documentation
- None - essentially the same version as 1.4.8
This version removes improves support for creating stubs and shapes
and fixes the serializer when shapes are of type blob
- None
- serialize
blobtypes - fix for
amazon-apiwhen service name is mixed case (e.g. SecretsManager)
This version removes fixes problem setting log levels and bug when
paginators exist but use_paginator is false
- None
- properly import log levels and initialize %LOG4PERL_LOG_LEVELS hash
- return raw results when either there are no paginators or
use_paginatoris false
This version removes the default logger and uses Log::Log4perl or a logger passed in by caller.
- use Log::Log4perl Stealth loggers or custom logger supplied by caller
- update module requirements
This version introduces automatic pagination for APIs that require the use of paginators.
- add support for automatic pagination (use_paginator)
- return raw content if serialization exceptions occur
- serialization of some shapes was busted (ListQueuesResult, e.g.)
This version introduces a paginator() helper method that will return an
array from an API request that paginates (e.g. Route53's
ListHostedZones):
my $rt53 = Amazon::API::Route53->new;
my $results = paginator($rt53, 'ListHostedZones', {MaxItems => 10});
...I hope to incorporate embed this automagically into Amazon::API
so that requests that contain paginators use this method (or
technique) by default. For now, this seems to be a working version of
a useful paginator.
- add exportable
pagintor()method toAmazon::API::Botocore
amazon-apihelp function can use the canoncial service name (upper or CamelCased) provided to serve up documentation on service methods.amazon-api -s SecretsManager help ListSecrets
This version introduces fixes a bug in the way Amazon::API treats
null content.
None
Amazon::API::init_boto_request- when there is no content for POST methods, the APIs usualy expect a payload anyway (like {}). GET methods on the other hand will not have any content.
This version introduces a way to create CPAN distributions for individual AWS APIs.
cpan-dist/Makefilefor creating CPAN distributions - See cpan-dist/README.mdMakefile.requirementsfor creating Perl dependencies - See README-BUILD.md
Amazon::API::Botcore- follow symlinks to find boto data
None
None
- method stubs were being created in the current directory instead of using the --output-path option
- croak if service name provide unknown
This version most notablly presents some improvements for the
experimental Botocore support. Amazon::API can now make use of
the shapes metadata from Botocore the project when making requests and
decoding responses. This version removes generated example APIs
(Amazon::API::EC2, etc) and instead includes a utility for creating
service API. See ChangeLog for a detailed inventory of
changes.
- Updated documenation (pod) for
Amazon::API - Improvements in the use of Botocore metadata for autogeneration of API classes
- API documentation using Botocore metadata for services and shapes
- Amazon API shape support via
Amazon::API::Shape amazon-apiutility for generating classes as well showing API and shape documentation- Pod, pod, and more pod
- Generated documentation for APIs and shapes has been updated to fix several pod errors.
- Serialization of responses into shapes is more reliable.
- Removed accessors for passed credentials to avoid storing
- No longer passes debug flag to
Amazon::Credentials
- experimental use of Botocore for autogeneration of API classes
- more unit tests
- remove accessors for passed credentials to avoid storing
- do not pass debug flags to Amazon::Credentials
- new stub Amazon::API::STS
- unless region was passed, service URL may be set incorrectly, set service URL after region
- incorrect content header was sent for application/x-www-form-urlencode content
- XML error reponses with new lines caused spurious error message regarding stat'ing a file
_This version does not provide any fixes or significant improvements. It contains slighly better documentation. _
- added
Amazon::API::ECRstub to distribution - minor pod updates
- refactoring of
invoke_api()method to reduce complexity
None
- added option 'protocol'
$VERSION
- spurious "%s" fabricating GET url
- snake case and camel case method stubs are now created
automatically if the
api_methodsattribute contains the AWS service method names. - documentation contains more information about the API and how to use it to construct interfaces to AWS services.
Amazon::API::Errortries to decode the error messages based on the Content-Type of the response- constructor will attempt to instantiate an
Amazon::Credentialsobject if there was no other credential attributes passed - constructor will fabricate the service URL if only the
service_url_baseattribute is based - constructor will now accept a
content_typeattribute that will be used as the default when a reference is passed to theinvoke_apimethod
- smokes tests now work (make check)