# __2.11.14__ __2020-04-17__
## __AWS OpsWorks CM__
  - ### Features
    - Documentation updates for opsworkscm

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon Fraud Detector__
  - ### Features
    - Added support for a new rule engine execution mode. Customers will be able to configure their detector versions to evaluate all rules and return outcomes from all 'matched' rules in the GetPrediction API response. Added support for deleting Detectors (DeleteDetector) and Rule Versions (DeleteRuleVersion).

# __2.11.13__ __2020-04-16__
## __AWS Elemental MediaConvert__
  - ### Features
    - AWS Elemental MediaConvert now allows you to specify your input captions frame rate for SCC captions sources.

## __AWS Glue__
  - ### Features
    - This release adds support for querying GetUserDefinedFunctions API without databaseName.

## __AWS IoT Events__
  - ### Features
    - API update that allows users to customize event action payloads, and adds support for Amazon DynamoDB actions.

## __AWS Lambda__
  - ### Features
    - Sample code for AWS Lambda operations

## __AWS MediaTailor__
  - ### Features
    - AWS Elemental MediaTailor SDK now allows configuration of Avail Suppression.

## __AWS Migration Hub__
  - ### Features
    - Adding ThrottlingException

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __AWS SecurityHub__
  - ### Features
    - Added a new BatchUpdateFindings action, which allows customers to update selected information about their findings. Security Hub customers use BatchUpdateFindings to track their investigation into a finding. BatchUpdateFindings is intended to replace the UpdateFindings action, which is deprecated.

## __Amazon Augmented AI Runtime__
  - ### Features
    - This release updates Amazon Augmented AI ListHumanLoops and StartHumanLoop APIs.

## __Amazon Elastic Compute Cloud__
  - ### Features
    - Amazon EC2 now supports adding AWS resource tags for placement groups and key pairs, at creation time. The CreatePlacementGroup API will now return placement group information when created successfully. The DeleteKeyPair API now supports deletion by resource ID.

## __Amazon Import/Export Snowball__
  - ### Features
    - An update to the Snowball Edge Storage Optimized device has been launched. Like the previous version, it has 80 TB of capacity for data transfer. Now it has 40 vCPUs, 80 GiB, and a 1 TiB SATA SSD of memory for EC2 compatible compute. The 80 TB of capacity can also be used for EBS-like volumes for AMIs.

## __Amazon Relational Database Service__
  - ### Features
    - This release adds support for Amazon RDS Proxy with PostgreSQL compatibility.

## __Amazon SageMaker Service__
  - ### Features
    - Amazon SageMaker now supports running training jobs on ml.g4dn and ml.c5n instance types. Amazon SageMaker supports in "IN" operation for Search now.

## __EC2 Image Builder__
  - ### Features
    - This release includes support for additional OS Versions within EC2 Image Builder.

## __Netty NIO HTTP Client__
  - ### Bugfixes
    - Mark a connection as unreusable if there was a 5xx server error so that a new request will establish a new connection.

# __2.11.12__ __2020-04-08__
## __AWS CloudFormation__
  - ### Features
    - The OrganizationalUnitIds parameter on StackSet and the OrganizationalUnitId parameter on StackInstance, StackInstanceSummary, and StackSetOperationResultSummary are now reserved for internal use. No data is returned for this parameter.

## __AWS Elemental MediaConvert__
  - ### Features
    - AWS Elemental MediaConvert SDK adds support for queue hopping. Jobs can now hop from their original queue to a specified alternate queue, based on the maximum wait time that you specify in the job settings.

## __AWS Migration Hub Config__
  - ### Features
    - Adding ThrottlingException

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon Chime__
  - ### Features
    - feature: Chime: This release introduces the ability to tag Amazon Chime SDK meeting resources. You can use tags to organize and identify your resources for cost allocation.

## __Amazon CodeGuru Profiler__
  - ### Features
    - CodeGuruProfiler adds support for resource based authorization to submit profile data.

## __Amazon EC2 Container Service__
  - ### Features
    - This release provides native support for specifying Amazon EFS file systems as volumes in your Amazon ECS task definitions.

## __Amazon Elastic Compute Cloud__
  - ### Features
    - This release provides the ability to include tags in EC2 event notifications.

# __2.11.11__ __2020-04-07__
## __AWS MediaConnect__
  - ### Features
    - You can now send content from your MediaConnect flow to your virtual private cloud (VPC) without going over the public internet.

## __Amazon API Gateway__
  - ### Features
    - Documentation updates for Amazon API Gateway.

## __Amazon CodeGuru Reviewer__
  - ### Features
    - API updates for CodeGuruReviewer

# __2.11.10__ __2020-04-06__
## __AWS Elastic Beanstalk__
  - ### Features
    - This release adds a new action, ListPlatformBranches, and updates two actions, ListPlatformVersions and DescribePlatformVersion, to support the concept of Elastic Beanstalk platform branches.

## __AWS Identity and Access Management__
  - ### Features
    - Documentation updates for AWS Identity and Access Management (IAM).

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon Chime__
  - ### Features
    - Amazon Chime proxy phone sessions let you provide two users with a shared phone number to communicate via voice or text for up to 12 hours without revealing personal phone numbers. When users call or message the provided phone number, they are connected to the other party and their private phone numbers are replaced with the shared number in Caller ID.

## __Amazon Transcribe Service__
  - ### Features
    - This release adds support for batch transcription jobs within Amazon Transcribe Medical.

# __2.11.9__ __2020-04-03__
## __AWS RoboMaker__
  - ### Features
    - Added support for limiting simulation unit usage, giving more predictable control over simulation cost

## __AWS S3__
  - ### Features
    - Allow DefaultS3Presigner.Builder to take a custom S3Configuration

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon Personalize Runtime__
  - ### Features
    - Amazon Personalize: Add new response field "score" to each item returned by GetRecommendations and GetPersonalizedRanking (HRNN-based recipes only)

# __2.11.8__ __2020-04-02__
## __AWS Elemental MediaLive__
  - ### Features
    - AWS Elemental MediaLive now supports Automatic Input Failover. This feature provides resiliency upstream of the channel, before ingest starts.

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon CloudWatch__
  - ### Features
    - Amazon CloudWatch Contributor Insights adds support for tags and tagging on resource creation.

## __Amazon GameLift__
  - ### Features
    - Public preview of GameLift FleetIQ as a standalone feature. GameLift FleetIQ makes it possible to use low-cost Spot instances by limiting the chance of interruptions affecting game sessions. FleetIQ is a feature of the managed GameLift service, and can now be used with game hosting in EC2 Auto Scaling groups that you manage in your own account.

## __Amazon Redshift__
  - ### Features
    - Documentation updates for redshift

## __Amazon Relational Database Service__
  - ### Features
    - Documentation updates for RDS: creating read replicas is now supported for SQL Server DB instances

# __2.11.7__ __2020-04-01__
## __AWS IoT__
  - ### Features
    - This release introduces Dimensions for AWS IoT Device Defender. Dimensions can be used in Security Profiles to collect and monitor fine-grained metrics.

## __AWS MediaConnect__
  - ### Features
    - You can now send content from your virtual private cloud (VPC) to your MediaConnect flow without going over the public internet.

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

# __2.11.6__ __2020-03-31__
## __AWS Elemental MediaStore__
  - ### Features
    - This release adds support for CloudWatch Metrics. You can now set a policy on your container to dictate which metrics MediaStore sends to CloudWatch.

## __AWS Glue__
  - ### Features
    - Add two enums for MongoDB connection: Added "CONNECTION_URL" to "ConnectionPropertyKey" and added "MONGODB" to "ConnectionType"

## __AWS Lambda__
  - ### Features
    - AWS Lambda now supports .NET Core 3.1

## __AWS OpsWorks CM__
  - ### Features
    - Documentation updates for OpsWorks-CM CreateServer values.

## __AWS Organizations__
  - ### Features
    - Documentation updates for AWS Organizations

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __AWS Storage Gateway__
  - ### Features
    - Adding audit logging support for SMB File Shares

## __AWS WAFV2__
  - ### Features
    - Added support for AWS Firewall Manager for WAFv2 and PermissionPolicy APIs for WAFv2.

## __Amazon AppConfig__
  - ### Features
    - This release adds an event log to deployments. In the case of a deployment rollback, the event log details the rollback reason.

## __Amazon Detective__
  - ### Features
    - Removing the notes that Detective is in preview, in preparation for the Detective GA release.

## __Amazon Elastic Inference__
  - ### Features
    - This release includes improvements for the Amazon Elastic Inference service.

## __Amazon Pinpoint__
  - ### Features
    - This release of the Amazon Pinpoint API introduces MMS support for SMS messages.

## __Amazon Rekognition__
  - ### Features
    - This release adds DeleteProject and DeleteProjectVersion APIs to Amazon Rekognition Custom Labels.

## __Firewall Management Service__
  - ### Features
    - This release contains FMS wafv2 support.

# __2.11.5__ __2020-03-30__
## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Access Analyzer__
  - ### Features
    - This release adds support for the creation and management of IAM Access Analyzer analyzers with type organization. An analyzer with type organization continuously monitors all supported resources within the AWS organization and reports findings when they allow access from outside the organization.

# __2.11.4__ __2020-03-27__
## __AWS Global Accelerator__
  - ### Features
    - This update adds an event history to the ListByoipCidr API call. This enables you to see the changes that you've made for an IP address range that you bring to AWS Global Accelerator through bring your own IP address (BYOIP).

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

  - ### Bugfixes
    - Remove the `LimitExceededException` as a throttling error as it seems many services don't treat it as a throttling error.

## __AWS Service Catalog__
  - ### Features
    - Added "LocalRoleName" as an acceptable Parameter for Launch type in CreateConstraint and UpdateConstraint APIs

## __AWSKendraFrontendService__
  - ### Features
    - The Amazon Kendra Microsoft SharePoint data source now supports include and exclude regular expressions and change log features. Include and exclude regular expressions enable you to provide a list of regular expressions to match the display URL of SharePoint documents to either include or exclude documents respectively. When you enable the changelog feature it enables Amazon Kendra to use the SharePoint change log to determine which documents to update in the index.

# __2.11.3__ __2020-03-26__
## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __AWS SecurityHub__
  - ### Features
    - Security Hub has now made it easier to opt out of default standards when you enable Security Hub. We added a new Boolean parameter to EnableSecurityHub called EnableDefaultStandards. If that parameter is true, Security Hub's default standards are enabled. A new Boolean parameter for standards, EnabledByDefault, indicates whether a standard is a default standard. Today, the only default standard is CIS AWS Foundations Benchmark v1.2. Additional default standards will be added in the future.To learn more, visit our documentation on the EnableSecurityHub API action.

## __Amazon FSx__
  - ### Features
    - This release includes two changes: a new lower-cost, storage type called HDD (Hard Disk Drive), and a new generation of the Single-AZ deployment type called Single AZ 2. The HDD storage type can be selected on Multi AZ 1 and Single AZ 2 deployment types.

## __Amazon SageMaker Service__
  - ### Features
    - This release updates Amazon Augmented AI CreateFlowDefinition API and DescribeFlowDefinition response.

# __2.11.2__ __2020-03-25__
## __AWS Cost Explorer Service__
  - ### Features
    - Customers can now receive Savings Plans recommendations at the member (linked) account level.

## __AWS SDK for Java v2__
  - ### Features
    - Added a `defaultProfileFile` and `defaultProfileName` option to the client override configuration. Setting this configuration value is equivalent to setting the environment or system properties for the profile file and profile name. Specifically, it sets the default profile file and profile name used by the client.
    - Reduced the number of times the profile file configuration is read from disk on client creation from 3-5 to 1.
    - Updated service endpoint metadata.

## __AWS X-Ray__
  - ### Features
    - GetTraceSummaries - Now provides additional root cause attribute ClientImpacting which indicates whether root cause impacted trace client.

## __Amazon CloudWatch Application Insights__
  - ### Features
    - Amazon CloudWatch Application Insights for .NET and SQL Server now integrates with Amazon CloudWatch Events (AWS CodeDeploy, AWS Health and Amazon EC2 state changes). This feature enables customers to view events related to problems detected by CloudWatch Application Insights, and reduce mean-time-to-resolution (MTTR).

## __Amazon Detective__
  - ### Features
    - The new ACCEPTED_BUT_DISABLED member account status indicates that a member account that accepted the invitation is blocked from contributing data to the behavior graph. The reason is provided in the new DISABLED_REASON property. The new StartMonitoringMember operation enables a blocked member account.

## __Amazon DynamoDB__
  - ### Features
    - When endpoint discovery is enabled, the endpoint discovery process is now initialized with the first request, instead of 60 seconds after the first request.

  - ### Bugfixes
    - Fixed an issue that could cause a null-pointer-exception when using anonymous credentials with endpoint discovery enabled.
    - Fixed an issue where endpoint discovery configuration specified in the profile file was being ignored.

## __Amazon DynamoDB Enhanced Client [Preview]__
  - ### Bugfixes
    - Performance improvements.

## __Amazon Elasticsearch Service__
  - ### Features
    - Adding support for customer packages (dictionary files) to Amazon Elasticsearch Service

## __Amazon Managed Blockchain__
  - ### Features
    - Amazon Managed Blockchain now has support to publish Hyperledger Fabric peer node, chaincode, and certificate authority (CA) logs to Amazon CloudWatch Logs.

## __Amazon S3__
  - ### Bugfixes
    - Fixed a bug where explicitly disabling use-arn-region on S3Configuration would have lower priority than the environment variable, system property or profile property.

# __2.11.1__ __2020-03-24__
## __AWS Organizations__
  - ### Features
    - Introduces actions for giving a member account administrative Organizations permissions for an AWS service. You can run this action only for AWS services that support this feature.

## __AWS RDS DataService__
  - ### Features
    - Documentation updates for rds-data

## __AWS SDK for Java v2__
  - ### Features
    - Updated service endpoint metadata.

## __Amazon Athena__
  - ### Features
    - Documentation updates for Athena, including QueryExecutionStatus QUEUED and RUNNING states. QUEUED now indicates that the query has been submitted to the service. RUNNING indicates that the query is in execution phase.

## __Amazon Elastic Kubernetes Service__
  - ### Features
    - Adding new error codes: Ec2SubnetInvalidConfiguration and NodeCreationFailure for Nodegroups in EKS

# __2.11.0__ __2020-03-23__
## __AWS SDK for Java v2__
  - ### Features
    - Bump minor version to '2.11.0-SNAPSHOT' because of [#1692](https://github.com/aws/aws-sdk-java-v2/issues/1692)
    - Updating dependency version: netty 4.1.42.Final -> 4.1.46.Final (contains the fix for reducing heap usage for netty client)

## __Amazon Elastic Kubernetes Service__
  - ### Features
    - Adding new error code IamLimitExceeded for Nodegroups in EKS

## __Amazon Route 53__
  - ### Features
    - Documentation updates for Route 53.

## __AmazonApiGatewayV2__
  - ### Features
    - Documentation updates to reflect that the default timeout for integrations is now 30 seconds for HTTP APIs.
