# __2.6.5__ __2019-07-02__
## __AWS Elemental MediaStore__
  - ### Features
    - This release adds support for tagging, untagging, and listing tags for AWS Elemental MediaStore containers.

## __AWS SDK for Java v2__
  - ### Bugfixes
    - Fix a bug in `FileAsyncResponseTransformer` that causes the future from `prepare()` to not be completed if `onError` is called on its `Subscriber` wile consuming the response stream. Fixes [#1279](https://github.com/aws/aws-sdk-java-v2/issues/1279)

## __Amazon AppStream__
  - ### Features
    - Adding ImageBuilderName in Fleet API and Documentation updates for AppStream.

# __2.6.4__ __2019-07-01__
## __AWS Organizations__
  - ### Features
    - Specifying the tag key and tag value is required for tagging requests.

## __Amazon DocumentDB with MongoDB compatibility__
  - ### Features
    - This release provides support for cluster delete protection and the ability to stop and start clusters.

## __Amazon Elastic Compute Cloud__
  - ### Features
    - This release adds support for specifying a maximum hourly price for all On-Demand and Spot instances in both Spot Fleet and EC2 Fleet.

## __Amazon Relational Database Service__
  - ### Features
    - This release adds support for RDS DB Cluster major version upgrade

# __2.6.3__ __2019-06-28__
## __Alexa For Business__
  - ### Features
    - This release allows developers and customers to add SIP addresses and international phone numbers to contacts.

## __Amazon Elastic Compute Cloud__
  - ### Features
    - You can now launch 8xlarge and 16xlarge instance sizes on the general purpose M5 and memory optimized R5 instance types.

## __Amazon Redshift__
  - ### Features
    - ClusterAvailabilityStatus: The availability status of the cluster for queries. Possible values are the following: Available, Unavailable, Maintenance, Modifying, Failed.

## __Amazon S3__
  - ### Bugfixes
    - Update `ChecksumCalculatingStreamProvider` to comply with `ContentStreamProvider` contract.

## __Amazon WorkSpaces__
  - ### Features
    - Minor API fixes for WorkSpaces.

# __2.6.2__ __2019-06-27__
## __AWS Direct Connect__
  - ### Features
    - Tags will now be included in the API responses of all supported resources (Virtual interfaces, Connections, Interconnects and LAGs). You can also add tags while creating these resources.

## __AWS EC2 Instance Connect__
  - ### Features
    - Amazon EC2 Instance Connect is a simple and secure way to connect to your instances using Secure Shell (SSH). With EC2 Instance Connect, you can control SSH access to your instances using AWS Identity and Access Management (IAM) policies as well as audit connection requests with AWS CloudTrail events. In addition, you can leverage your existing SSH keys or further enhance your security posture by generating one-time use SSH keys each time an authorized user connects.

## __Amazon Pinpoint__
  - ### Features
    - This release includes editorial updates for the Amazon Pinpoint API documentation.

## __Amazon WorkSpaces__
  - ### Features
    - Added support for the WorkSpaces restore feature and copying WorkSpaces Images across AWS Regions.

# __2.6.1__ __2019-06-26__
## __AWS SDK for Java v2__
  - ### Bugfixes
    - Fixed issue where specifying a custom presigning time causes a runtime exception.

## __Amazon DynamoDB__
  - ### Features
    - Documentation updates for dynamodb

# __2.6.0__ __2019-06-26__
## __AWS CodeCommit__
  - ### Features
    - This release supports better exception handling for merges.

## __Amazon S3__
  - ### Bugfixes
    - Modify the types of Part#size and ObjectVersion#size from Integer to Long. This is a breaking change for customers who are using the size() method.

## __AmazonApiGatewayV2__
  - ### Features
    - You can now perform tag operations on ApiGatewayV2 Resources (typically associated with WebSocket APIs)

## __Netty NIO Http Client__
  - ### Bugfixes
    - Completes the response normally when subscription is cancelled from the subscriber and not invoke `SdkAsyncHttpResponseHandler#onError` from the publisher.
