diff --git a/.changes/2.5.11.json b/.changes/2.5.11.json new file mode 100644 index 000000000000..8da93d046eaf --- /dev/null +++ b/.changes/2.5.11.json @@ -0,0 +1,26 @@ +{ + "date": "2019-03-18", + "version": "2.5.11", + "entries": [ + { + "category": "AWS Database Migration Service", + "type": "feature", + "description": "S3 Endpoint Settings added support for 1) Migrating to Amazon S3 as a target in Parquet format 2) Encrypting S3 objects after migration with custom KMS Server-Side encryption. Redshift Endpoint Settings added support for encrypting intermediate S3 objects during migration with custom KMS Server-Side encryption." + }, + { + "category": "Amazon Chime", + "type": "feature", + "description": "This release adds support for the Amazon Chime Business Calling and Voice Connector features." + }, + { + "category": "AWS SDK for Java v2", + "type": "bugfix", + "description": "Fix HeaderUnmarshaller to compare header ignoring cases." + }, + { + "category": "Amazon Elastic Compute Cloud", + "type": "feature", + "description": "DescribeFpgaImages API now returns a new DataRetentionSupport attribute to indicate if the AFI meets the requirements to support DRAM data retention. DataRetentionSupport is a read-only attribute." + } + ] +} \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index a5364fda8ebc..b89c8b8b0e5d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,20 @@ +# __2.5.11__ __2019-03-18__ +## __AWS Database Migration Service__ + - ### Features + - S3 Endpoint Settings added support for 1) Migrating to Amazon S3 as a target in Parquet format 2) Encrypting S3 objects after migration with custom KMS Server-Side encryption. Redshift Endpoint Settings added support for encrypting intermediate S3 objects during migration with custom KMS Server-Side encryption. + +## __AWS SDK for Java v2__ + - ### Bugfixes + - Fix HeaderUnmarshaller to compare header ignoring cases. + +## __Amazon Chime__ + - ### Features + - This release adds support for the Amazon Chime Business Calling and Voice Connector features. + +## __Amazon Elastic Compute Cloud__ + - ### Features + - DescribeFpgaImages API now returns a new DataRetentionSupport attribute to indicate if the AFI meets the requirements to support DRAM data retention. DataRetentionSupport is a read-only attribute. + # __2.5.10__ __2019-03-14__ ## __AWS Certificate Manager__ - ### Features diff --git a/README.md b/README.md index 360c48343288..da7b5ca0fdba 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ You can import the whole SDK into your project (includes all services) as follow software.amazon.awssdk aws-sdk-java - 2.5.10 + 2.5.11 ``` @@ -56,12 +56,12 @@ Alternatively you can add dependencies for the specific services you use only: software.amazon.awssdk ec2 - 2.5.10 + 2.5.11 software.amazon.awssdk s3 - 2.5.10 + 2.5.11 ``` @@ -75,7 +75,7 @@ To automatically manage module versions (currently all modules have the same ver software.amazon.awssdk bom - 2.5.10 + 2.5.11 pom import diff --git a/aws-sdk-java/pom.xml b/aws-sdk-java/pom.xml index f50f44f9e591..adac404b7b14 100644 --- a/aws-sdk-java/pom.xml +++ b/aws-sdk-java/pom.xml @@ -4,7 +4,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../pom.xml aws-sdk-java diff --git a/bom-internal/pom.xml b/bom-internal/pom.xml index b14c001d78d9..e2f8ecd94ab6 100644 --- a/bom-internal/pom.xml +++ b/bom-internal/pom.xml @@ -5,7 +5,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/bom/pom.xml b/bom/pom.xml index eda766874d4c..2bead72d43f2 100644 --- a/bom/pom.xml +++ b/bom/pom.xml @@ -4,7 +4,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../pom.xml bom diff --git a/build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml b/build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml index cc5e16c92cbb..4a90b6fc1af5 100644 --- a/build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml +++ b/build-tools/src/main/resources/software/amazon/awssdk/spotbugs-suppressions.xml @@ -97,13 +97,13 @@ - + - + diff --git a/buildspecs/benchmarks.yml b/buildspecs/benchmarks.yml new file mode 100644 index 000000000000..7dc0a2be9c38 --- /dev/null +++ b/buildspecs/benchmarks.yml @@ -0,0 +1,9 @@ +version: 0.2 + +phases: + build: + commands: + - mvn install -P quick -pl :sdk-benchmarks --am + - mvn install -pl :bom-internal + - cd test/sdk-benchmarks + - mvn exec:exec \ No newline at end of file diff --git a/buildspecs/release-javadoc.yml b/buildspecs/release-javadoc.yml index fc7b33844efb..1dc690640f80 100644 --- a/buildspecs/release-javadoc.yml +++ b/buildspecs/release-javadoc.yml @@ -11,7 +11,7 @@ phases: build: commands: - - mvn install javadoc:aggregate -B -Ppublic-javadoc -Dcheckstyle.skip -Dspotbugs.skip -DskipTests -Ddoclint=none -pl '!:module-path-tests' + - mvn install javadoc:aggregate -B -Ppublic-javadoc -Dcheckstyle.skip -Dspotbugs.skip -DskipTests -Ddoclint=none -pl '!:dynamodbdocument-v1,!:dynamodbmapper-v1,!:protocol-tests,!:protocol-tests-core,!:codegen-generated-classes-test,!:sdk-benchmarks,!:module-path-tests,!:test-utils,!:http-client-tests' - RELEASE_VERSION=`mvn -q -Dexec.executable=echo -Dexec.args='${project.version}' --non-recursive exec:exec` - - aws s3 sync target/site/apidocs/ $DOC_PATH/$RELEASE_VERSION/ diff --git a/bundle/pom.xml b/bundle/pom.xml index 16964276a71b..f646e1addabf 100644 --- a/bundle/pom.xml +++ b/bundle/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 bundle jar diff --git a/codegen-lite-maven-plugin/pom.xml b/codegen-lite-maven-plugin/pom.xml index e80558970c95..6aa310637904 100644 --- a/codegen-lite-maven-plugin/pom.xml +++ b/codegen-lite-maven-plugin/pom.xml @@ -7,7 +7,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../pom.xml codegen-lite-maven-plugin diff --git a/codegen-lite/pom.xml b/codegen-lite/pom.xml index 8fbb487455e4..2198a65ff691 100644 --- a/codegen-lite/pom.xml +++ b/codegen-lite/pom.xml @@ -6,7 +6,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 codegen-lite AWS Java SDK :: Code Generator Lite diff --git a/codegen-maven-plugin/pom.xml b/codegen-maven-plugin/pom.xml index 8e813bbf3b3f..fc9e16d4fc61 100644 --- a/codegen-maven-plugin/pom.xml +++ b/codegen-maven-plugin/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../pom.xml codegen-maven-plugin diff --git a/codegen/pom.xml b/codegen/pom.xml index 677f1f23b534..6f55b236b8b7 100644 --- a/codegen/pom.xml +++ b/codegen/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 codegen AWS Java SDK :: Code Generator diff --git a/core/annotations/pom.xml b/core/annotations/pom.xml index d5beb5a28457..10ee5336fdce 100644 --- a/core/annotations/pom.xml +++ b/core/annotations/pom.xml @@ -5,7 +5,7 @@ core software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/auth/pom.xml b/core/auth/pom.xml index 4b122256a6ff..816b04fae41d 100644 --- a/core/auth/pom.xml +++ b/core/auth/pom.xml @@ -7,7 +7,7 @@ software.amazon.awssdk core - 2.5.10 + 2.5.11 auth diff --git a/core/aws-core/pom.xml b/core/aws-core/pom.xml index a9a72b132995..78bb2ee3d81f 100644 --- a/core/aws-core/pom.xml +++ b/core/aws-core/pom.xml @@ -7,7 +7,7 @@ software.amazon.awssdk core - 2.5.10 + 2.5.11 aws-core diff --git a/core/pom.xml b/core/pom.xml index 6459991cfe32..b809d5efce00 100644 --- a/core/pom.xml +++ b/core/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 core diff --git a/core/profiles/pom.xml b/core/profiles/pom.xml index 61a58885d2b5..3da1e2dc7d1c 100644 --- a/core/profiles/pom.xml +++ b/core/profiles/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.5.10 + 2.5.11 profiles diff --git a/core/protocols/aws-cbor-protocol/pom.xml b/core/protocols/aws-cbor-protocol/pom.xml index cf8d8019076d..4031262bb2c9 100644 --- a/core/protocols/aws-cbor-protocol/pom.xml +++ b/core/protocols/aws-cbor-protocol/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/aws-ion-protocol/pom.xml b/core/protocols/aws-ion-protocol/pom.xml index 22e7cfa7e213..399cd29887e7 100644 --- a/core/protocols/aws-ion-protocol/pom.xml +++ b/core/protocols/aws-ion-protocol/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/aws-json-protocol/pom.xml b/core/protocols/aws-json-protocol/pom.xml index 1e733b6b7866..90fe41ac12d7 100644 --- a/core/protocols/aws-json-protocol/pom.xml +++ b/core/protocols/aws-json-protocol/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/aws-query-protocol/pom.xml b/core/protocols/aws-query-protocol/pom.xml index db4a0a366cec..20d84a1692b3 100644 --- a/core/protocols/aws-query-protocol/pom.xml +++ b/core/protocols/aws-query-protocol/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/aws-xml-protocol/pom.xml b/core/protocols/aws-xml-protocol/pom.xml index bd7ba3c8c0b9..03ec74b6744a 100644 --- a/core/protocols/aws-xml-protocol/pom.xml +++ b/core/protocols/aws-xml-protocol/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/internal/unmarshall/HeaderUnmarshaller.java b/core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/internal/unmarshall/HeaderUnmarshaller.java index d8fbb3b2e858..10f51623fbf4 100644 --- a/core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/internal/unmarshall/HeaderUnmarshaller.java +++ b/core/protocols/aws-xml-protocol/src/main/java/software/amazon/awssdk/protocols/xml/internal/unmarshall/HeaderUnmarshaller.java @@ -15,11 +15,13 @@ package software.amazon.awssdk.protocols.xml.internal.unmarshall; +import static software.amazon.awssdk.utils.StringUtils.replacePrefixIgnoreCase; +import static software.amazon.awssdk.utils.StringUtils.startsWithIgnoreCase; + import java.time.Instant; import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.stream.Collectors; import software.amazon.awssdk.annotations.SdkInternalApi; import software.amazon.awssdk.core.SdkField; import software.amazon.awssdk.protocols.core.StringToValueConverter; @@ -39,9 +41,9 @@ public final class HeaderUnmarshaller { public static final XmlUnmarshaller> MAP = ((context, content, field) -> { Map result = new HashMap<>(); context.response().headers().entrySet().stream() - .filter(e -> e.getKey().startsWith(field.locationName())) - .forEach(e -> result.put(e.getKey().replace(field.locationName(), ""), - e.getValue().stream().collect(Collectors.joining(",")))); + .filter(e -> startsWithIgnoreCase(e.getKey(), field.locationName())) + .forEach(e -> result.put(replacePrefixIgnoreCase(e.getKey(), field.locationName(), ""), + String.join(",", e.getValue()))); return result; }); diff --git a/core/protocols/pom.xml b/core/protocols/pom.xml index d34c254a10cf..363494b008e1 100644 --- a/core/protocols/pom.xml +++ b/core/protocols/pom.xml @@ -5,7 +5,7 @@ core software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/protocols/protocol-core/pom.xml b/core/protocols/protocol-core/pom.xml index e2ce71ec4f68..2a7a48a3f26b 100644 --- a/core/protocols/protocol-core/pom.xml +++ b/core/protocols/protocol-core/pom.xml @@ -5,7 +5,7 @@ protocols software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/core/regions/pom.xml b/core/regions/pom.xml index 3cd52e5220d7..f7f46a20a040 100644 --- a/core/regions/pom.xml +++ b/core/regions/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk core - 2.5.10 + 2.5.11 regions diff --git a/core/sdk-core/pom.xml b/core/sdk-core/pom.xml index 7d8d06f9057d..c646262d6589 100644 --- a/core/sdk-core/pom.xml +++ b/core/sdk-core/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk core - 2.5.10 + 2.5.11 sdk-core AWS Java SDK :: SDK Core diff --git a/docs/design/services/s3/transfermanager/README.md b/docs/design/services/s3/transfermanager/README.md new file mode 100644 index 000000000000..682f46d4d7f0 --- /dev/null +++ b/docs/design/services/s3/transfermanager/README.md @@ -0,0 +1,66 @@ +# Project Tenets (unless you know better ones) + +1. Meeting customers in their problem space allows them to deliver value + quickly. +2. Meeting customer expectations drives usability. +3. Discoverability drives usage. + +# Introduction + +This project provides a much improved experience for S3 customers needing to +easily perform uploads and downloads of objects to and from S3 by providing the +S3 `S3TransferManager`, a high level library built on the S3 client. + +# Project Goals + +1. For the use cases it addresses, i.e. the transfer of objects to and from S3, + S3TransferManager is the preferred solution. It is easier and more intuitive + than using the S3 client. In the majority of situations, it is more + performant. +1. S3TransferManager provides a truly asynchronous, non-blocking API that + conforms to the norms present in the rest of the SDK. +1. S3TransferManager makes efficient use of system resources. +1. S3TransferManager supplements rather than replaces the lower level S3 client. + +# Non Project Goals + +1. Ability to use the blocking, synchronous client. + + Using a blocking client would severely impede the ability to deliver on goals + #2 and #3. + +# Customer-Requested Changes from 1.11.x + +* S3TransferManager supports progress listeners that are easier to use. + + Ref: https://github.com/aws/aws-sdk-java-v2/issues/37#issuecomment-316218667 + +* S3TransferManager provides bandwidth limiting of uploads and downloads. + + Ref: https://github.com/aws/aws-sdk-java/issues/1103 + +* The size of resources used by Transfermanager and configured by the user + should not affect its stability. + + For example, the configured size of a threadpool should be irellevant to its + ability to successfuly perform an operation. + + Ref: https://github.com/aws/aws-sdk-java/issues/939 + +* S3TransferManager supports parallel downloads of any object. + + Any object stored in S3 should be downloadable in multiple parts + simultaneously, not just those uploaded using the Multipart API. + +* S3TransferManager has the ability to upload to and download from a pre-signed + URL. + +* S3TransferManager allows uploads and downloads from and to memory. + + Ref: https://github.com/aws/aws-sdk-java/issues/474 + +* Ability to easily use canned ACL policies with all transfers to S3. + + Ref: https://github.com/aws/aws-sdk-java/issues/1207 + +* Trailing checksums for parallel uploads and downloads. diff --git a/http-client-spi/pom.xml b/http-client-spi/pom.xml index 7be35d3ca4b8..2603214d9f46 100644 --- a/http-client-spi/pom.xml +++ b/http-client-spi/pom.xml @@ -22,7 +22,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 http-client-spi AWS Java SDK :: HTTP Client Interface diff --git a/http-clients/apache-client/pom.xml b/http-clients/apache-client/pom.xml index 17dd6a6cc3f4..88eba0a9635a 100644 --- a/http-clients/apache-client/pom.xml +++ b/http-clients/apache-client/pom.xml @@ -21,7 +21,7 @@ http-clients software.amazon.awssdk - 2.5.10 + 2.5.11 apache-client diff --git a/http-clients/netty-nio-client/pom.xml b/http-clients/netty-nio-client/pom.xml index 2a3a5a98e161..9b36a86efe35 100644 --- a/http-clients/netty-nio-client/pom.xml +++ b/http-clients/netty-nio-client/pom.xml @@ -20,7 +20,7 @@ http-clients software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/http-clients/pom.xml b/http-clients/pom.xml index 3f64f5339a11..474bb2252105 100644 --- a/http-clients/pom.xml +++ b/http-clients/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/http-clients/url-connection-client/pom.xml b/http-clients/url-connection-client/pom.xml index 5b0c5c86c369..02588239630d 100644 --- a/http-clients/url-connection-client/pom.xml +++ b/http-clients/url-connection-client/pom.xml @@ -20,7 +20,7 @@ http-clients software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/pom.xml b/pom.xml index 3b8cd2834a36..ccbae1103595 100644 --- a/pom.xml +++ b/pom.xml @@ -20,7 +20,7 @@ 4.0.0 software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 pom AWS Java SDK :: Parent The Amazon Web Services SDK for Java provides Java APIs @@ -974,7 +974,7 @@ software.amazon.awssdk* - + diff --git a/release-scripts/pom.xml b/release-scripts/pom.xml index 7afe444b9fe0..44f413660322 100644 --- a/release-scripts/pom.xml +++ b/release-scripts/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../pom.xml release-scripts diff --git a/services/acm/pom.xml b/services/acm/pom.xml index b8a963c3a304..e168742ce7bb 100644 --- a/services/acm/pom.xml +++ b/services/acm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 acm AWS Java SDK :: Services :: AWS Certificate Manager diff --git a/services/acmpca/pom.xml b/services/acmpca/pom.xml index 52be41c594e6..6eb234974515 100644 --- a/services/acmpca/pom.xml +++ b/services/acmpca/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 acmpca AWS Java SDK :: Services :: ACM PCA diff --git a/services/alexaforbusiness/pom.xml b/services/alexaforbusiness/pom.xml index c0100c006cef..699a2d270486 100644 --- a/services/alexaforbusiness/pom.xml +++ b/services/alexaforbusiness/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 alexaforbusiness diff --git a/services/amplify/pom.xml b/services/amplify/pom.xml index 4f5af7d545f4..562c0c539b3d 100644 --- a/services/amplify/pom.xml +++ b/services/amplify/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 amplify AWS Java SDK :: Services :: Amplify diff --git a/services/apigateway/pom.xml b/services/apigateway/pom.xml index 8a09e8f51854..3aa47b815fbf 100644 --- a/services/apigateway/pom.xml +++ b/services/apigateway/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 apigateway AWS Java SDK :: Services :: Amazon API Gateway diff --git a/services/apigatewaymanagementapi/pom.xml b/services/apigatewaymanagementapi/pom.xml index 820230f87522..fc99f98ebe21 100644 --- a/services/apigatewaymanagementapi/pom.xml +++ b/services/apigatewaymanagementapi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 apigatewaymanagementapi AWS Java SDK :: Services :: ApiGatewayManagementApi diff --git a/services/apigatewayv2/pom.xml b/services/apigatewayv2/pom.xml index 917775efecac..8a5b062ae155 100644 --- a/services/apigatewayv2/pom.xml +++ b/services/apigatewayv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 apigatewayv2 AWS Java SDK :: Services :: ApiGatewayV2 diff --git a/services/applicationautoscaling/pom.xml b/services/applicationautoscaling/pom.xml index ee2d1eb1f4f7..96489911395d 100644 --- a/services/applicationautoscaling/pom.xml +++ b/services/applicationautoscaling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 applicationautoscaling AWS Java SDK :: Services :: AWS Application Auto Scaling diff --git a/services/applicationdiscovery/pom.xml b/services/applicationdiscovery/pom.xml index b5aed4ef48d1..5fb7bc27ebb9 100644 --- a/services/applicationdiscovery/pom.xml +++ b/services/applicationdiscovery/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 applicationdiscovery AWS Java SDK :: Services :: AWS Application Discovery Service diff --git a/services/appmesh/pom.xml b/services/appmesh/pom.xml index d9b36852f8b7..7b67a5b7080b 100644 --- a/services/appmesh/pom.xml +++ b/services/appmesh/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 appmesh AWS Java SDK :: Services :: App Mesh diff --git a/services/appstream/pom.xml b/services/appstream/pom.xml index 487e685c151b..12a2eb7f5621 100644 --- a/services/appstream/pom.xml +++ b/services/appstream/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 appstream AWS Java SDK :: Services :: Amazon AppStream diff --git a/services/appsync/pom.xml b/services/appsync/pom.xml index 30998b2ab8ee..e453558190f6 100644 --- a/services/appsync/pom.xml +++ b/services/appsync/pom.xml @@ -21,7 +21,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 appsync diff --git a/services/athena/pom.xml b/services/athena/pom.xml index 7b6e0b6e760a..20bddd0a89fb 100644 --- a/services/athena/pom.xml +++ b/services/athena/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 athena AWS Java SDK :: Services :: Amazon Athena diff --git a/services/autoscaling/pom.xml b/services/autoscaling/pom.xml index 3116eff10cb8..981589203936 100644 --- a/services/autoscaling/pom.xml +++ b/services/autoscaling/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 autoscaling AWS Java SDK :: Services :: Auto Scaling diff --git a/services/autoscalingplans/pom.xml b/services/autoscalingplans/pom.xml index d9d3c7e22c96..6469ba6a0064 100644 --- a/services/autoscalingplans/pom.xml +++ b/services/autoscalingplans/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 autoscalingplans AWS Java SDK :: Services :: Auto Scaling Plans diff --git a/services/backup/pom.xml b/services/backup/pom.xml index ccb1605f7d7d..eb0d8fca10fa 100644 --- a/services/backup/pom.xml +++ b/services/backup/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 backup AWS Java SDK :: Services :: Backup diff --git a/services/batch/pom.xml b/services/batch/pom.xml index b19df38a4a00..7e689ecc9dfc 100644 --- a/services/batch/pom.xml +++ b/services/batch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 batch AWS Java SDK :: Services :: AWS Batch diff --git a/services/budgets/pom.xml b/services/budgets/pom.xml index 64d3aa0eee41..b581c3dd6f93 100644 --- a/services/budgets/pom.xml +++ b/services/budgets/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 budgets AWS Java SDK :: Services :: AWS Budgets diff --git a/services/chime/pom.xml b/services/chime/pom.xml index 0af99c02b6a8..7209e9919022 100644 --- a/services/chime/pom.xml +++ b/services/chime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 chime AWS Java SDK :: Services :: Chime diff --git a/services/chime/src/main/resources/codegen-resources/paginators-1.json b/services/chime/src/main/resources/codegen-resources/paginators-1.json index fae9cccdebd6..042c382ded1d 100644 --- a/services/chime/src/main/resources/codegen-resources/paginators-1.json +++ b/services/chime/src/main/resources/codegen-resources/paginators-1.json @@ -5,10 +5,25 @@ "output_token": "NextToken", "limit_key": "MaxResults" }, + "ListPhoneNumberOrders": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, + "ListPhoneNumbers": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" + }, "ListUsers": { "input_token": "NextToken", "output_token": "NextToken", "limit_key": "MaxResults" + }, + "ListVoiceConnectors": { + "input_token": "NextToken", + "output_token": "NextToken", + "limit_key": "MaxResults" } } } diff --git a/services/chime/src/main/resources/codegen-resources/service-2.json b/services/chime/src/main/resources/codegen-resources/service-2.json index 0e95822944c7..fb2d369af1fa 100644 --- a/services/chime/src/main/resources/codegen-resources/service-2.json +++ b/services/chime/src/main/resources/codegen-resources/service-2.json @@ -10,11 +10,71 @@ "uid":"chime-2018-05-01" }, "operations":{ + "AssociatePhoneNumberWithUser":{ + "name":"AssociatePhoneNumberWithUser", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users/{userId}?operation=associate-phone-number", + "responseCode":200 + }, + "input":{"shape":"AssociatePhoneNumberWithUserRequest"}, + "output":{"shape":"AssociatePhoneNumberWithUserResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Associates a phone number with the specified Amazon Chime user.

" + }, + "AssociatePhoneNumbersWithVoiceConnector":{ + "name":"AssociatePhoneNumbersWithVoiceConnector", + "http":{ + "method":"POST", + "requestUri":"/voice-connectors/{voiceConnectorId}?operation=associate-phone-numbers", + "responseCode":200 + }, + "input":{"shape":"AssociatePhoneNumbersWithVoiceConnectorRequest"}, + "output":{"shape":"AssociatePhoneNumbersWithVoiceConnectorResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Associates a phone number with the specified Amazon Chime Voice Connector.

" + }, + "BatchDeletePhoneNumber":{ + "name":"BatchDeletePhoneNumber", + "http":{ + "method":"POST", + "requestUri":"/phone-numbers?operation=batch-delete", + "responseCode":200 + }, + "input":{"shape":"BatchDeletePhoneNumberRequest"}, + "output":{"shape":"BatchDeletePhoneNumberResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Moves phone numbers into the Deletion queue. Phone numbers must be disassociated from any users or Amazon Chime Voice Connectors before they can be deleted.

Phone numbers remain in the Deletion queue for 7 days before they are deleted permanently.

" + }, "BatchSuspendUser":{ "name":"BatchSuspendUser", "http":{ "method":"POST", - "requestUri":"/console/accounts/{accountId}/users?operation=suspend", + "requestUri":"/accounts/{accountId}/users?operation=suspend", "responseCode":200 }, "input":{"shape":"BatchSuspendUserRequest"}, @@ -28,13 +88,13 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Suspends up to 50 users from a Team or EnterpriseLWA Amazon Chime account. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

Users suspended from a Team account are dissociated from the account, but they can continue to use Amazon Chime as free users. To remove the suspension from suspended Team account users, invite them to the Team account again. You can use the InviteUsers action to do so.

Users suspended from an EnterpriseLWA account are immediately signed out of Amazon Chime and are no longer able to sign in. To remove the suspension from suspended EnterpriseLWA account users, use the BatchUnsuspendUser action.

To sign out users without suspending them, use the LogoutUser action.

" + "documentation":"

Suspends up to 50 users from a Team or EnterpriseLWA Amazon Chime account. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

Users suspended from a Team account are dissociated from the account, but they can continue to use Amazon Chime as free users. To remove the suspension from suspended Team account users, invite them to the Team account again. You can use the InviteUsers action to do so.

Users suspended from an EnterpriseLWA account are immediately signed out of Amazon Chime and can no longer sign in. To remove the suspension from suspended EnterpriseLWA account users, use the BatchUnsuspendUser action.

To sign out users without suspending them, use the LogoutUser action.

" }, "BatchUnsuspendUser":{ "name":"BatchUnsuspendUser", "http":{ "method":"POST", - "requestUri":"/console/accounts/{accountId}/users?operation=unsuspend", + "requestUri":"/accounts/{accountId}/users?operation=unsuspend", "responseCode":200 }, "input":{"shape":"BatchUnsuspendUserRequest"}, @@ -50,11 +110,31 @@ ], "documentation":"

Removes the suspension from up to 50 previously suspended users for the specified Amazon Chime EnterpriseLWA account. Only users on EnterpriseLWA accounts can be unsuspended using this action. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

Previously suspended users who are unsuspended using this action are returned to Registered status. Users who are not previously suspended are ignored.

" }, + "BatchUpdatePhoneNumber":{ + "name":"BatchUpdatePhoneNumber", + "http":{ + "method":"POST", + "requestUri":"/phone-numbers?operation=batch-update", + "responseCode":200 + }, + "input":{"shape":"BatchUpdatePhoneNumberRequest"}, + "output":{"shape":"BatchUpdatePhoneNumberResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates phone number product types. Choose from Amazon Chime Business Calling and Amazon Chime Voice Connector product types.

" + }, "BatchUpdateUser":{ "name":"BatchUpdateUser", "http":{ "method":"POST", - "requestUri":"/console/accounts/{accountId}/users", + "requestUri":"/accounts/{accountId}/users", "responseCode":200 }, "input":{"shape":"BatchUpdateUserRequest"}, @@ -74,7 +154,7 @@ "name":"CreateAccount", "http":{ "method":"POST", - "requestUri":"/console/accounts", + "requestUri":"/accounts", "responseCode":201 }, "input":{"shape":"CreateAccountRequest"}, @@ -90,11 +170,49 @@ ], "documentation":"

Creates an Amazon Chime account under the administrator's AWS account. Only Team account types are currently supported for this action. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

" }, + "CreatePhoneNumberOrder":{ + "name":"CreatePhoneNumberOrder", + "http":{ + "method":"POST", + "requestUri":"/phone-number-orders", + "responseCode":201 + }, + "input":{"shape":"CreatePhoneNumberOrderRequest"}, + "output":{"shape":"CreatePhoneNumberOrderResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Creates an order for phone numbers to be provisioned. Choose from Amazon Chime Business Calling and Amazon Chime Voice Connector product types.

" + }, + "CreateVoiceConnector":{ + "name":"CreateVoiceConnector", + "http":{ + "method":"POST", + "requestUri":"/voice-connectors", + "responseCode":201 + }, + "input":{"shape":"CreateVoiceConnectorRequest"}, + "output":{"shape":"CreateVoiceConnectorResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Creates an Amazon Chime Voice Connector under the administrator's AWS account. Enabling CreateVoiceConnectorRequest$RequireEncryption configures your Amazon Chime Voice Connector to use TLS transport for SIP signaling and Secure RTP (SRTP) for media. Inbound calls use TLS transport, and unencrypted outbound calls are blocked.

" + }, "DeleteAccount":{ "name":"DeleteAccount", "http":{ "method":"DELETE", - "requestUri":"/console/accounts/{accountId}", + "requestUri":"/accounts/{accountId}", "responseCode":204 }, "input":{"shape":"DeleteAccountRequest"}, @@ -111,11 +229,146 @@ ], "documentation":"

Deletes the specified Amazon Chime account. You must suspend all users before deleting a Team account. You can use the BatchSuspendUser action to do so.

For EnterpriseLWA and EnterpriseAD accounts, you must release the claimed domains for your Amazon Chime account before deletion. As soon as you release the domain, all users under that account are suspended.

Deleted accounts appear in your Disabled accounts list for 90 days. To restore a deleted account from your Disabled accounts list, you must contact AWS Support.

After 90 days, deleted accounts are permanently removed from your Disabled accounts list.

" }, + "DeletePhoneNumber":{ + "name":"DeletePhoneNumber", + "http":{ + "method":"DELETE", + "requestUri":"/phone-numbers/{phoneNumberId}", + "responseCode":204 + }, + "input":{"shape":"DeletePhoneNumberRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Moves the specified phone number into the Deletion queue. A phone number must be disassociated from any users or Amazon Chime Voice Connectors before it can be deleted.

Deleted phone numbers remain in the Deletion queue for 7 days before they are deleted permanently.

" + }, + "DeleteVoiceConnector":{ + "name":"DeleteVoiceConnector", + "http":{ + "method":"DELETE", + "requestUri":"/voice-connectors/{voiceConnectorId}", + "responseCode":204 + }, + "input":{"shape":"DeleteVoiceConnectorRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Deletes the specified Amazon Chime Voice Connector. Any phone numbers assigned to the Amazon Chime Voice Connector must be unassigned from it before it can be deleted.

" + }, + "DeleteVoiceConnectorOrigination":{ + "name":"DeleteVoiceConnectorOrigination", + "http":{ + "method":"DELETE", + "requestUri":"/voice-connectors/{voiceConnectorId}/origination", + "responseCode":204 + }, + "input":{"shape":"DeleteVoiceConnectorOriginationRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Deletes the origination settings for the specified Amazon Chime Voice Connector.

" + }, + "DeleteVoiceConnectorTermination":{ + "name":"DeleteVoiceConnectorTermination", + "http":{ + "method":"DELETE", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination", + "responseCode":204 + }, + "input":{"shape":"DeleteVoiceConnectorTerminationRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Deletes the termination settings for the specified Amazon Chime Voice Connector.

" + }, + "DeleteVoiceConnectorTerminationCredentials":{ + "name":"DeleteVoiceConnectorTerminationCredentials", + "http":{ + "method":"POST", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination/credentials?operation=delete", + "responseCode":204 + }, + "input":{"shape":"DeleteVoiceConnectorTerminationCredentialsRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Deletes the specified SIP credentials used by your equipment to authenticate during call termination.

" + }, + "DisassociatePhoneNumberFromUser":{ + "name":"DisassociatePhoneNumberFromUser", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users/{userId}?operation=disassociate-phone-number", + "responseCode":200 + }, + "input":{"shape":"DisassociatePhoneNumberFromUserRequest"}, + "output":{"shape":"DisassociatePhoneNumberFromUserResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Disassociates the primary provisioned phone number from the specified Amazon Chime user.

" + }, + "DisassociatePhoneNumbersFromVoiceConnector":{ + "name":"DisassociatePhoneNumbersFromVoiceConnector", + "http":{ + "method":"POST", + "requestUri":"/voice-connectors/{voiceConnectorId}?operation=disassociate-phone-numbers", + "responseCode":200 + }, + "input":{"shape":"DisassociatePhoneNumbersFromVoiceConnectorRequest"}, + "output":{"shape":"DisassociatePhoneNumbersFromVoiceConnectorResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Disassociates the specified phone number from the specified Amazon Chime Voice Connector.

" + }, "GetAccount":{ "name":"GetAccount", "http":{ "method":"GET", - "requestUri":"/console/accounts/{accountId}" + "requestUri":"/accounts/{accountId}" }, "input":{"shape":"GetAccountRequest"}, "output":{"shape":"GetAccountResponse"}, @@ -134,7 +387,7 @@ "name":"GetAccountSettings", "http":{ "method":"GET", - "requestUri":"/console/accounts/{accountId}/settings" + "requestUri":"/accounts/{accountId}/settings" }, "input":{"shape":"GetAccountSettingsRequest"}, "output":{"shape":"GetAccountSettingsResponse"}, @@ -149,35 +402,32 @@ ], "documentation":"

Retrieves account settings for the specified Amazon Chime account ID, such as remote control and dial out settings. For more information about these settings, see Use the Policies Page in the Amazon Chime Administration Guide.

" }, - "GetUser":{ - "name":"GetUser", + "GetGlobalSettings":{ + "name":"GetGlobalSettings", "http":{ "method":"GET", - "requestUri":"/console/accounts/{accountId}/users/{userId}", + "requestUri":"/settings", "responseCode":200 }, - "input":{"shape":"GetUserRequest"}, - "output":{"shape":"GetUserResponse"}, + "output":{"shape":"GetGlobalSettingsResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, - {"shape":"NotFoundException"}, {"shape":"ForbiddenException"}, {"shape":"BadRequestException"}, {"shape":"ThrottledClientException"}, {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Retrieves details for the specified user ID, such as primary email address, license type, and personal meeting PIN.

To retrieve user details with an email address instead of a user ID, use the ListUsers action, and then filter by email address.

" + "documentation":"

Retrieves global settings for the administrator's AWS account, such as Amazon Chime Business Calling and Amazon Chime Voice Connector settings.

" }, - "InviteUsers":{ - "name":"InviteUsers", + "GetPhoneNumber":{ + "name":"GetPhoneNumber", "http":{ - "method":"POST", - "requestUri":"/console/accounts/{accountId}/users?operation=add", - "responseCode":201 + "method":"GET", + "requestUri":"/phone-numbers/{phoneNumberId}" }, - "input":{"shape":"InviteUsersRequest"}, - "output":{"shape":"InviteUsersResponse"}, + "input":{"shape":"GetPhoneNumberRequest"}, + "output":{"shape":"GetPhoneNumberResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -187,16 +437,17 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Sends email invites to as many as 50 users, inviting them to the specified Amazon Chime Team account. Only Team account types are currently supported for this action.

" + "documentation":"

Retrieves details for the specified phone number ID, such as associations, capabilities, and product type.

" }, - "ListAccounts":{ - "name":"ListAccounts", + "GetPhoneNumberOrder":{ + "name":"GetPhoneNumberOrder", "http":{ "method":"GET", - "requestUri":"/console/accounts" + "requestUri":"/phone-number-orders/{phoneNumberOrderId}", + "responseCode":200 }, - "input":{"shape":"ListAccountsRequest"}, - "output":{"shape":"ListAccountsResponse"}, + "input":{"shape":"GetPhoneNumberOrderRequest"}, + "output":{"shape":"GetPhoneNumberOrderResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -206,17 +457,17 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Lists the Amazon Chime accounts under the administrator's AWS account. You can filter accounts by account name prefix. To find out which Amazon Chime account a user belongs to, you can filter by the user's email address, which returns one account result.

" + "documentation":"

Retrieves details for the specified phone number order, such as order creation timestamp, phone numbers in E.164 format, product type, and order status.

" }, - "ListUsers":{ - "name":"ListUsers", + "GetUser":{ + "name":"GetUser", "http":{ "method":"GET", - "requestUri":"/console/accounts/{accountId}/users", + "requestUri":"/accounts/{accountId}/users/{userId}", "responseCode":200 }, - "input":{"shape":"ListUsersRequest"}, - "output":{"shape":"ListUsersResponse"}, + "input":{"shape":"GetUserRequest"}, + "output":{"shape":"GetUserResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -226,17 +477,17 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Lists the users that belong to the specified Amazon Chime account. You can specify an email address to list only the user that the email address belongs to.

" + "documentation":"

Retrieves details for the specified user ID, such as primary email address, license type, and personal meeting PIN.

To retrieve user details with an email address instead of a user ID, use the ListUsers action, and then filter by email address.

" }, - "LogoutUser":{ - "name":"LogoutUser", + "GetUserSettings":{ + "name":"GetUserSettings", "http":{ - "method":"POST", - "requestUri":"/console/accounts/{accountId}/users/{userId}?operation=logout", - "responseCode":204 + "method":"GET", + "requestUri":"/accounts/{accountId}/users/{userId}/settings", + "responseCode":200 }, - "input":{"shape":"LogoutUserRequest"}, - "output":{"shape":"LogoutUserResponse"}, + "input":{"shape":"GetUserSettingsRequest"}, + "output":{"shape":"GetUserSettingsResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -246,17 +497,17 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Logs out the specified user from all of the devices they are currently logged into.

" + "documentation":"

Retrieves settings for the specified user ID, such as any associated phone number settings.

" }, - "ResetPersonalPIN":{ - "name":"ResetPersonalPIN", + "GetVoiceConnector":{ + "name":"GetVoiceConnector", "http":{ - "method":"POST", - "requestUri":"/console/accounts/{accountId}/users/{userId}?operation=reset-personal-pin", + "method":"GET", + "requestUri":"/voice-connectors/{voiceConnectorId}", "responseCode":200 }, - "input":{"shape":"ResetPersonalPINRequest"}, - "output":{"shape":"ResetPersonalPINResponse"}, + "input":{"shape":"GetVoiceConnectorRequest"}, + "output":{"shape":"GetVoiceConnectorResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -266,17 +517,17 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Resets the personal meeting PIN for the specified user on an Amazon Chime account. Returns the User object with the updated personal meeting PIN.

" + "documentation":"

Retrieves details for the specified Amazon Chime Voice Connector, such as timestamps, name, outbound host, and encryption requirements.

" }, - "UpdateAccount":{ - "name":"UpdateAccount", + "GetVoiceConnectorOrigination":{ + "name":"GetVoiceConnectorOrigination", "http":{ - "method":"POST", - "requestUri":"/console/accounts/{accountId}", + "method":"GET", + "requestUri":"/voice-connectors/{voiceConnectorId}/origination", "responseCode":200 }, - "input":{"shape":"UpdateAccountRequest"}, - "output":{"shape":"UpdateAccountResponse"}, + "input":{"shape":"GetVoiceConnectorOriginationRequest"}, + "output":{"shape":"GetVoiceConnectorOriginationResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -286,38 +537,37 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Updates account details for the specified Amazon Chime account. Currently, only account name updates are supported for this action.

" + "documentation":"

Retrieves origination setting details for the specified Amazon Chime Voice Connector.

" }, - "UpdateAccountSettings":{ - "name":"UpdateAccountSettings", + "GetVoiceConnectorTermination":{ + "name":"GetVoiceConnectorTermination", "http":{ - "method":"PUT", - "requestUri":"/console/accounts/{accountId}/settings", - "responseCode":204 + "method":"GET", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination", + "responseCode":200 }, - "input":{"shape":"UpdateAccountSettingsRequest"}, - "output":{"shape":"UpdateAccountSettingsResponse"}, + "input":{"shape":"GetVoiceConnectorTerminationRequest"}, + "output":{"shape":"GetVoiceConnectorTerminationResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, - {"shape":"BadRequestException"}, {"shape":"ForbiddenException"}, - {"shape":"ConflictException"}, + {"shape":"BadRequestException"}, {"shape":"ThrottledClientException"}, {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Updates the settings for the specified Amazon Chime account. You can update settings for remote control of shared screens, or for the dial-out option. For more information about these settings, see Use the Policies Page in the Amazon Chime Administration Guide.

" + "documentation":"

Retrieves termination setting details for the specified Amazon Chime Voice Connector.

" }, - "UpdateUser":{ - "name":"UpdateUser", + "GetVoiceConnectorTerminationHealth":{ + "name":"GetVoiceConnectorTerminationHealth", "http":{ - "method":"POST", - "requestUri":"/console/accounts/{accountId}/users/{userId}", + "method":"GET", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination/health", "responseCode":200 }, - "input":{"shape":"UpdateUserRequest"}, - "output":{"shape":"UpdateUserResponse"}, + "input":{"shape":"GetVoiceConnectorTerminationHealthRequest"}, + "output":{"shape":"GetVoiceConnectorTerminationHealthResponse"}, "errors":[ {"shape":"UnauthorizedClientException"}, {"shape":"NotFoundException"}, @@ -327,97 +577,1263 @@ {"shape":"ServiceUnavailableException"}, {"shape":"ServiceFailureException"} ], - "documentation":"

Updates user details for a specified user ID. Currently, only LicenseType updates are supported for this action.

" - } - }, - "shapes":{ - "Account":{ + "documentation":"

Retrieves information about the last time a SIP OPTIONS ping was received from your SIP infrastructure for the specified Amazon Chime Voice Connector.

" + }, + "InviteUsers":{ + "name":"InviteUsers", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users?operation=add", + "responseCode":201 + }, + "input":{"shape":"InviteUsersRequest"}, + "output":{"shape":"InviteUsersResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Sends email invites to as many as 50 users, inviting them to the specified Amazon Chime Team account. Only Team account types are currently supported for this action.

" + }, + "ListAccounts":{ + "name":"ListAccounts", + "http":{ + "method":"GET", + "requestUri":"/accounts" + }, + "input":{"shape":"ListAccountsRequest"}, + "output":{"shape":"ListAccountsResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the Amazon Chime accounts under the administrator's AWS account. You can filter accounts by account name prefix. To find out which Amazon Chime account a user belongs to, you can filter by the user's email address, which returns one account result.

" + }, + "ListPhoneNumberOrders":{ + "name":"ListPhoneNumberOrders", + "http":{ + "method":"GET", + "requestUri":"/phone-number-orders", + "responseCode":200 + }, + "input":{"shape":"ListPhoneNumberOrdersRequest"}, + "output":{"shape":"ListPhoneNumberOrdersResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the phone number orders for the administrator's Amazon Chime account.

" + }, + "ListPhoneNumbers":{ + "name":"ListPhoneNumbers", + "http":{ + "method":"GET", + "requestUri":"/phone-numbers" + }, + "input":{"shape":"ListPhoneNumbersRequest"}, + "output":{"shape":"ListPhoneNumbersResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the phone numbers for the specified Amazon Chime account, Amazon Chime user, or Amazon Chime Voice Connector.

" + }, + "ListUsers":{ + "name":"ListUsers", + "http":{ + "method":"GET", + "requestUri":"/accounts/{accountId}/users", + "responseCode":200 + }, + "input":{"shape":"ListUsersRequest"}, + "output":{"shape":"ListUsersResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the users that belong to the specified Amazon Chime account. You can specify an email address to list only the user that the email address belongs to.

" + }, + "ListVoiceConnectorTerminationCredentials":{ + "name":"ListVoiceConnectorTerminationCredentials", + "http":{ + "method":"GET", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination/credentials", + "responseCode":200 + }, + "input":{"shape":"ListVoiceConnectorTerminationCredentialsRequest"}, + "output":{"shape":"ListVoiceConnectorTerminationCredentialsResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the SIP credentials for the specified Amazon Chime Voice Connector.

" + }, + "ListVoiceConnectors":{ + "name":"ListVoiceConnectors", + "http":{ + "method":"GET", + "requestUri":"/voice-connectors", + "responseCode":200 + }, + "input":{"shape":"ListVoiceConnectorsRequest"}, + "output":{"shape":"ListVoiceConnectorsResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Lists the Amazon Chime Voice Connectors for the administrator's AWS account.

" + }, + "LogoutUser":{ + "name":"LogoutUser", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users/{userId}?operation=logout", + "responseCode":204 + }, + "input":{"shape":"LogoutUserRequest"}, + "output":{"shape":"LogoutUserResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Logs out the specified user from all of the devices they are currently logged into.

" + }, + "PutVoiceConnectorOrigination":{ + "name":"PutVoiceConnectorOrigination", + "http":{ + "method":"PUT", + "requestUri":"/voice-connectors/{voiceConnectorId}/origination", + "responseCode":200 + }, + "input":{"shape":"PutVoiceConnectorOriginationRequest"}, + "output":{"shape":"PutVoiceConnectorOriginationResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Adds origination settings for the specified Amazon Chime Voice Connector.

" + }, + "PutVoiceConnectorTermination":{ + "name":"PutVoiceConnectorTermination", + "http":{ + "method":"PUT", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination", + "responseCode":200 + }, + "input":{"shape":"PutVoiceConnectorTerminationRequest"}, + "output":{"shape":"PutVoiceConnectorTerminationResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Adds termination settings for the specified Amazon Chime Voice Connector.

" + }, + "PutVoiceConnectorTerminationCredentials":{ + "name":"PutVoiceConnectorTerminationCredentials", + "http":{ + "method":"POST", + "requestUri":"/voice-connectors/{voiceConnectorId}/termination/credentials?operation=put", + "responseCode":204 + }, + "input":{"shape":"PutVoiceConnectorTerminationCredentialsRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Adds termination SIP credentials for the specified Amazon Chime Voice Connector.

" + }, + "ResetPersonalPIN":{ + "name":"ResetPersonalPIN", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users/{userId}?operation=reset-personal-pin", + "responseCode":200 + }, + "input":{"shape":"ResetPersonalPINRequest"}, + "output":{"shape":"ResetPersonalPINResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Resets the personal meeting PIN for the specified user on an Amazon Chime account. Returns the User object with the updated personal meeting PIN.

" + }, + "RestorePhoneNumber":{ + "name":"RestorePhoneNumber", + "http":{ + "method":"POST", + "requestUri":"/phone-numbers/{phoneNumberId}?operation=restore", + "responseCode":200 + }, + "input":{"shape":"RestorePhoneNumberRequest"}, + "output":{"shape":"RestorePhoneNumberResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Moves a phone number from the Deletion queue back into the phone number Inventory.

" + }, + "SearchAvailablePhoneNumbers":{ + "name":"SearchAvailablePhoneNumbers", + "http":{ + "method":"GET", + "requestUri":"/search?type=phone-numbers" + }, + "input":{"shape":"SearchAvailablePhoneNumbersRequest"}, + "output":{"shape":"SearchAvailablePhoneNumbersResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Searches phone numbers that can be ordered.

" + }, + "UpdateAccount":{ + "name":"UpdateAccount", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}", + "responseCode":200 + }, + "input":{"shape":"UpdateAccountRequest"}, + "output":{"shape":"UpdateAccountResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates account details for the specified Amazon Chime account. Currently, only account name updates are supported for this action.

" + }, + "UpdateAccountSettings":{ + "name":"UpdateAccountSettings", + "http":{ + "method":"PUT", + "requestUri":"/accounts/{accountId}/settings", + "responseCode":204 + }, + "input":{"shape":"UpdateAccountSettingsRequest"}, + "output":{"shape":"UpdateAccountSettingsResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"BadRequestException"}, + {"shape":"ForbiddenException"}, + {"shape":"ConflictException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates the settings for the specified Amazon Chime account. You can update settings for remote control of shared screens, or for the dial-out option. For more information about these settings, see Use the Policies Page in the Amazon Chime Administration Guide.

" + }, + "UpdateGlobalSettings":{ + "name":"UpdateGlobalSettings", + "http":{ + "method":"PUT", + "requestUri":"/settings", + "responseCode":204 + }, + "input":{"shape":"UpdateGlobalSettingsRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates global settings for the administrator's AWS account, such as Amazon Chime Business Calling and Amazon Chime Voice Connector settings.

" + }, + "UpdatePhoneNumber":{ + "name":"UpdatePhoneNumber", + "http":{ + "method":"POST", + "requestUri":"/phone-numbers/{phoneNumberId}", + "responseCode":200 + }, + "input":{"shape":"UpdatePhoneNumberRequest"}, + "output":{"shape":"UpdatePhoneNumberResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates phone number details, such as product type, for the specified phone number ID.

" + }, + "UpdateUser":{ + "name":"UpdateUser", + "http":{ + "method":"POST", + "requestUri":"/accounts/{accountId}/users/{userId}", + "responseCode":200 + }, + "input":{"shape":"UpdateUserRequest"}, + "output":{"shape":"UpdateUserResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates user details for a specified user ID. Currently, only LicenseType updates are supported for this action.

" + }, + "UpdateUserSettings":{ + "name":"UpdateUserSettings", + "http":{ + "method":"PUT", + "requestUri":"/accounts/{accountId}/users/{userId}/settings", + "responseCode":204 + }, + "input":{"shape":"UpdateUserSettingsRequest"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates the settings for the specified user, such as phone number settings.

" + }, + "UpdateVoiceConnector":{ + "name":"UpdateVoiceConnector", + "http":{ + "method":"PUT", + "requestUri":"/voice-connectors/{voiceConnectorId}", + "responseCode":200 + }, + "input":{"shape":"UpdateVoiceConnectorRequest"}, + "output":{"shape":"UpdateVoiceConnectorResponse"}, + "errors":[ + {"shape":"UnauthorizedClientException"}, + {"shape":"NotFoundException"}, + {"shape":"ForbiddenException"}, + {"shape":"BadRequestException"}, + {"shape":"ThrottledClientException"}, + {"shape":"ServiceUnavailableException"}, + {"shape":"ServiceFailureException"} + ], + "documentation":"

Updates details for the specified Amazon Chime Voice Connector.

" + } + }, + "shapes":{ + "Account":{ + "type":"structure", + "required":[ + "AwsAccountId", + "AccountId", + "Name" + ], + "members":{ + "AwsAccountId":{ + "shape":"String", + "documentation":"

The AWS account ID.

" + }, + "AccountId":{ + "shape":"String", + "documentation":"

The Amazon Chime account ID.

" + }, + "Name":{ + "shape":"String", + "documentation":"

The Amazon Chime account name.

" + }, + "AccountType":{ + "shape":"AccountType", + "documentation":"

The Amazon Chime account type. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

" + }, + "CreatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The Amazon Chime account creation timestamp, in ISO 8601 format.

" + }, + "DefaultLicense":{ + "shape":"License", + "documentation":"

The default license for the Amazon Chime account.

" + }, + "SupportedLicenses":{ + "shape":"LicenseList", + "documentation":"

Supported licenses for the Amazon Chime account.

" + } + }, + "documentation":"

The Amazon Chime account details. An AWS account can have multiple Amazon Chime accounts.

" + }, + "AccountList":{ + "type":"list", + "member":{"shape":"Account"} + }, + "AccountName":{ + "type":"string", + "max":100, + "min":1, + "pattern":".*\\S.*" + }, + "AccountSettings":{ + "type":"structure", + "members":{ + "DisableRemoteControl":{ + "shape":"Boolean", + "documentation":"

Setting that stops or starts remote control of shared screens during meetings.

" + }, + "EnableDialOut":{ + "shape":"Boolean", + "documentation":"

Setting that allows meeting participants to choose the Call me at a phone number option. For more information, see Join a Meeting without the Amazon Chime App.

" + } + }, + "documentation":"

Settings related to the Amazon Chime account. This includes settings that start or stop remote control of shared screens, or start or stop the dial-out option in the Amazon Chime web application. For more information about these settings, see Use the Policies Page in the Amazon Chime Administration Guide.

" + }, + "AccountType":{ + "type":"string", + "enum":[ + "Team", + "EnterpriseDirectory", + "EnterpriseLWA", + "EnterpriseOIDC" + ] + }, + "AssociatePhoneNumberWithUserRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserId", + "E164PhoneNumber" + ], + "members":{ + "AccountId":{ + "shape":"String", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UserId":{ + "shape":"String", + "documentation":"

The user ID.

", + "location":"uri", + "locationName":"userId" + }, + "E164PhoneNumber":{ + "shape":"E164PhoneNumber", + "documentation":"

The phone number, in E.164 format.

" + } + } + }, + "AssociatePhoneNumberWithUserResponse":{ + "type":"structure", + "members":{ + } + }, + "AssociatePhoneNumbersWithVoiceConnectorRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + }, + "E164PhoneNumbers":{ + "shape":"E164PhoneNumberList", + "documentation":"

List of phone numbers, in E.164 format.

" + } + } + }, + "AssociatePhoneNumbersWithVoiceConnectorResponse":{ + "type":"structure", + "members":{ + "PhoneNumberErrors":{ + "shape":"PhoneNumberErrorList", + "documentation":"

If the action fails for one or more of the phone numbers in the request, a list of the phone numbers is returned, along with error codes and error messages.

" + } + } + }, + "BadRequestException":{ + "type":"structure", + "members":{ + "Code":{"shape":"ErrorCode"}, + "Message":{"shape":"String"} + }, + "documentation":"

The input parameters don't match the service's restrictions.

", + "error":{"httpStatusCode":400}, + "exception":true + }, + "BatchDeletePhoneNumberRequest":{ + "type":"structure", + "required":["PhoneNumberIds"], + "members":{ + "PhoneNumberIds":{ + "shape":"NonEmptyStringList", + "documentation":"

List of phone number IDs.

" + } + } + }, + "BatchDeletePhoneNumberResponse":{ + "type":"structure", + "members":{ + "PhoneNumberErrors":{ + "shape":"PhoneNumberErrorList", + "documentation":"

If the action fails for one or more of the phone numbers in the request, a list of the phone numbers is returned, along with error codes and error messages.

" + } + } + }, + "BatchSuspendUserRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserIdList" + ], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UserIdList":{ + "shape":"UserIdList", + "documentation":"

The request containing the user IDs to suspend.

" + } + } + }, + "BatchSuspendUserResponse":{ + "type":"structure", + "members":{ + "UserErrors":{ + "shape":"UserErrorList", + "documentation":"

If the BatchSuspendUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + } + } + }, + "BatchUnsuspendUserRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserIdList" + ], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UserIdList":{ + "shape":"UserIdList", + "documentation":"

The request containing the user IDs to unsuspend.

" + } + } + }, + "BatchUnsuspendUserResponse":{ + "type":"structure", + "members":{ + "UserErrors":{ + "shape":"UserErrorList", + "documentation":"

If the BatchUnsuspendUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + } + } + }, + "BatchUpdatePhoneNumberRequest":{ + "type":"structure", + "required":["UpdatePhoneNumberRequestItems"], + "members":{ + "UpdatePhoneNumberRequestItems":{ + "shape":"UpdatePhoneNumberRequestItemList", + "documentation":"

The request containing the phone number IDs and product types to update.

" + } + } + }, + "BatchUpdatePhoneNumberResponse":{ + "type":"structure", + "members":{ + "PhoneNumberErrors":{ + "shape":"PhoneNumberErrorList", + "documentation":"

If the action fails for one or more of the phone numbers in the request, a list of the phone numbers is returned, along with error codes and error messages.

" + } + } + }, + "BatchUpdateUserRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UpdateUserRequestItems" + ], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UpdateUserRequestItems":{ + "shape":"UpdateUserRequestItemList", + "documentation":"

The request containing the user IDs and details to update.

" + } + } + }, + "BatchUpdateUserResponse":{ + "type":"structure", + "members":{ + "UserErrors":{ + "shape":"UserErrorList", + "documentation":"

If the BatchUpdateUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + } + } + }, + "Boolean":{"type":"boolean"}, + "BusinessCallingSettings":{ + "type":"structure", + "members":{ + "CdrBucket":{ + "shape":"String", + "documentation":"

The Amazon S3 bucket designated for call detail record storage.

", + "box":true + } + }, + "documentation":"

The Amazon Chime Business Calling settings for the administrator's AWS account. Includes any Amazon S3 buckets designated for storing call detail records.

" + }, + "CallingRegion":{"type":"string"}, + "CallingRegionList":{ + "type":"list", + "member":{"shape":"CallingRegion"} + }, + "ConflictException":{ + "type":"structure", + "members":{ + "Code":{"shape":"ErrorCode"}, + "Message":{"shape":"String"} + }, + "documentation":"

The request could not be processed because of conflict in the current state of the resource.

", + "error":{"httpStatusCode":409}, + "exception":true + }, + "CpsLimit":{ + "type":"integer", + "min":1 + }, + "CreateAccountRequest":{ + "type":"structure", + "required":["Name"], + "members":{ + "Name":{ + "shape":"AccountName", + "documentation":"

The name of the Amazon Chime account.

" + } + } + }, + "CreateAccountResponse":{ + "type":"structure", + "members":{ + "Account":{ + "shape":"Account", + "documentation":"

The Amazon Chime account details.

" + } + } + }, + "CreatePhoneNumberOrderRequest":{ + "type":"structure", + "required":[ + "ProductType", + "E164PhoneNumbers" + ], + "members":{ + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The phone number product type.

" + }, + "E164PhoneNumbers":{ + "shape":"E164PhoneNumberList", + "documentation":"

List of phone numbers, in E.164 format.

" + } + } + }, + "CreatePhoneNumberOrderResponse":{ + "type":"structure", + "members":{ + "PhoneNumberOrder":{ + "shape":"PhoneNumberOrder", + "documentation":"

The phone number order details.

" + } + } + }, + "CreateVoiceConnectorRequest":{ + "type":"structure", + "required":[ + "Name", + "RequireEncryption" + ], + "members":{ + "Name":{ + "shape":"VoiceConnectorName", + "documentation":"

The name of the Amazon Chime Voice Connector.

" + }, + "RequireEncryption":{ + "shape":"Boolean", + "documentation":"

When enabled, requires encryption for the Amazon Chime Voice Connector.

" + } + } + }, + "CreateVoiceConnectorResponse":{ + "type":"structure", + "members":{ + "VoiceConnector":{ + "shape":"VoiceConnector", + "documentation":"

The Amazon Chime Voice Connector details.

" + } + } + }, + "Credential":{ + "type":"structure", + "members":{ + "Username":{ + "shape":"SensitiveString", + "documentation":"

The RFC2617 compliant user name associated with the SIP credentials, in US-ASCII format.

" + }, + "Password":{ + "shape":"SensitiveString", + "documentation":"

The RFC2617 compliant password associated with the SIP credentials, in US-ASCII format.

" + } + }, + "documentation":"

The SIP credentials used to authenticate requests to your Amazon Chime Voice Connector.

" + }, + "CredentialList":{ + "type":"list", + "member":{"shape":"Credential"} + }, + "DeleteAccountRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + } + } + }, + "DeleteAccountResponse":{ + "type":"structure", + "members":{ + } + }, + "DeletePhoneNumberRequest":{ + "type":"structure", + "required":["PhoneNumberId"], + "members":{ + "PhoneNumberId":{ + "shape":"String", + "documentation":"

The phone number ID.

", + "location":"uri", + "locationName":"phoneNumberId" + } + } + }, + "DeleteVoiceConnectorOriginationRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "DeleteVoiceConnectorRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "DeleteVoiceConnectorTerminationCredentialsRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + }, + "Usernames":{ + "shape":"SensitiveStringList", + "documentation":"

The RFC2617 compliant username associated with the SIP credentials, in US-ASCII format.

" + } + } + }, + "DeleteVoiceConnectorTerminationRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "DisassociatePhoneNumberFromUserRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserId" + ], + "members":{ + "AccountId":{ + "shape":"String", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UserId":{ + "shape":"String", + "documentation":"

The user ID.

", + "location":"uri", + "locationName":"userId" + } + } + }, + "DisassociatePhoneNumberFromUserResponse":{ + "type":"structure", + "members":{ + } + }, + "DisassociatePhoneNumbersFromVoiceConnectorRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + }, + "E164PhoneNumbers":{ + "shape":"E164PhoneNumberList", + "documentation":"

List of phone numbers, in E.164 format.

" + } + } + }, + "DisassociatePhoneNumbersFromVoiceConnectorResponse":{ + "type":"structure", + "members":{ + "PhoneNumberErrors":{ + "shape":"PhoneNumberErrorList", + "documentation":"

If the action fails for one or more of the phone numbers in the request, a list of the phone numbers is returned, along with error codes and error messages.

" + } + } + }, + "E164PhoneNumber":{ + "type":"string", + "pattern":"^\\+?[1-9]\\d{1,14}$", + "sensitive":true + }, + "E164PhoneNumberList":{ + "type":"list", + "member":{"shape":"E164PhoneNumber"} + }, + "EmailAddress":{ + "type":"string", + "pattern":".+@.+\\..+", + "sensitive":true + }, + "EmailStatus":{ + "type":"string", + "enum":[ + "NotSent", + "Sent", + "Failed" + ] + }, + "ErrorCode":{ + "type":"string", + "enum":[ + "Unauthorized", + "Forbidden", + "NotFound", + "BadRequest", + "Conflict", + "ServiceFailure", + "ServiceUnavailable", + "Unprocessable", + "Throttled", + "PreconditionFailed" + ] + }, + "ForbiddenException":{ + "type":"structure", + "members":{ + "Code":{"shape":"ErrorCode"}, + "Message":{"shape":"String"} + }, + "documentation":"

The client is permanently forbidden from making the request. For example, when a user tries to create an account from an unsupported region.

", + "error":{"httpStatusCode":403}, + "exception":true + }, + "GetAccountRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + } + } + }, + "GetAccountResponse":{ + "type":"structure", + "members":{ + "Account":{ + "shape":"Account", + "documentation":"

The Amazon Chime account details.

" + } + } + }, + "GetAccountSettingsRequest":{ + "type":"structure", + "required":["AccountId"], + "members":{ + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + } + } + }, + "GetAccountSettingsResponse":{ + "type":"structure", + "members":{ + "AccountSettings":{ + "shape":"AccountSettings", + "documentation":"

The Amazon Chime account settings.

" + } + } + }, + "GetGlobalSettingsResponse":{ + "type":"structure", + "members":{ + "BusinessCalling":{ + "shape":"BusinessCallingSettings", + "documentation":"

The Amazon Chime Business Calling settings.

" + }, + "VoiceConnector":{ + "shape":"VoiceConnectorSettings", + "documentation":"

The Amazon Chime Voice Connector settings.

" + } + } + }, + "GetPhoneNumberOrderRequest":{ + "type":"structure", + "required":["PhoneNumberOrderId"], + "members":{ + "PhoneNumberOrderId":{ + "shape":"GuidString", + "documentation":"

The ID for the phone number order.

", + "location":"uri", + "locationName":"phoneNumberOrderId" + } + } + }, + "GetPhoneNumberOrderResponse":{ + "type":"structure", + "members":{ + "PhoneNumberOrder":{ + "shape":"PhoneNumberOrder", + "documentation":"

The phone number order details.

" + } + } + }, + "GetPhoneNumberRequest":{ + "type":"structure", + "required":["PhoneNumberId"], + "members":{ + "PhoneNumberId":{ + "shape":"String", + "documentation":"

The phone number ID.

", + "location":"uri", + "locationName":"phoneNumberId" + } + } + }, + "GetPhoneNumberResponse":{ + "type":"structure", + "members":{ + "PhoneNumber":{ + "shape":"PhoneNumber", + "documentation":"

The phone number details.

" + } + } + }, + "GetUserRequest":{ "type":"structure", "required":[ - "AwsAccountId", "AccountId", - "Name" + "UserId" ], "members":{ - "AwsAccountId":{ - "shape":"String", - "documentation":"

The AWS account ID.

" + "AccountId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" }, + "UserId":{ + "shape":"NonEmptyString", + "documentation":"

The user ID.

", + "location":"uri", + "locationName":"userId" + } + } + }, + "GetUserResponse":{ + "type":"structure", + "members":{ + "User":{ + "shape":"User", + "documentation":"

The user details.

" + } + } + }, + "GetUserSettingsRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserId" + ], + "members":{ "AccountId":{ "shape":"String", - "documentation":"

The Amazon Chime account ID.

" + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" }, - "Name":{ + "UserId":{ "shape":"String", - "documentation":"

The Amazon Chime account name.

" - }, - "AccountType":{ - "shape":"AccountType", - "documentation":"

The Amazon Chime account type. For more information about different account types, see Managing Your Amazon Chime Accounts in the Amazon Chime Administration Guide.

" - }, - "CreatedTimestamp":{ - "shape":"Iso8601Timestamp", - "documentation":"

The Amazon Chime account creation timestamp, in ISO 8601 format.

" - }, - "DefaultLicense":{ - "shape":"License", - "documentation":"

The default license for the Amazon Chime account.

" - }, - "SupportedLicenses":{ - "shape":"LicenseList", - "documentation":"

Supported licenses for the Amazon Chime account.

" + "documentation":"

The user ID.

", + "location":"uri", + "locationName":"userId" } - }, - "documentation":"

The Amazon Chime account details. An AWS account can have multiple Amazon Chime accounts.

" + } }, - "AccountList":{ - "type":"list", - "member":{"shape":"Account"} + "GetUserSettingsResponse":{ + "type":"structure", + "members":{ + "UserSettings":{ + "shape":"UserSettings", + "documentation":"

The user settings.

" + } + } }, - "AccountName":{ + "GetVoiceConnectorOriginationRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "GetVoiceConnectorOriginationResponse":{ + "type":"structure", + "members":{ + "Origination":{ + "shape":"Origination", + "documentation":"

The origination setting details.

" + } + } + }, + "GetVoiceConnectorRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "GetVoiceConnectorResponse":{ + "type":"structure", + "members":{ + "VoiceConnector":{ + "shape":"VoiceConnector", + "documentation":"

The Amazon Chime Voice Connector details.

" + } + } + }, + "GetVoiceConnectorTerminationHealthRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "GetVoiceConnectorTerminationHealthResponse":{ + "type":"structure", + "members":{ + "TerminationHealth":{ + "shape":"TerminationHealth", + "documentation":"

The termination health details.

" + } + } + }, + "GetVoiceConnectorTerminationRequest":{ + "type":"structure", + "required":["VoiceConnectorId"], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + } + } + }, + "GetVoiceConnectorTerminationResponse":{ + "type":"structure", + "members":{ + "Termination":{ + "shape":"Termination", + "documentation":"

The termination setting details.

" + } + } + }, + "GuidString":{ "type":"string", - "max":100, - "min":1, - "pattern":".*\\S.*" + "pattern":"[a-fA-F0-9]{8}(?:-[a-fA-F0-9]{4}){3}-[a-fA-F0-9]{12}" }, - "AccountSettings":{ + "Invite":{ "type":"structure", "members":{ - "DisableRemoteControl":{ - "shape":"Boolean", - "documentation":"

Setting that stops or starts remote control of shared screens during meetings.

" + "InviteId":{ + "shape":"String", + "documentation":"

The invite ID.

" }, - "EnableDialOut":{ - "shape":"Boolean", - "documentation":"

Setting that allows meeting participants to choose the Call me at a phone number option. For more information, see Join a Meeting without the Amazon Chime App.

" + "Status":{ + "shape":"InviteStatus", + "documentation":"

The status of the invite.

" + }, + "EmailAddress":{ + "shape":"EmailAddress", + "documentation":"

The email address to which the invite is sent.

" + }, + "EmailStatus":{ + "shape":"EmailStatus", + "documentation":"

The status of the invite email.

" } }, - "documentation":"

Settings related to the Amazon Chime account. This includes settings that start or stop remote control of shared screens, or start or stop the dial-out option in the Amazon Chime web application. For more information about these settings, see Use the Policies Page in the Amazon Chime Administration Guide.

" + "documentation":"

Invitation object returned after emailing users to invite them to join the Amazon Chime Team account.

" }, - "AccountType":{ + "InviteList":{ + "type":"list", + "member":{"shape":"Invite"} + }, + "InviteStatus":{ "type":"string", "enum":[ - "Team", - "EnterpriseDirectory", - "EnterpriseLWA", - "EnterpriseOIDC" + "Pending", + "Accepted", + "Failed" ] }, - "BadRequestException":{ - "type":"structure", - "members":{ - "Code":{"shape":"ErrorCode"}, - "Message":{"shape":"String"} - }, - "documentation":"

The input parameters don't match the service's restrictions.

", - "error":{"httpStatusCode":400}, - "exception":true - }, - "BatchSuspendUserRequest":{ + "InviteUsersRequest":{ "type":"structure", "required":[ "AccountId", - "UserIdList" + "UserEmailList" ], "members":{ "AccountId":{ @@ -426,108 +1842,165 @@ "location":"uri", "locationName":"accountId" }, - "UserIdList":{ - "shape":"UserIdList", - "documentation":"

The request containing the user IDs to suspend.

" + "UserEmailList":{ + "shape":"UserEmailList", + "documentation":"

The user email addresses to which to send the invite.

" } } }, - "BatchSuspendUserResponse":{ + "InviteUsersResponse":{ "type":"structure", "members":{ - "UserErrors":{ - "shape":"UserErrorList", - "documentation":"

If the BatchSuspendUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + "Invites":{ + "shape":"InviteList", + "documentation":"

The invite details.

" } } }, - "BatchUnsuspendUserRequest":{ + "Iso8601Timestamp":{ + "type":"timestamp", + "timestampFormat":"iso8601" + }, + "License":{ + "type":"string", + "enum":[ + "Basic", + "Plus", + "Pro", + "ProTrial" + ] + }, + "LicenseList":{ + "type":"list", + "member":{"shape":"License"} + }, + "ListAccountsRequest":{ "type":"structure", - "required":[ - "AccountId", - "UserIdList" - ], "members":{ - "AccountId":{ - "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", - "location":"uri", - "locationName":"accountId" + "Name":{ + "shape":"AccountName", + "documentation":"

Amazon Chime account name prefix with which to filter results.

", + "location":"querystring", + "locationName":"name" }, - "UserIdList":{ - "shape":"UserIdList", - "documentation":"

The request containing the user IDs to unsuspend.

" + "UserEmail":{ + "shape":"EmailAddress", + "documentation":"

User email address with which to filter results.

", + "location":"querystring", + "locationName":"user-email" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" + }, + "MaxResults":{ + "shape":"ProfileServiceMaxResults", + "documentation":"

The maximum number of results to return in a single call. Defaults to 100.

", + "location":"querystring", + "locationName":"max-results" } } }, - "BatchUnsuspendUserResponse":{ + "ListAccountsResponse":{ "type":"structure", "members":{ - "UserErrors":{ - "shape":"UserErrorList", - "documentation":"

If the BatchUnsuspendUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + "Accounts":{ + "shape":"AccountList", + "documentation":"

List of Amazon Chime accounts and account details.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

" } } }, - "BatchUpdateUserRequest":{ + "ListPhoneNumberOrdersRequest":{ "type":"structure", - "required":[ - "AccountId", - "UpdateUserRequestItems" - ], "members":{ - "AccountId":{ - "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", - "location":"uri", - "locationName":"accountId" + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" }, - "UpdateUserRequestItems":{ - "shape":"UpdateUserRequestItemList", - "documentation":"

The request containing the user IDs and details to update.

" + "MaxResults":{ + "shape":"ResultMax", + "documentation":"

The maximum number of results to return in a single call.

", + "location":"querystring", + "locationName":"max-results" } } }, - "BatchUpdateUserResponse":{ + "ListPhoneNumberOrdersResponse":{ "type":"structure", "members":{ - "UserErrors":{ - "shape":"UserErrorList", - "documentation":"

If the BatchUpdateUser action fails for one or more of the user IDs in the request, a list of the user IDs is returned, along with error codes and error messages.

" + "PhoneNumberOrders":{ + "shape":"PhoneNumberOrderList", + "documentation":"

The phone number order details.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

" } } }, - "Boolean":{"type":"boolean"}, - "ConflictException":{ - "type":"structure", - "members":{ - "Code":{"shape":"ErrorCode"}, - "Message":{"shape":"String"} - }, - "documentation":"

The request could not be processed because of conflict in the current state of the resource.

", - "error":{"httpStatusCode":409}, - "exception":true - }, - "CreateAccountRequest":{ + "ListPhoneNumbersRequest":{ "type":"structure", - "required":["Name"], "members":{ - "Name":{ - "shape":"AccountName", - "documentation":"

The name of the Amazon Chime account.

" + "Status":{ + "shape":"PhoneNumberStatus", + "documentation":"

The phone number status.

", + "location":"querystring", + "locationName":"status" + }, + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The phone number product type.

", + "location":"querystring", + "locationName":"product-type" + }, + "FilterName":{ + "shape":"PhoneNumberAssociationName", + "documentation":"

The filter to use to limit the number of results.

", + "location":"querystring", + "locationName":"filter-name" + }, + "FilterValue":{ + "shape":"String", + "documentation":"

The value to use for the filter.

", + "location":"querystring", + "locationName":"filter-value" + }, + "MaxResults":{ + "shape":"ResultMax", + "documentation":"

The maximum number of results to return in a single call.

", + "location":"querystring", + "locationName":"max-results" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" } } }, - "CreateAccountResponse":{ + "ListPhoneNumbersResponse":{ "type":"structure", "members":{ - "Account":{ - "shape":"Account", - "documentation":"

The Amazon Chime account details.

" + "PhoneNumbers":{ + "shape":"PhoneNumberList", + "documentation":"

The phone number details.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

" } } }, - "DeleteAccountRequest":{ + "ListUsersRequest":{ "type":"structure", "required":["AccountId"], "members":{ @@ -536,95 +2009,92 @@ "documentation":"

The Amazon Chime account ID.

", "location":"uri", "locationName":"accountId" - } - } - }, - "DeleteAccountResponse":{ - "type":"structure", - "members":{ - } - }, - "EmailAddress":{ - "type":"string", - "pattern":".+@.+\\..+", - "sensitive":true - }, - "EmailStatus":{ - "type":"string", - "enum":[ - "NotSent", - "Sent", - "Failed" - ] - }, - "ErrorCode":{ - "type":"string", - "enum":[ - "Unauthorized", - "Forbidden", - "NotFound", - "BadRequest", - "Conflict", - "ServiceFailure", - "ServiceUnavailable", - "Unprocessable", - "Throttled", - "PreconditionFailed" - ] + }, + "UserEmail":{ + "shape":"EmailAddress", + "documentation":"

Optional. The user email address used to filter results. Maximum 1.

", + "location":"querystring", + "locationName":"user-email" + }, + "MaxResults":{ + "shape":"ProfileServiceMaxResults", + "documentation":"

The maximum number of results to return in a single call. Defaults to 100.

", + "location":"querystring", + "locationName":"max-results" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" + } + } }, - "ForbiddenException":{ + "ListUsersResponse":{ "type":"structure", "members":{ - "Code":{"shape":"ErrorCode"}, - "Message":{"shape":"String"} - }, - "documentation":"

The client is permanently forbidden from making the request. For example, when a user tries to create an account from an unsupported region.

", - "error":{"httpStatusCode":403}, - "exception":true + "Users":{ + "shape":"UserList", + "documentation":"

List of users and user details.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

" + } + } }, - "GetAccountRequest":{ + "ListVoiceConnectorTerminationCredentialsRequest":{ "type":"structure", - "required":["AccountId"], + "required":["VoiceConnectorId"], "members":{ - "AccountId":{ + "VoiceConnectorId":{ "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", + "documentation":"

The Amazon Chime Voice Connector ID.

", "location":"uri", - "locationName":"accountId" + "locationName":"voiceConnectorId" } } }, - "GetAccountResponse":{ + "ListVoiceConnectorTerminationCredentialsResponse":{ "type":"structure", "members":{ - "Account":{ - "shape":"Account", - "documentation":"

The Amazon Chime account details.

" + "Usernames":{ + "shape":"SensitiveStringList", + "documentation":"

A list of user names.

" } } }, - "GetAccountSettingsRequest":{ + "ListVoiceConnectorsRequest":{ "type":"structure", - "required":["AccountId"], "members":{ - "AccountId":{ - "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", - "location":"uri", - "locationName":"accountId" + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" + }, + "MaxResults":{ + "shape":"ResultMax", + "documentation":"

The maximum number of results to return in a single call.

", + "location":"querystring", + "locationName":"max-results" } } }, - "GetAccountSettingsResponse":{ + "ListVoiceConnectorsResponse":{ "type":"structure", "members":{ - "AccountSettings":{ - "shape":"AccountSettings", - "documentation":"

The Amazon Chime account settings.

" + "VoiceConnectors":{ + "shape":"VoiceConnectorList", + "documentation":"

The details of the Amazon Chime Voice Connectors.

" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

" } } }, - "GetUserRequest":{ + "LogoutUserRequest":{ "type":"structure", "required":[ "AccountId", @@ -645,223 +2115,395 @@ } } }, - "GetUserResponse":{ + "LogoutUserResponse":{ "type":"structure", "members":{ - "User":{ - "shape":"User", - "documentation":"

The user details.

" - } } }, - "Invite":{ + "NonEmptyString":{ + "type":"string", + "pattern":".*\\S.*" + }, + "NonEmptyStringList":{ + "type":"list", + "member":{"shape":"String"}, + "min":1 + }, + "NotFoundException":{ "type":"structure", "members":{ - "InviteId":{ - "shape":"String", - "documentation":"

The invite ID.

" + "Code":{"shape":"ErrorCode"}, + "Message":{"shape":"String"} + }, + "documentation":"

One or more of the resources in the request does not exist in the system.

", + "error":{"httpStatusCode":404}, + "exception":true + }, + "NullableBoolean":{"type":"boolean"}, + "OrderedPhoneNumber":{ + "type":"structure", + "members":{ + "E164PhoneNumber":{ + "shape":"E164PhoneNumber", + "documentation":"

The phone number, in E.164 format.

" }, "Status":{ - "shape":"InviteStatus", - "documentation":"

The status of the invite.

" - }, - "EmailAddress":{ - "shape":"EmailAddress", - "documentation":"

The email address to which the invite is sent.

" - }, - "EmailStatus":{ - "shape":"EmailStatus", - "documentation":"

The status of the invite email.

" + "shape":"OrderedPhoneNumberStatus", + "documentation":"

The phone number status.

" } }, - "documentation":"

Invitation object returned after emailing users to invite them to join the Amazon Chime Team account.

" + "documentation":"

A phone number for which an order has been placed.

" }, - "InviteList":{ + "OrderedPhoneNumberList":{ "type":"list", - "member":{"shape":"Invite"} + "member":{"shape":"OrderedPhoneNumber"} }, - "InviteStatus":{ + "OrderedPhoneNumberStatus":{ "type":"string", "enum":[ - "Pending", - "Accepted", + "Processing", + "Acquired", "Failed" ] }, - "InviteUsersRequest":{ + "Origination":{ "type":"structure", - "required":[ - "AccountId", - "UserEmailList" - ], "members":{ - "AccountId":{ - "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", - "location":"uri", - "locationName":"accountId" + "Routes":{ + "shape":"OriginationRouteList", + "documentation":"

The call distribution properties defined for your SIP hosts. Valid range: Minimum value of 1. Maximum value of 20.

" }, - "UserEmailList":{ - "shape":"UserEmailList", - "documentation":"

The user email addresses to which to send the invite.

" + "Disabled":{ + "shape":"Boolean", + "documentation":"

When origination settings are disabled, inbound calls are not enabled for your Amazon Chime Voice Connector.

" } - } + }, + "documentation":"

Origination settings enable your SIP hosts to receive inbound calls using your Amazon Chime Voice Connector.

" }, - "InviteUsersResponse":{ + "OriginationRoute":{ "type":"structure", "members":{ - "Invites":{ - "shape":"InviteList", - "documentation":"

The invite details.

" + "Host":{ + "shape":"String", + "documentation":"

The FODN or IP address to contact for origination traffic.

" + }, + "Port":{ + "shape":"Port", + "documentation":"

The designated origination route port. Defaults to 5060.

" + }, + "Protocol":{ + "shape":"OriginationRouteProtocol", + "documentation":"

The protocol to use for the origination route. Encryption-enabled Amazon Chime Voice Connectors use TCP protocol by default.

" + }, + "Priority":{ + "shape":"OriginationRoutePriority", + "documentation":"

The priority associated with the host, with 1 being the highest priority. Higher priority hosts are attempted first.

" + }, + "Weight":{ + "shape":"OriginationRouteWeight", + "documentation":"

The weight associated with the host. If hosts are equal in priority, calls are distributed among them based on their relative weight.

" } - } + }, + "documentation":"

Origination routes define call distribution properties for your SIP hosts to receive inbound calls using your Amazon Chime Voice Connector. Limit: 10 origination routes per Amazon Chime Voice Connector.

" }, - "Iso8601Timestamp":{ - "type":"timestamp", - "timestampFormat":"iso8601" + "OriginationRouteList":{ + "type":"list", + "member":{"shape":"OriginationRoute"} }, - "License":{ + "OriginationRoutePriority":{ + "type":"integer", + "max":100, + "min":1 + }, + "OriginationRouteProtocol":{ "type":"string", "enum":[ - "Basic", - "Plus", - "Pro", - "ProTrial" + "TCP", + "UDP" ] }, - "LicenseList":{ - "type":"list", - "member":{"shape":"License"} + "OriginationRouteWeight":{ + "type":"integer", + "max":100, + "min":1 }, - "ListAccountsRequest":{ + "PhoneNumber":{ "type":"structure", "members":{ - "Name":{ - "shape":"AccountName", - "documentation":"

Amazon Chime account name prefix with which to filter results.

", - "location":"querystring", - "locationName":"name" + "PhoneNumberId":{ + "shape":"String", + "documentation":"

The phone number ID.

" }, - "UserEmail":{ - "shape":"EmailAddress", - "documentation":"

User email address with which to filter results.

", - "location":"querystring", - "locationName":"user-email" + "E164PhoneNumber":{ + "shape":"E164PhoneNumber", + "documentation":"

The phone number, in E.164 format.

" }, - "NextToken":{ + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The phone number product type.

" + }, + "Status":{ + "shape":"PhoneNumberStatus", + "documentation":"

The phone number status.

" + }, + "Capabilities":{ + "shape":"PhoneNumberCapabilities", + "documentation":"

The phone number capabilities.

" + }, + "Associations":{ + "shape":"PhoneNumberAssociationList", + "documentation":"

The phone number associations.

" + }, + "CreatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The phone number creation timestamp, in ISO 8601 format.

" + }, + "UpdatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The updated phone number timestamp, in ISO 8601 format.

" + }, + "DeletionTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The deleted phone number timestamp, in ISO 8601 format.

" + } + }, + "documentation":"

A phone number used for Amazon Chime Business Calling or an Amazon Chime Voice Connector.

" + }, + "PhoneNumberAssociation":{ + "type":"structure", + "members":{ + "Value":{ "shape":"String", - "documentation":"

The token to use to retrieve the next page of results.

", - "location":"querystring", - "locationName":"next-token" + "documentation":"

Contains the ID for the entity specified in Name.

" }, - "MaxResults":{ - "shape":"ProfileServiceMaxResults", - "documentation":"

The maximum number of results to return in a single call. Defaults to 100.

", - "location":"querystring", - "locationName":"max-results" + "Name":{ + "shape":"PhoneNumberAssociationName", + "documentation":"

Defines the association with an Amazon Chime account ID, user ID, or Amazon Chime Voice Connector ID.

" + }, + "AssociatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The timestamp of the phone number association, in ISO 8601 format.

" } - } + }, + "documentation":"

The phone number associations, such as Amazon Chime account ID, Amazon Chime user ID, or Amazon Chime Voice Connector ID.

" }, - "ListAccountsResponse":{ + "PhoneNumberAssociationList":{ + "type":"list", + "member":{"shape":"PhoneNumberAssociation"} + }, + "PhoneNumberAssociationName":{ + "type":"string", + "enum":[ + "AccountId", + "UserId", + "VoiceConnectorId" + ] + }, + "PhoneNumberCapabilities":{ "type":"structure", "members":{ - "Accounts":{ - "shape":"AccountList", - "documentation":"

List of Amazon Chime accounts and account details.

" + "InboundCall":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies inbound calling for the specified phone number.

" }, - "NextToken":{ + "OutboundCall":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies outbound calling for the specified phone number.

" + }, + "InboundSMS":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies inbound SMS messaging for the specified phone number.

" + }, + "OutboundSMS":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies outbound SMS messaging for the specified phone number.

" + }, + "InboundMMS":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies inbound MMS messaging for the specified phone number.

" + }, + "OutboundMMS":{ + "shape":"NullableBoolean", + "documentation":"

Allows or denies outbound MMS messaging for the specified phone number.

" + } + }, + "documentation":"

The phone number capabilities, such as enabled inbound and outbound calling and text messaging.

" + }, + "PhoneNumberError":{ + "type":"structure", + "members":{ + "PhoneNumberId":{ + "shape":"NonEmptyString", + "documentation":"

The phone number ID for which the action failed.

" + }, + "ErrorCode":{ + "shape":"ErrorCode", + "documentation":"

The error code.

" + }, + "ErrorMessage":{ "shape":"String", - "documentation":"

The token to use to retrieve the next page of results.

" + "documentation":"

The error message.

" } - } + }, + "documentation":"

If the phone number action fails for one or more of the phone numbers in the request, a list of the phone numbers is returned, along with error codes and error messages.

" + }, + "PhoneNumberErrorList":{ + "type":"list", + "member":{"shape":"PhoneNumberError"} + }, + "PhoneNumberList":{ + "type":"list", + "member":{"shape":"PhoneNumber"} + }, + "PhoneNumberMaxResults":{ + "type":"integer", + "max":500, + "min":1 + }, + "PhoneNumberOrder":{ + "type":"structure", + "members":{ + "PhoneNumberOrderId":{ + "shape":"GuidString", + "documentation":"

The phone number order ID.

" + }, + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The phone number order product type.

" + }, + "Status":{ + "shape":"PhoneNumberOrderStatus", + "documentation":"

The status of the phone number order.

" + }, + "OrderedPhoneNumbers":{ + "shape":"OrderedPhoneNumberList", + "documentation":"

The ordered phone number details, such as the phone number in E.164 format and the phone number status.

" + }, + "CreatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The phone number order creation timestamp, in ISO 8601 format.

" + }, + "UpdatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The updated phone number order timestamp, in ISO 8601 format.

" + } + }, + "documentation":"

The details of a phone number order created for Amazon Chime.

" + }, + "PhoneNumberOrderList":{ + "type":"list", + "member":{"shape":"PhoneNumberOrder"} + }, + "PhoneNumberOrderStatus":{ + "type":"string", + "enum":[ + "Processing", + "Successful", + "Failed", + "Partial" + ] + }, + "PhoneNumberProductType":{ + "type":"string", + "enum":[ + "BusinessCalling", + "VoiceConnector" + ] + }, + "PhoneNumberStatus":{ + "type":"string", + "enum":[ + "AcquireInProgress", + "AcquireFailed", + "Unassigned", + "Assigned", + "ReleaseInProgress", + "DeleteInProgress", + "ReleaseFailed", + "DeleteFailed" + ] + }, + "Port":{ + "type":"integer", + "max":65535, + "min":0 + }, + "ProfileServiceMaxResults":{ + "type":"integer", + "max":200, + "min":1 }, - "ListUsersRequest":{ + "PutVoiceConnectorOriginationRequest":{ "type":"structure", - "required":["AccountId"], + "required":[ + "VoiceConnectorId", + "Origination" + ], "members":{ - "AccountId":{ + "VoiceConnectorId":{ "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", + "documentation":"

The Amazon Chime Voice Connector ID.

", "location":"uri", - "locationName":"accountId" - }, - "UserEmail":{ - "shape":"EmailAddress", - "documentation":"

Optional. The user email address used to filter results. Maximum 1.

", - "location":"querystring", - "locationName":"user-email" + "locationName":"voiceConnectorId" }, - "MaxResults":{ - "shape":"ProfileServiceMaxResults", - "documentation":"

The maximum number of results to return in a single call. Defaults to 100.

", - "location":"querystring", - "locationName":"max-results" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use to retrieve the next page of results.

", - "location":"querystring", - "locationName":"next-token" + "Origination":{ + "shape":"Origination", + "documentation":"

The origination setting details to add.

" } } }, - "ListUsersResponse":{ + "PutVoiceConnectorOriginationResponse":{ "type":"structure", "members":{ - "Users":{ - "shape":"UserList", - "documentation":"

List of users and user details.

" - }, - "NextToken":{ - "shape":"String", - "documentation":"

The token to use to retrieve the next page of results.

" + "Origination":{ + "shape":"Origination", + "documentation":"

The updated origination setting details.

" } } }, - "LogoutUserRequest":{ + "PutVoiceConnectorTerminationCredentialsRequest":{ "type":"structure", - "required":[ - "AccountId", - "UserId" - ], + "required":["VoiceConnectorId"], "members":{ - "AccountId":{ + "VoiceConnectorId":{ "shape":"NonEmptyString", - "documentation":"

The Amazon Chime account ID.

", + "documentation":"

The Amazon Chime Voice Connector ID.

", "location":"uri", - "locationName":"accountId" + "locationName":"voiceConnectorId" }, - "UserId":{ - "shape":"NonEmptyString", - "documentation":"

The user ID.

", - "location":"uri", - "locationName":"userId" + "Credentials":{ + "shape":"CredentialList", + "documentation":"

The termination SIP credentials.

" } } }, - "LogoutUserResponse":{ + "PutVoiceConnectorTerminationRequest":{ "type":"structure", + "required":[ + "VoiceConnectorId", + "Termination" + ], "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + }, + "Termination":{ + "shape":"Termination", + "documentation":"

The termination setting details to add.

" + } } }, - "NonEmptyString":{ - "type":"string", - "pattern":".*\\S.*" - }, - "NotFoundException":{ + "PutVoiceConnectorTerminationResponse":{ "type":"structure", "members":{ - "Code":{"shape":"ErrorCode"}, - "Message":{"shape":"String"} - }, - "documentation":"

One or more of the resources in the request does not exist in the system.

", - "error":{"httpStatusCode":404}, - "exception":true - }, - "ProfileServiceMaxResults":{ - "type":"integer", - "max":200, - "min":1 + "Termination":{ + "shape":"Termination", + "documentation":"

The updated termination setting details.

" + } + } }, "RegistrationStatus":{ "type":"string", @@ -901,10 +2543,90 @@ } } }, + "RestorePhoneNumberRequest":{ + "type":"structure", + "required":["PhoneNumberId"], + "members":{ + "PhoneNumberId":{ + "shape":"NonEmptyString", + "documentation":"

The phone number.

", + "location":"uri", + "locationName":"phoneNumberId" + } + } + }, + "RestorePhoneNumberResponse":{ + "type":"structure", + "members":{ + "PhoneNumber":{ + "shape":"PhoneNumber", + "documentation":"

The phone number details.

" + } + } + }, + "ResultMax":{ + "type":"integer", + "max":99, + "min":1 + }, + "SearchAvailablePhoneNumbersRequest":{ + "type":"structure", + "members":{ + "AreaCode":{ + "shape":"String", + "documentation":"

The area code used to filter results.

", + "location":"querystring", + "locationName":"area-code" + }, + "City":{ + "shape":"String", + "documentation":"

The city used to filter results.

", + "location":"querystring", + "locationName":"city" + }, + "Country":{ + "shape":"String", + "documentation":"

The country used to filter results.

", + "location":"querystring", + "locationName":"country" + }, + "State":{ + "shape":"String", + "documentation":"

The state used to filter results.

", + "location":"querystring", + "locationName":"state" + }, + "MaxResults":{ + "shape":"PhoneNumberMaxResults", + "documentation":"

The maximum number of results to return in a single call.

", + "location":"querystring", + "locationName":"max-results" + }, + "NextToken":{ + "shape":"String", + "documentation":"

The token to use to retrieve the next page of results.

", + "location":"querystring", + "locationName":"next-token" + } + } + }, + "SearchAvailablePhoneNumbersResponse":{ + "type":"structure", + "members":{ + "E164PhoneNumbers":{ + "shape":"E164PhoneNumberList", + "documentation":"

List of phone numbers, in E.164 format.

" + } + } + }, "SensitiveString":{ "type":"string", "sensitive":true }, + "SensitiveStringList":{ + "type":"list", + "member":{"shape":"SensitiveString"} + }, "ServiceFailureException":{ "type":"structure", "members":{ @@ -928,6 +2650,73 @@ "fault":true }, "String":{"type":"string"}, + "StringList":{ + "type":"list", + "member":{"shape":"String"} + }, + "TelephonySettings":{ + "type":"structure", + "required":[ + "InboundCalling", + "OutboundCalling", + "SMS" + ], + "members":{ + "InboundCalling":{ + "shape":"Boolean", + "documentation":"

Allows or denies inbound calling.

" + }, + "OutboundCalling":{ + "shape":"Boolean", + "documentation":"

Allows or denies outbound calling.

" + }, + "SMS":{ + "shape":"Boolean", + "documentation":"

Allows or denies SMS messaging.

" + } + }, + "documentation":"

Settings that allow management of telephony permissions for an Amazon Chime user, such as inbound and outbound calling and text messaging.

" + }, + "Termination":{ + "type":"structure", + "members":{ + "CpsLimit":{ + "shape":"CpsLimit", + "documentation":"

The limit on calls per second. Max value based on account service limit. Default value of 1.

" + }, + "DefaultPhoneNumber":{ + "shape":"E164PhoneNumber", + "documentation":"

The default caller ID phone number.

" + }, + "CallingRegions":{ + "shape":"CallingRegionList", + "documentation":"

The countries to which calls are allowed.

" + }, + "CidrAllowedList":{ + "shape":"StringList", + "documentation":"

The IP addresses allowed to make calls, in CIDR format.

" + }, + "Disabled":{ + "shape":"Boolean", + "documentation":"

When termination settings are disabled, outbound calls can not be made.

" + } + }, + "documentation":"

Termination settings enable your SIP hosts to make outbound calls using your Amazon Chime Voice Connector.

" + }, + "TerminationHealth":{ + "type":"structure", + "members":{ + "Timestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The timestamp, in ISO 8601 format.

" + }, + "Source":{ + "shape":"String", + "documentation":"

The source IP address.

" + } + }, + "documentation":"

The termination health details, including the source IP address and timestamp of the last successful SIP OPTIONS message from your SIP infrastructure.

" + }, "ThrottledClientException":{ "type":"structure", "members":{ @@ -1007,6 +2796,67 @@ "members":{ } }, + "UpdateGlobalSettingsRequest":{ + "type":"structure", + "required":[ + "BusinessCalling", + "VoiceConnector" + ], + "members":{ + "BusinessCalling":{ + "shape":"BusinessCallingSettings", + "documentation":"

The Amazon Chime Business Calling settings.

" + }, + "VoiceConnector":{ + "shape":"VoiceConnectorSettings", + "documentation":"

The Amazon Chime Voice Connector settings.

" + } + } + }, + "UpdatePhoneNumberRequest":{ + "type":"structure", + "required":["PhoneNumberId"], + "members":{ + "PhoneNumberId":{ + "shape":"String", + "documentation":"

The phone number ID.

", + "location":"uri", + "locationName":"phoneNumberId" + }, + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The product type.

" + } + } + }, + "UpdatePhoneNumberRequestItem":{ + "type":"structure", + "required":["PhoneNumberId"], + "members":{ + "PhoneNumberId":{ + "shape":"NonEmptyString", + "documentation":"

The phone number ID to update.

" + }, + "ProductType":{ + "shape":"PhoneNumberProductType", + "documentation":"

The product type to update.

" + } + }, + "documentation":"

The phone number ID and product type fields to update, used with the BatchUpdatePhoneNumber and UpdatePhoneNumber actions.

" + }, + "UpdatePhoneNumberRequestItemList":{ + "type":"list", + "member":{"shape":"UpdatePhoneNumberRequestItem"} + }, + "UpdatePhoneNumberResponse":{ + "type":"structure", + "members":{ + "PhoneNumber":{ + "shape":"PhoneNumber", + "documentation":"

The updated phone number details.

" + } + } + }, "UpdateUserRequest":{ "type":"structure", "required":[ @@ -1061,6 +2911,65 @@ } } }, + "UpdateUserSettingsRequest":{ + "type":"structure", + "required":[ + "AccountId", + "UserId", + "UserSettings" + ], + "members":{ + "AccountId":{ + "shape":"String", + "documentation":"

The Amazon Chime account ID.

", + "location":"uri", + "locationName":"accountId" + }, + "UserId":{ + "shape":"String", + "documentation":"

The user ID.

", + "location":"uri", + "locationName":"userId" + }, + "UserSettings":{ + "shape":"UserSettings", + "documentation":"

The user settings to update.

" + } + } + }, + "UpdateVoiceConnectorRequest":{ + "type":"structure", + "required":[ + "VoiceConnectorId", + "Name", + "RequireEncryption" + ], + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

", + "location":"uri", + "locationName":"voiceConnectorId" + }, + "Name":{ + "shape":"VoiceConnectorName", + "documentation":"

The name of the Amazon Chime Voice Connector.

" + }, + "RequireEncryption":{ + "shape":"Boolean", + "documentation":"

When enabled, requires encryption for the Amazon Chime Voice Connector.

" + } + } + }, + "UpdateVoiceConnectorResponse":{ + "type":"structure", + "members":{ + "VoiceConnector":{ + "shape":"VoiceConnector", + "documentation":"

The Amazon Chime Voice Connector details.

" + } + } + }, "User":{ "type":"structure", "required":["UserId"], @@ -1077,6 +2986,10 @@ "shape":"EmailAddress", "documentation":"

The primary email address of the user.

" }, + "PrimaryProvisionedNumber":{ + "shape":"SensitiveString", + "documentation":"

The primary phone number associated with the user.

" + }, "DisplayName":{ "shape":"SensitiveString", "documentation":"

The display name of the user.

" @@ -1143,6 +3056,67 @@ "UserList":{ "type":"list", "member":{"shape":"User"} + }, + "UserSettings":{ + "type":"structure", + "required":["Telephony"], + "members":{ + "Telephony":{ + "shape":"TelephonySettings", + "documentation":"

The telephony settings associated with the user.

" + } + }, + "documentation":"

Settings associated with an Amazon Chime user, including inbound and outbound calling and text messaging.

" + }, + "VoiceConnector":{ + "type":"structure", + "members":{ + "VoiceConnectorId":{ + "shape":"NonEmptyString", + "documentation":"

The Amazon Chime Voice Connector ID.

" + }, + "Name":{ + "shape":"VoiceConnectorName", + "documentation":"

The name of the Amazon Chime Voice Connector.

" + }, + "OutboundHostName":{ + "shape":"String", + "documentation":"

The outbound host name for the Amazon Chime Voice Connector.

" + }, + "RequireEncryption":{ + "shape":"Boolean", + "documentation":"

Designates whether encryption is required for the Amazon Chime Voice Connector.

" + }, + "CreatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The Amazon Chime Voice Connector creation timestamp, in ISO 8601 format.

" + }, + "UpdatedTimestamp":{ + "shape":"Iso8601Timestamp", + "documentation":"

The updated Amazon Chime Voice Connector timestamp, in ISO 8601 format.

" + } + }, + "documentation":"

The Amazon Chime Voice Connector configuration, including outbound host name and encryption settings.

" + }, + "VoiceConnectorList":{ + "type":"list", + "member":{"shape":"VoiceConnector"} + }, + "VoiceConnectorName":{ + "type":"string", + "max":256, + "min":1 + }, + "VoiceConnectorSettings":{ + "type":"structure", + "members":{ + "CdrBucket":{ + "shape":"String", + "documentation":"

The Amazon S3 bucket designated for call detail record storage.

", + "box":true + } + }, + "documentation":"

The Amazon Chime Voice Connector settings. Includes any Amazon S3 buckets designated for storing call detail records.

" } }, "documentation":"

The Amazon Chime API (application programming interface) is designed for administrators to use to perform key tasks, such as creating and managing Amazon Chime accounts and users. This guide provides detailed information about the Amazon Chime API, including operations, types, inputs and outputs, and error codes.

You can use an AWS SDK, the AWS Command Line Interface (AWS CLI), or the REST API to make API calls. We recommend using an AWS SDK or the AWS CLI. Each API operation includes links to information about using it with a language-specific AWS SDK or the AWS CLI.

Using an AWS SDK

You don't need to write code to calculate a signature for request authentication. The SDK clients authenticate your requests by using access keys that you provide. For more information about AWS SDKs, see the AWS Developer Center.

Using the AWS CLI

Use your access keys with the AWS CLI to make API calls. For information about setting up the AWS CLI, see Installing the AWS Command Line Interface in the AWS Command Line Interface User Guide. For a list of available Amazon Chime commands, see the Amazon Chime commands in the AWS CLI Command Reference.

Using REST API

If you use REST to make API calls, you must authenticate your request by providing a signature. Amazon Chime supports signature version 4. For more information, see Signature Version 4 Signing Process in the Amazon Web Services General Reference.

When making REST API calls, use the service name chime and REST endpoint https://service.chime.aws.amazon.com.

Administrative permissions are controlled using AWS Identity and Access Management (IAM). For more information, see Control Access to the Amazon Chime Console in the Amazon Chime Administration Guide.

" diff --git a/services/cloud9/pom.xml b/services/cloud9/pom.xml index 9ed37105facb..dd2e00c7d922 100644 --- a/services/cloud9/pom.xml +++ b/services/cloud9/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 cloud9 diff --git a/services/clouddirectory/pom.xml b/services/clouddirectory/pom.xml index 81a613a4b8fa..f36ccce52d06 100644 --- a/services/clouddirectory/pom.xml +++ b/services/clouddirectory/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 clouddirectory AWS Java SDK :: Services :: Amazon CloudDirectory diff --git a/services/cloudformation/pom.xml b/services/cloudformation/pom.xml index fe6cc0ba706e..264c7d55cc98 100644 --- a/services/cloudformation/pom.xml +++ b/services/cloudformation/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudformation AWS Java SDK :: Services :: AWS CloudFormation diff --git a/services/cloudfront/pom.xml b/services/cloudfront/pom.xml index fb9b5c32c15a..f499f2611a91 100644 --- a/services/cloudfront/pom.xml +++ b/services/cloudfront/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudfront AWS Java SDK :: Services :: Amazon CloudFront diff --git a/services/cloudhsm/pom.xml b/services/cloudhsm/pom.xml index f102454b8827..22fbb198a868 100644 --- a/services/cloudhsm/pom.xml +++ b/services/cloudhsm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudhsm AWS Java SDK :: Services :: AWS CloudHSM diff --git a/services/cloudhsmv2/pom.xml b/services/cloudhsmv2/pom.xml index 460d48174acd..b1f98f6dd59c 100644 --- a/services/cloudhsmv2/pom.xml +++ b/services/cloudhsmv2/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 cloudhsmv2 diff --git a/services/cloudsearch/pom.xml b/services/cloudsearch/pom.xml index 8270129f1659..f539f8f247e2 100644 --- a/services/cloudsearch/pom.xml +++ b/services/cloudsearch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudsearch AWS Java SDK :: Services :: Amazon CloudSearch diff --git a/services/cloudsearchdomain/pom.xml b/services/cloudsearchdomain/pom.xml index 79986251026b..c54e66ecd8f8 100644 --- a/services/cloudsearchdomain/pom.xml +++ b/services/cloudsearchdomain/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudsearchdomain AWS Java SDK :: Services :: Amazon CloudSearch Domain diff --git a/services/cloudtrail/pom.xml b/services/cloudtrail/pom.xml index b9054a89567e..33d0317ba570 100644 --- a/services/cloudtrail/pom.xml +++ b/services/cloudtrail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudtrail AWS Java SDK :: Services :: AWS CloudTrail diff --git a/services/cloudwatch/pom.xml b/services/cloudwatch/pom.xml index 12e2347f2dfe..bf2ccb0def56 100644 --- a/services/cloudwatch/pom.xml +++ b/services/cloudwatch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudwatch AWS Java SDK :: Services :: Amazon CloudWatch diff --git a/services/cloudwatchevents/pom.xml b/services/cloudwatchevents/pom.xml index 712fe38e25c8..4d850e5997c4 100644 --- a/services/cloudwatchevents/pom.xml +++ b/services/cloudwatchevents/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudwatchevents AWS Java SDK :: Services :: Amazon CloudWatch Events diff --git a/services/cloudwatchlogs/pom.xml b/services/cloudwatchlogs/pom.xml index 0259094e4022..c173ecfbfbc6 100644 --- a/services/cloudwatchlogs/pom.xml +++ b/services/cloudwatchlogs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cloudwatchlogs AWS Java SDK :: Services :: Amazon CloudWatch Logs diff --git a/services/codebuild/pom.xml b/services/codebuild/pom.xml index 084588674971..0c67a602e4ce 100644 --- a/services/codebuild/pom.xml +++ b/services/codebuild/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 codebuild AWS Java SDK :: Services :: AWS Code Build diff --git a/services/codecommit/pom.xml b/services/codecommit/pom.xml index 464af1bb9d5d..0ff1829cc31c 100644 --- a/services/codecommit/pom.xml +++ b/services/codecommit/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 codecommit AWS Java SDK :: Services :: AWS CodeCommit diff --git a/services/codedeploy/pom.xml b/services/codedeploy/pom.xml index 399cf952c61e..7cd855ef32c6 100644 --- a/services/codedeploy/pom.xml +++ b/services/codedeploy/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 codedeploy AWS Java SDK :: Services :: AWS CodeDeploy diff --git a/services/codepipeline/pom.xml b/services/codepipeline/pom.xml index 98e00b34b61d..d29c52efca23 100644 --- a/services/codepipeline/pom.xml +++ b/services/codepipeline/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 codepipeline AWS Java SDK :: Services :: AWS CodePipeline diff --git a/services/codestar/pom.xml b/services/codestar/pom.xml index bbf9246e66bd..2ab5ba7fc6a3 100644 --- a/services/codestar/pom.xml +++ b/services/codestar/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 codestar AWS Java SDK :: Services :: AWS CodeStar diff --git a/services/cognitoidentity/pom.xml b/services/cognitoidentity/pom.xml index db05f50e949b..5bdf2f98eb70 100644 --- a/services/cognitoidentity/pom.xml +++ b/services/cognitoidentity/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cognitoidentity AWS Java SDK :: Services :: Amazon Cognito Identity diff --git a/services/cognitoidentityprovider/pom.xml b/services/cognitoidentityprovider/pom.xml index 56727084cbad..76e88475087e 100644 --- a/services/cognitoidentityprovider/pom.xml +++ b/services/cognitoidentityprovider/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cognitoidentityprovider AWS Java SDK :: Services :: Amazon Cognito Identity Provider Service diff --git a/services/cognitosync/pom.xml b/services/cognitosync/pom.xml index 045cd3790502..9e1be0c4c397 100644 --- a/services/cognitosync/pom.xml +++ b/services/cognitosync/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 cognitosync AWS Java SDK :: Services :: Amazon Cognito Sync diff --git a/services/comprehend/pom.xml b/services/comprehend/pom.xml index 08d8e4970e62..e0d5e8923ef0 100644 --- a/services/comprehend/pom.xml +++ b/services/comprehend/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 comprehend diff --git a/services/comprehendmedical/pom.xml b/services/comprehendmedical/pom.xml index 9249f3956b68..62b202b0c460 100644 --- a/services/comprehendmedical/pom.xml +++ b/services/comprehendmedical/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 comprehendmedical AWS Java SDK :: Services :: ComprehendMedical diff --git a/services/config/pom.xml b/services/config/pom.xml index 6d9a62fed98a..a029224d04c1 100644 --- a/services/config/pom.xml +++ b/services/config/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 config AWS Java SDK :: Services :: AWS Config diff --git a/services/connect/pom.xml b/services/connect/pom.xml index a5b7ec52ea0a..7a81b8bf7a58 100644 --- a/services/connect/pom.xml +++ b/services/connect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 connect AWS Java SDK :: Services :: Connect diff --git a/services/costandusagereport/pom.xml b/services/costandusagereport/pom.xml index 2d56da1d82a1..4895794ffa6b 100644 --- a/services/costandusagereport/pom.xml +++ b/services/costandusagereport/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 costandusagereport AWS Java SDK :: Services :: AWS Cost and Usage Report diff --git a/services/costexplorer/pom.xml b/services/costexplorer/pom.xml index e4b5e45d4096..cbaeb9bbdaa7 100644 --- a/services/costexplorer/pom.xml +++ b/services/costexplorer/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 costexplorer diff --git a/services/databasemigration/pom.xml b/services/databasemigration/pom.xml index a4157ae4d5d2..0140a1a2c634 100644 --- a/services/databasemigration/pom.xml +++ b/services/databasemigration/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 databasemigration AWS Java SDK :: Services :: AWS Database Migration Service diff --git a/services/databasemigration/src/main/resources/codegen-resources/paginators-1.json b/services/databasemigration/src/main/resources/codegen-resources/paginators-1.json index 7dd8ddd6f207..755ab793006f 100644 --- a/services/databasemigration/src/main/resources/codegen-resources/paginators-1.json +++ b/services/databasemigration/src/main/resources/codegen-resources/paginators-1.json @@ -35,6 +35,11 @@ "output_token": "Marker", "limit_key": "MaxRecords" }, + "DescribePendingMaintenanceActions": { + "input_token": "Marker", + "output_token": "Marker", + "limit_key": "MaxRecords" + }, "DescribeReplicationInstanceTaskLogs": { "input_token": "Marker", "output_token": "Marker", diff --git a/services/databasemigration/src/main/resources/codegen-resources/service-2.json b/services/databasemigration/src/main/resources/codegen-resources/service-2.json index c9d8135994a5..341b6d9b2855 100644 --- a/services/databasemigration/src/main/resources/codegen-resources/service-2.json +++ b/services/databasemigration/src/main/resources/codegen-resources/service-2.json @@ -25,6 +25,19 @@ ], "documentation":"

Adds metadata tags to an AWS DMS resource, including replication instance, endpoint, security group, and migration task. These tags can also be used with cost allocation reporting to track cost associated with DMS resources, or used in a Condition statement in an IAM policy for DMS.

" }, + "ApplyPendingMaintenanceAction":{ + "name":"ApplyPendingMaintenanceAction", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"ApplyPendingMaintenanceActionMessage"}, + "output":{"shape":"ApplyPendingMaintenanceActionResponse"}, + "errors":[ + {"shape":"ResourceNotFoundFault"} + ], + "documentation":"

Applies a pending maintenance action to a resource (for example, to a replication instance).

" + }, "CreateEndpoint":{ "name":"CreateEndpoint", "http":{ @@ -53,12 +66,17 @@ "output":{"shape":"CreateEventSubscriptionResponse"}, "errors":[ {"shape":"ResourceQuotaExceededFault"}, + {"shape":"ResourceNotFoundFault"}, {"shape":"ResourceAlreadyExistsFault"}, {"shape":"SNSInvalidTopicFault"}, {"shape":"SNSNoAuthorizationFault"}, - {"shape":"ResourceNotFoundFault"} + {"shape":"KMSAccessDeniedFault"}, + {"shape":"KMSDisabledFault"}, + {"shape":"KMSInvalidStateFault"}, + {"shape":"KMSNotFoundFault"}, + {"shape":"KMSThrottlingFault"} ], - "documentation":"

Creates an AWS DMS event notification subscription.

You can specify the type of source (SourceType) you want to be notified of, provide a list of AWS DMS source IDs (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. If you specify both the SourceType and SourceIds, such as SourceType = replication-instance and SourceIdentifier = my-replinstance, you will be notified of all the replication instance events for the specified source. If you specify a SourceType but don't specify a SourceIdentifier, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either SourceType nor SourceIdentifier, you will be notified of events generated from all AWS DMS sources belonging to your customer account.

For more information about AWS DMS events, see Working with Events and Notifications in the AWS Database Migration Service User Guide.

" + "documentation":"

Creates an AWS DMS event notification subscription.

You can specify the type of source (SourceType) you want to be notified of, provide a list of AWS DMS source IDs (SourceIds) that triggers the events, and provide a list of event categories (EventCategories) for events you want to be notified of. If you specify both the SourceType and SourceIds, such as SourceType = replication-instance and SourceIdentifier = my-replinstance, you will be notified of all the replication instance events for the specified source. If you specify a SourceType but don't specify a SourceIdentifier, you receive notice of the events for that source type for all your AWS DMS sources. If you don't specify either SourceType nor SourceIdentifier, you will be notified of events generated from all AWS DMS sources belonging to your customer account.

For more information about AWS DMS events, see Working with Events and Notifications in the AWS Database Migration Service User Guide.

" }, "CreateReplicationInstance":{ "name":"CreateReplicationInstance", @@ -269,7 +287,7 @@ }, "input":{"shape":"DescribeEventCategoriesMessage"}, "output":{"shape":"DescribeEventCategoriesResponse"}, - "documentation":"

Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in Working with Events and Notifications in the AWS Database Migration Service User Guide.

" + "documentation":"

Lists categories for all event source types, or, if specified, for a specified source type. You can see a list of the event categories and source types in Working with Events and Notifications in the AWS Database Migration Service User Guide.

" }, "DescribeEventSubscriptions":{ "name":"DescribeEventSubscriptions", @@ -292,7 +310,7 @@ }, "input":{"shape":"DescribeEventsMessage"}, "output":{"shape":"DescribeEventsResponse"}, - "documentation":"

Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see Working with Events and Notifications in the AWS Database Migration User Guide.

" + "documentation":"

Lists events for a given source identifier and source type. You can also specify a start and end time. For more information on AWS DMS events, see Working with Events and Notifications in the AWS Database Migration User Guide.

" }, "DescribeOrderableReplicationInstances":{ "name":"DescribeOrderableReplicationInstances", @@ -304,6 +322,19 @@ "output":{"shape":"DescribeOrderableReplicationInstancesResponse"}, "documentation":"

Returns information about the replication instance types that can be created in the specified region.

" }, + "DescribePendingMaintenanceActions":{ + "name":"DescribePendingMaintenanceActions", + "http":{ + "method":"POST", + "requestUri":"/" + }, + "input":{"shape":"DescribePendingMaintenanceActionsMessage"}, + "output":{"shape":"DescribePendingMaintenanceActionsResponse"}, + "errors":[ + {"shape":"ResourceNotFoundFault"} + ], + "documentation":"

For internal use only

" + }, "DescribeRefreshSchemasStatus":{ "name":"DescribeRefreshSchemasStatus", "http":{ @@ -469,7 +500,12 @@ {"shape":"ResourceQuotaExceededFault"}, {"shape":"ResourceNotFoundFault"}, {"shape":"SNSInvalidTopicFault"}, - {"shape":"SNSNoAuthorizationFault"} + {"shape":"SNSNoAuthorizationFault"}, + {"shape":"KMSAccessDeniedFault"}, + {"shape":"KMSDisabledFault"}, + {"shape":"KMSInvalidStateFault"}, + {"shape":"KMSNotFoundFault"}, + {"shape":"KMSThrottlingFault"} ], "documentation":"

Modifies an existing AWS DMS event notification subscription.

" }, @@ -482,6 +518,7 @@ "input":{"shape":"ModifyReplicationInstanceMessage"}, "output":{"shape":"ModifyReplicationInstanceResponse"}, "errors":[ + {"shape":"AccessDeniedFault"}, {"shape":"InvalidResourceStateFault"}, {"shape":"ResourceAlreadyExistsFault"}, {"shape":"ResourceNotFoundFault"}, @@ -523,7 +560,7 @@ {"shape":"ResourceAlreadyExistsFault"}, {"shape":"KMSKeyNotAccessibleFault"} ], - "documentation":"

Modifies the specified replication task.

You can't modify the task endpoints. The task must be stopped before you can modify it.

For more information about AWS DMS tasks, see Working with Migration Tasks in the AWS Database Migration Service User Guide.

" + "documentation":"

Modifies the specified replication task.

You can't modify the task endpoints. The task must be stopped before you can modify it.

For more information about AWS DMS tasks, see Working with Migration Tasks in the AWS Database Migration Service User Guide.

" }, "RebootReplicationInstance":{ "name":"RebootReplicationInstance", @@ -595,7 +632,7 @@ {"shape":"InvalidResourceStateFault"}, {"shape":"AccessDeniedFault"} ], - "documentation":"

Starts the replication task.

For more information about AWS DMS tasks, see Working with Migration Tasks in the AWS Database Migration Service User Guide.

" + "documentation":"

Starts the replication task.

For more information about AWS DMS tasks, see Working with Migration Tasks in the AWS Database Migration Service User Guide.

" }, "StartReplicationTaskAssessment":{ "name":"StartReplicationTaskAssessment", @@ -651,7 +688,7 @@ "documentation":"

" } }, - "documentation":"

AWS DMS was denied access to the endpoint.

", + "documentation":"

AWS DMS was denied access to the endpoint. Check that the role is correctly configured.

", "exception":true }, "AccountQuota":{ @@ -700,6 +737,39 @@ }, "documentation":"

" }, + "ApplyPendingMaintenanceActionMessage":{ + "type":"structure", + "required":[ + "ReplicationInstanceArn", + "ApplyAction", + "OptInType" + ], + "members":{ + "ReplicationInstanceArn":{ + "shape":"String", + "documentation":"

The Amazon Resource Name (ARN) of the AWS DMS resource that the pending maintenance action applies to.

" + }, + "ApplyAction":{ + "shape":"String", + "documentation":"

The pending maintenance action to apply to this resource.

" + }, + "OptInType":{ + "shape":"String", + "documentation":"

A value that specifies the type of opt-in request, or undoes an opt-in request. An opt-in request of type immediate cannot be undone.

Valid values:

  • immediate - Apply the maintenance action immediately.

  • next-maintenance - Apply the maintenance action during the next maintenance window for the resource.

  • undo-opt-in - Cancel any existing next-maintenance opt-in requests.

" + } + }, + "documentation":"

" + }, + "ApplyPendingMaintenanceActionResponse":{ + "type":"structure", + "members":{ + "ResourcePendingMaintenanceActions":{ + "shape":"ResourcePendingMaintenanceActions", + "documentation":"

The AWS DMS resource that the pending maintenance action will be applied to.

" + } + }, + "documentation":"

" + }, "AuthMechanismValue":{ "type":"string", "enum":[ @@ -725,6 +795,10 @@ }, "documentation":"

" }, + "AvailabilityZonesList":{ + "type":"list", + "member":{"shape":"String"} + }, "Boolean":{"type":"boolean"}, "BooleanOptional":{"type":"boolean"}, "Certificate":{ @@ -889,11 +963,11 @@ }, "DynamoDbSettings":{ "shape":"DynamoDbSettings", - "documentation":"

Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to DynamoDB in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to DynamoDB in the AWS Database Migration Service User Guide.

" }, "S3Settings":{ "shape":"S3Settings", - "documentation":"

Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS in the AWS Database Migration Service User Guide.

" }, "DmsTransferSettings":{ "shape":"DmsTransferSettings", @@ -901,16 +975,17 @@ }, "MongoDbSettings":{ "shape":"MongoDbSettings", - "documentation":"

Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in Using MongoDB as a Target for AWS Database Migration Service in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in Using MongoDB as a Target for AWS Database Migration Service in the AWS Database Migration Service User Guide.

" }, "KinesisSettings":{ "shape":"KinesisSettings", - "documentation":"

Settings in JSON format for the target Amazon Kinesis Data Streams endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to a Kinesis Data Stream in the AWS Database Migration User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon Kinesis Data Streams endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to a Kinesis Data Stream in the AWS Database Migration User Guide.

" }, "ElasticsearchSettings":{ "shape":"ElasticsearchSettings", - "documentation":"

Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS in the AWS Database Migration User Guide.

" - } + "documentation":"

Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS in the AWS Database Migration User Guide.

" + }, + "RedshiftSettings":{"shape":"RedshiftSettings"} }, "documentation":"

" }, @@ -945,7 +1020,7 @@ }, "EventCategories":{ "shape":"EventCategoriesList", - "documentation":"

A list of event categories for a source type that you want to subscribe to. You can see a list of the categories for a given source type by calling the DescribeEventCategories action or in the topic Working with Events and Notifications in the AWS Database Migration Service User Guide.

" + "documentation":"

A list of event categories for a source type that you want to subscribe to. You can see a list of the categories for a given source type by calling the DescribeEventCategories action or in the topic Working with Events and Notifications in the AWS Database Migration Service User Guide.

" }, "SourceIds":{ "shape":"SourceIdsList", @@ -1122,7 +1197,7 @@ }, "ReplicationTaskSettings":{ "shape":"String", - "documentation":"

Settings for the task, such as target metadata settings. For a complete list of task settings, see Task Settings for AWS Database Migration Service Tasks in the AWS Database Migration User Guide.

" + "documentation":"

Settings for the task, such as target metadata settings. For a complete list of task settings, see Task Settings for AWS Database Migration Service Tasks in the AWS Database Migration User Guide.

" }, "CdcStartTime":{ "shape":"TStamp", @@ -1153,6 +1228,13 @@ }, "documentation":"

" }, + "DataFormatValue":{ + "type":"string", + "enum":[ + "csv", + "parquet" + ] + }, "DeleteCertificateMessage":{ "type":"structure", "required":["CertificateArn"], @@ -1559,6 +1641,42 @@ }, "documentation":"

" }, + "DescribePendingMaintenanceActionsMessage":{ + "type":"structure", + "members":{ + "ReplicationInstanceArn":{ + "shape":"String", + "documentation":"

The ARN of the replication instance.

" + }, + "Filters":{ + "shape":"FilterList", + "documentation":"

" + }, + "Marker":{ + "shape":"String", + "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" + }, + "MaxRecords":{ + "shape":"IntegerOptional", + "documentation":"

The maximum number of records to include in the response. If more records exist than the specified MaxRecords value, a pagination token called a marker is included in the response so that the remaining results can be retrieved.

Default: 100

Constraints: Minimum 20, maximum 100.

" + } + }, + "documentation":"

" + }, + "DescribePendingMaintenanceActionsResponse":{ + "type":"structure", + "members":{ + "PendingMaintenanceActions":{ + "shape":"PendingMaintenanceActions", + "documentation":"

The pending maintenance action.

" + }, + "Marker":{ + "shape":"String", + "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" + } + }, + "documentation":"

" + }, "DescribeRefreshSchemasStatusMessage":{ "type":"structure", "required":["EndpointArn"], @@ -1729,6 +1847,10 @@ "Marker":{ "shape":"String", "documentation":"

An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the marker, up to the value specified by MaxRecords.

" + }, + "WithoutSettings":{ + "shape":"BooleanOptional", + "documentation":"

Set this flag to avoid returning setting information. Use this to reduce overhead when settings are too large. Choose TRUE to use this flag, otherwise choose FALSE (default).

" } }, "documentation":"

" @@ -1881,6 +2003,21 @@ }, "documentation":"

" }, + "EncodingTypeValue":{ + "type":"string", + "enum":[ + "plain", + "plain-dictionary", + "rle-dictionary" + ] + }, + "EncryptionModeValue":{ + "type":"string", + "enum":[ + "sse-s3", + "sse-kms" + ] + }, "Endpoint":{ "type":"structure", "members":{ @@ -1962,7 +2099,7 @@ }, "DmsTransferSettings":{ "shape":"DmsTransferSettings", - "documentation":"

The settings in JSON format for the DMS transfer type of source endpoint.

Possible attributes include the following:

  • serviceAccessRoleArn - The IAM role that has permission to access the Amazon S3 bucket.

  • bucketName - The name of the S3 bucket to use.

  • compressionType - An optional parameter to use GZIP to compress the target files. To use GZIP, set this value to NONE (the default). To keep the files uncompressed, don't use this value.

Shorthand syntax for these attributes is as follows: ServiceAccessRoleArn=string,BucketName=string,CompressionType=string

JSON syntax for these attributes is as follows: { \"ServiceAccessRoleArn\": \"string\", \"BucketName\": \"string\", \"CompressionType\": \"none\"|\"gzip\" }

" + "documentation":"

The settings in JSON format for the DMS transfer type of source endpoint.

Possible attributes include the following:

  • serviceAccessRoleArn - The IAM role that has permission to access the Amazon S3 bucket.

  • bucketName - The name of the S3 bucket to use.

  • compressionType - An optional parameter to use GZIP to compress the target files. To use GZIP, set this value to NONE (the default). To keep the files uncompressed, don't use this value.

Shorthand syntax for these attributes is as follows: ServiceAccessRoleArn=string,BucketName=string,CompressionType=string

JSON syntax for these attributes is as follows: { \"ServiceAccessRoleArn\": \"string\", \"BucketName\": \"string\", \"CompressionType\": \"none\"|\"gzip\" }

" }, "MongoDbSettings":{ "shape":"MongoDbSettings", @@ -1975,6 +2112,10 @@ "ElasticsearchSettings":{ "shape":"ElasticsearchSettings", "documentation":"

The settings for the Elasticsearch source endpoint. For more information, see the ElasticsearchSettings structure.

" + }, + "RedshiftSettings":{ + "shape":"RedshiftSettings", + "documentation":"

Settings for the Amazon Redshift endpoint

" } }, "documentation":"

" @@ -2182,6 +2323,30 @@ "documentation":"

The subnet provided is invalid.

", "exception":true }, + "KMSAccessDeniedFault":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The ciphertext references a key that doesn't exist or DMS account doesn't have an access to

", + "exception":true + }, + "KMSDisabledFault":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The specified master key (CMK) isn't enabled.

", + "exception":true + }, + "KMSInvalidStateFault":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The state of the specified KMS resource isn't valid for this request.

", + "exception":true + }, "KMSKeyNotAccessibleFault":{ "type":"structure", "members":{ @@ -2193,6 +2358,22 @@ "documentation":"

AWS DMS cannot access the KMS key.

", "exception":true }, + "KMSNotFoundFault":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "documentation":"

The specified KMS entity or resource can't be found.

", + "exception":true + }, + "KMSThrottlingFault":{ + "type":"structure", + "members":{ + "message":{"shape":"ExceptionMessage"} + }, + "documentation":"

This request triggered KMS request throttling.

", + "exception":true + }, "KeyList":{ "type":"list", "member":{"shape":"String"} @@ -2311,11 +2492,11 @@ }, "DynamoDbSettings":{ "shape":"DynamoDbSettings", - "documentation":"

Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to DynamoDB in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon DynamoDB endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to DynamoDB in the AWS Database Migration Service User Guide.

" }, "S3Settings":{ "shape":"S3Settings", - "documentation":"

Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon S3 endpoint. For more information about the available settings, see Extra Connection Attributes When Using Amazon S3 as a Target for AWS DMS in the AWS Database Migration Service User Guide.

" }, "DmsTransferSettings":{ "shape":"DmsTransferSettings", @@ -2323,16 +2504,17 @@ }, "MongoDbSettings":{ "shape":"MongoDbSettings", - "documentation":"

Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in Using MongoDB as a Target for AWS Database Migration Service in the AWS Database Migration Service User Guide.

" + "documentation":"

Settings in JSON format for the source MongoDB endpoint. For more information about the available settings, see the configuration properties section in Using MongoDB as a Target for AWS Database Migration Service in the AWS Database Migration Service User Guide.

" }, "KinesisSettings":{ "shape":"KinesisSettings", - "documentation":"

Settings in JSON format for the target Amazon Kinesis Data Streams endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to a Kinesis Data Stream in the AWS Database Migration User Guide.

" + "documentation":"

Settings in JSON format for the target Amazon Kinesis Data Streams endpoint. For more information about the available settings, see Using Object Mapping to Migrate Data to a Kinesis Data Stream in the AWS Database Migration User Guide.

" }, "ElasticsearchSettings":{ "shape":"ElasticsearchSettings", - "documentation":"

Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS in the AWS Database Migration User Guide.

" - } + "documentation":"

Settings in JSON format for the target Elasticsearch endpoint. For more information about the available settings, see Extra Connection Attributes When Using Elasticsearch as a Target for AWS DMS in the AWS Database Migration User Guide.

" + }, + "RedshiftSettings":{"shape":"RedshiftSettings"} }, "documentation":"

" }, @@ -2616,6 +2798,10 @@ "IncludedAllocatedStorage":{ "shape":"Integer", "documentation":"

The amount of storage (in gigabytes) that is allocated for the replication instance.

" + }, + "AvailabilityZones":{ + "shape":"AvailabilityZonesList", + "documentation":"

List of availability zones for this replication instance.

" } }, "documentation":"

" @@ -2624,6 +2810,51 @@ "type":"list", "member":{"shape":"OrderableReplicationInstance"} }, + "ParquetVersionValue":{ + "type":"string", + "enum":[ + "parquet-1-0", + "parquet-2-0" + ] + }, + "PendingMaintenanceAction":{ + "type":"structure", + "members":{ + "Action":{ + "shape":"String", + "documentation":"

The type of pending maintenance action that is available for the resource.

" + }, + "AutoAppliedAfterDate":{ + "shape":"TStamp", + "documentation":"

The date of the maintenance window when the action will be applied. The maintenance action will be applied to the resource during its first maintenance window after this date. If this date is specified, any next-maintenance opt-in requests are ignored.

" + }, + "ForcedApplyDate":{ + "shape":"TStamp", + "documentation":"

The date when the maintenance action will be automatically applied. The maintenance action will be applied to the resource on this date regardless of the maintenance window for the resource. If this date is specified, any immediate opt-in requests are ignored.

" + }, + "OptInStatus":{ + "shape":"String", + "documentation":"

Indicates the type of opt-in request that has been received for the resource.

" + }, + "CurrentApplyDate":{ + "shape":"TStamp", + "documentation":"

The effective date when the pending maintenance action will be applied to the resource. This date takes into account opt-in requests received from the ApplyPendingMaintenanceAction API, the AutoAppliedAfterDate, and the ForcedApplyDate. This value is blank if an opt-in request has not been received and nothing has been specified as AutoAppliedAfterDate or ForcedApplyDate.

" + }, + "Description":{ + "shape":"String", + "documentation":"

A description providing more detail about the maintenance action.

" + } + }, + "documentation":"

" + }, + "PendingMaintenanceActionDetails":{ + "type":"list", + "member":{"shape":"PendingMaintenanceAction"} + }, + "PendingMaintenanceActions":{ + "type":"list", + "member":{"shape":"ResourcePendingMaintenanceActions"} + }, "RebootReplicationInstanceMessage":{ "type":"structure", "required":["ReplicationInstanceArn"], @@ -2647,6 +2878,112 @@ } } }, + "RedshiftSettings":{ + "type":"structure", + "members":{ + "AcceptAnyDate":{ + "shape":"BooleanOptional", + "documentation":"

Allows any date format, including invalid formats such as 00/00/00 00:00:00, to be loaded without generating an error. You can choose TRUE or FALSE (default).

This parameter applies only to TIMESTAMP and DATE columns. Always use ACCEPTANYDATE with the DATEFORMAT parameter. If the date format for the data does not match the DATEFORMAT specification, Amazon Redshift inserts a NULL value into that field.

" + }, + "AfterConnectScript":{ + "shape":"String", + "documentation":"

Code to run after connecting. This should be the code, not a filename.

" + }, + "BucketFolder":{ + "shape":"String", + "documentation":"

The location where the CSV files are stored before being uploaded to the S3 bucket.

" + }, + "BucketName":{ + "shape":"String", + "documentation":"

The name of the S3 bucket you want to use

" + }, + "ConnectionTimeout":{ + "shape":"IntegerOptional", + "documentation":"

Sets the amount of time to wait (in milliseconds) before timing out, beginning from when you initially establish a connection.

" + }, + "DatabaseName":{ + "shape":"String", + "documentation":"

The name of the Amazon Redshift data warehouse (service) you are working with.

" + }, + "DateFormat":{ + "shape":"String", + "documentation":"

The date format you are using. Valid values are auto (case-sensitive), your date format string enclosed in quotes, or NULL. If this is left unset (NULL), it defaults to a format of 'YYYY-MM-DD'. Using auto recognizes most strings, even some that are not supported when you use a date format string.

If your date and time values use formats different from each other, set this to auto.

" + }, + "EmptyAsNull":{ + "shape":"BooleanOptional", + "documentation":"

Specifies whether AWS DMS should migrate empty CHAR and VARCHAR fields as NULL. A value of TRUE sets empty CHAR and VARCHAR fields to null. The default is FALSE.

" + }, + "EncryptionMode":{ + "shape":"EncryptionModeValue", + "documentation":"

The type of server side encryption you want to use for your data. This is part of the endpoint settings or the extra connections attributes for Amazon S3. You can choose either SSE_S3 (default) or SSE_KMS. To use SSE_S3, create an IAM role with a policy that allows \"arn:aws:s3:::*\" to use the following actions: \"s3:PutObject\", \"s3:ListBucket\".

" + }, + "FileTransferUploadStreams":{ + "shape":"IntegerOptional", + "documentation":"

Specifies the number of threads used to upload a single file. This accepts a value between 1 and 64. It defaults to 10.

" + }, + "LoadTimeout":{ + "shape":"IntegerOptional", + "documentation":"

Sets the amount of time to wait (in milliseconds) before timing out, beginning from when you begin loading.

" + }, + "MaxFileSize":{ + "shape":"IntegerOptional", + "documentation":"

Specifies the maximum size (in KB) of any CSV file used to transfer data to Amazon Redshift. This accepts a value between 1 and 1048576. It defaults to 32768 KB (32 MB).

" + }, + "Password":{ + "shape":"SecretString", + "documentation":"

The password for the user named in the username property.

" + }, + "Port":{ + "shape":"IntegerOptional", + "documentation":"

The port number for Amazon Redshift. The default value is 5439.

" + }, + "RemoveQuotes":{ + "shape":"BooleanOptional", + "documentation":"

Removes surrounding quotation marks from strings in the incoming data. All characters within the quotation marks, including delimiters, are retained. Choose TRUE to remove quotation marks. The default is FALSE.

" + }, + "ReplaceInvalidChars":{ + "shape":"String", + "documentation":"

A list of chars you want to replace. Use with ReplaceChars.

" + }, + "ReplaceChars":{ + "shape":"String", + "documentation":"

Replaces invalid characters specified in ReplaceInvalidChars, substituting the specified value instead. The default is \"?\".

" + }, + "ServerName":{ + "shape":"String", + "documentation":"

The name of the Amazon Redshift cluster you are using.

" + }, + "ServiceAccessRoleArn":{ + "shape":"String", + "documentation":"

The ARN of the role that has access to the Redshift service.

" + }, + "ServerSideEncryptionKmsKeyId":{ + "shape":"String", + "documentation":"

If you are using SSE_KMS for the EncryptionMode, provide the KMS Key ID. The key you use needs an attached policy that enables IAM user permissions and allows use of the key.

" + }, + "TimeFormat":{ + "shape":"String", + "documentation":"

The time format you want to use. Valid values are auto (case-sensitive), 'timeformat_string', 'epochsecs', or 'epochmillisecs'. It defaults to 10. Using auto recognizes most strings, even some that are not supported when you use a time format string.

If your date and time values use formats different from each other, set this to auto.

" + }, + "TrimBlanks":{ + "shape":"BooleanOptional", + "documentation":"

Removes the trailing white space characters from a VARCHAR string. This parameter applies only to columns with a VARCHAR data type. Choose TRUE to remove unneeded white space. The default is FALSE.

" + }, + "TruncateColumns":{ + "shape":"BooleanOptional", + "documentation":"

Truncates data in columns to the appropriate number of characters, so that it fits in the column. Applies only to columns with a VARCHAR or CHAR data type, and rows with a size of 4 MB or less. Choose TRUE to truncate data. The default is FALSE.

" + }, + "Username":{ + "shape":"String", + "documentation":"

An Amazon Redshift user name for a registered user.

" + }, + "WriteBufferSize":{ + "shape":"IntegerOptional", + "documentation":"

The size of the write buffer to use in rows. Valid values range from 1 to 2048. Defaults to 1024. Use this setting to tune performance.

" + } + }, + "documentation":"

" + }, "RefreshSchemasMessage":{ "type":"structure", "required":[ @@ -3126,11 +3463,13 @@ "message":{ "shape":"ExceptionMessage", "documentation":"

" - } + }, + "resourceArn":{"shape":"ResourceArn"} }, "documentation":"

The resource you are attempting to create already exists.

", "exception":true }, + "ResourceArn":{"type":"string"}, "ResourceNotFoundFault":{ "type":"structure", "members":{ @@ -3142,6 +3481,20 @@ "documentation":"

The resource could not be found.

", "exception":true }, + "ResourcePendingMaintenanceActions":{ + "type":"structure", + "members":{ + "ResourceIdentifier":{ + "shape":"String", + "documentation":"

The Amazon Resource Name (ARN) of the DMS resource that the pending maintenance action applies to. For information about creating an ARN, see Constructing an Amazon Resource Name (ARN) in the DMS documentation.

" + }, + "PendingMaintenanceActionDetails":{ + "shape":"PendingMaintenanceActionDetails", + "documentation":"

Detailed information about the pending maintenance action.

" + } + }, + "documentation":"

" + }, "ResourceQuotaExceededFault":{ "type":"structure", "members":{ @@ -3166,7 +3519,7 @@ }, "CsvRowDelimiter":{ "shape":"String", - "documentation":"

The delimiter used to separate rows in the source files. The default is a carriage return (\\n).

" + "documentation":"

The delimiter used to separate rows in the source files. The default is a carriage return (\\n).

" }, "CsvDelimiter":{ "shape":"String", @@ -3174,7 +3527,7 @@ }, "BucketFolder":{ "shape":"String", - "documentation":"

An optional parameter to set a folder name in the S3 bucket. If provided, tables are created in the path <bucketFolder>/<schema_name>/<table_name>/. If this parameter is not specified, then the path used is <schema_name>/<table_name>/.

" + "documentation":"

An optional parameter to set a folder name in the S3 bucket. If provided, tables are created in the path <bucketFolder>/<schema_name>/<table_name>/. If this parameter is not specified, then the path used is <schema_name>/<table_name>/.

" }, "BucketName":{ "shape":"String", @@ -3182,10 +3535,50 @@ }, "CompressionType":{ "shape":"CompressionTypeValue", - "documentation":"

An optional parameter to use GZIP to compress the target files. Set to GZIP to compress the target files. Set to NONE (the default) or do not use to leave the files uncompressed.

" + "documentation":"

An optional parameter to use GZIP to compress the target files. Set to GZIP to compress the target files. Set to NONE (the default) or do not use to leave the files uncompressed. Applies to both CSV and PARQUET data formats.

" + }, + "EncryptionMode":{ + "shape":"EncryptionModeValue", + "documentation":"

The type of server side encryption you want to use for your data. This is part of the endpoint settings or the extra connections attributes for Amazon S3. You can choose either SSE_S3 (default) or SSE_KMS. To use SSE_S3, you need an IAM role with permission to allow \"arn:aws:s3:::dms-*\" to use the following actions:

  • s3:CreateBucket

  • s3:ListBucket

  • s3:DeleteBucket

  • s3:GetBucketLocation

  • s3:GetObject

  • s3:PutObject

  • s3:DeleteObject

  • s3:GetObjectVersion

  • s3:GetBucketPolicy

  • s3:PutBucketPolicy

  • s3:DeleteBucketPolicy

" + }, + "ServerSideEncryptionKmsKeyId":{ + "shape":"String", + "documentation":"

If you are using SSE_KMS for the EncryptionMode, provide the KMS Key ID. The key you use needs an attached policy that enables IAM user permissions and allows use of the key.

Here is a CLI example: aws dms create-endpoint --endpoint-identifier <value> --endpoint-type target --engine-name s3 --s3-settings ServiceAccessRoleArn=<value>,BucketFolder=<value>,BucketName=<value>,EncryptionMode=SSE_KMS,ServerSideEncryptionKmsKeyId=<value>

" + }, + "DataFormat":{ + "shape":"DataFormatValue", + "documentation":"

The format of the data which you want to use for output. You can choose one of the following:

  • CSV : This is a row-based format with comma-separated values.

  • PARQUET : Apache Parquet is a columnar storage format that features efficient compression and provides faster query response.

" + }, + "EncodingType":{ + "shape":"EncodingTypeValue", + "documentation":"

The type of encoding you are using: RLE_DICTIONARY (default), PLAIN, or PLAIN_DICTIONARY.

  • RLE_DICTIONARY uses a combination of bit-packing and run-length encoding to store repeated values more efficiently.

  • PLAIN does not use encoding at all. Values are stored as they are.

  • PLAIN_DICTIONARY builds a dictionary of the values encountered in a given column. The dictionary is stored in a dictionary page for each column chunk.

" + }, + "DictPageSizeLimit":{ + "shape":"IntegerOptional", + "documentation":"

The maximum size of an encoded dictionary page of a column. If the dictionary page exceeds this, this column is stored using an encoding type of PLAIN. Defaults to 1024 * 1024 bytes (1MiB), the maximum size of a dictionary page before it reverts to PLAIN encoding. For PARQUET format only.

" + }, + "RowGroupLength":{ + "shape":"IntegerOptional", + "documentation":"

The number of rows in a row group. A smaller row group size provides faster reads. But as the number of row groups grows, the slower writes become. Defaults to 10,000 (ten thousand) rows. For PARQUET format only.

If you choose a value larger than the maximum, RowGroupLength is set to the max row group length in bytes (64 * 1024 * 1024).

" + }, + "DataPageSize":{ + "shape":"IntegerOptional", + "documentation":"

The size of one data page in bytes. Defaults to 1024 * 1024 bytes (1MiB). For PARQUET format only.

" + }, + "ParquetVersion":{ + "shape":"ParquetVersionValue", + "documentation":"

The version of Apache Parquet format you want to use: PARQUET_1_0 (default) or PARQUET_2_0.

" + }, + "EnableStatistics":{ + "shape":"BooleanOptional", + "documentation":"

Enables statistics for Parquet pages and rowGroups. Choose TRUE to enable statistics, choose FALSE to disable. Statistics include NULL, DISTINCT, MAX, and MIN values. Defaults to TRUE. For PARQUET format only.

" + }, + "CdcInsertsOnly":{ + "shape":"BooleanOptional", + "documentation":"

Option to write only INSERT operations to the comma-separated value (CSV) output files. By default, the first field in a CSV record contains the letter I (insert), U (update) or D (delete) to indicate whether the row was inserted, updated, or deleted at the source database. If cdcInsertsOnly is set to true, then only INSERTs are recorded in the CSV file, without the I annotation on each line. Valid values are TRUE and FALSE.

" } }, - "documentation":"

" + "documentation":"

Settings for exporting data to Amazon S3.

" }, "SNSInvalidTopicFault":{ "type":"structure", @@ -3563,5 +3956,5 @@ "member":{"shape":"VpcSecurityGroupMembership"} } }, - "documentation":"AWS Database Migration Service

AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, Amazon Redshift, MariaDB, Amazon Aurora, MySQL, and SAP Adaptive Server Enterprise (ASE). The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.

For more information about AWS DMS, see What Is AWS Database Migration Service? in the AWS Database Migration User Guide.

" + "documentation":"AWS Database Migration Service

AWS Database Migration Service (AWS DMS) can migrate your data to and from the most widely used commercial and open-source databases such as Oracle, PostgreSQL, Microsoft SQL Server, Amazon Redshift, MariaDB, Amazon Aurora, MySQL, and SAP Adaptive Server Enterprise (ASE). The service supports homogeneous migrations such as Oracle to Oracle, as well as heterogeneous migrations between different database platforms, such as Oracle to MySQL or SQL Server to PostgreSQL.

For more information about AWS DMS, see What Is AWS Database Migration Service? in the AWS Database Migration User Guide.

" } diff --git a/services/datapipeline/pom.xml b/services/datapipeline/pom.xml index fff5f931dce0..e0651424fbf3 100644 --- a/services/datapipeline/pom.xml +++ b/services/datapipeline/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 datapipeline AWS Java SDK :: Services :: AWS Data Pipeline diff --git a/services/datasync/pom.xml b/services/datasync/pom.xml index f440bbda0999..f72cf4edb0ad 100644 --- a/services/datasync/pom.xml +++ b/services/datasync/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 datasync AWS Java SDK :: Services :: DataSync diff --git a/services/dax/pom.xml b/services/dax/pom.xml index 99a161f55142..d4caeac715a8 100644 --- a/services/dax/pom.xml +++ b/services/dax/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 dax AWS Java SDK :: Services :: Amazon DynamoDB Accelerator (DAX) diff --git a/services/devicefarm/pom.xml b/services/devicefarm/pom.xml index 31351998d9e0..282cd0706c94 100644 --- a/services/devicefarm/pom.xml +++ b/services/devicefarm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 devicefarm AWS Java SDK :: Services :: AWS Device Farm diff --git a/services/directconnect/pom.xml b/services/directconnect/pom.xml index 82ca7e134675..0638b6ccb961 100644 --- a/services/directconnect/pom.xml +++ b/services/directconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 directconnect AWS Java SDK :: Services :: AWS Direct Connect diff --git a/services/directory/pom.xml b/services/directory/pom.xml index 49b8ef96431f..f919450a6def 100644 --- a/services/directory/pom.xml +++ b/services/directory/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 directory AWS Java SDK :: Services :: AWS Directory Service diff --git a/services/dlm/pom.xml b/services/dlm/pom.xml index 4daa8084cec1..2555a74ae7cc 100644 --- a/services/dlm/pom.xml +++ b/services/dlm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 dlm AWS Java SDK :: Services :: DLM diff --git a/services/docdb/pom.xml b/services/docdb/pom.xml index 6a753eb10ceb..38f683eb263c 100644 --- a/services/docdb/pom.xml +++ b/services/docdb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 docdb AWS Java SDK :: Services :: DocDB diff --git a/services/dynamodb/pom.xml b/services/dynamodb/pom.xml index 8770feb126d9..17f56ae80fc9 100644 --- a/services/dynamodb/pom.xml +++ b/services/dynamodb/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 dynamodb AWS Java SDK :: Services :: Amazon DynamoDB diff --git a/services/ec2/pom.xml b/services/ec2/pom.xml index e398ffa6a517..4e2549bb42e0 100644 --- a/services/ec2/pom.xml +++ b/services/ec2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ec2 AWS Java SDK :: Services :: Amazon EC2 diff --git a/services/ec2/src/main/resources/codegen-resources/service-2.json b/services/ec2/src/main/resources/codegen-resources/service-2.json index 3490217201cf..7f603bd51c8f 100755 --- a/services/ec2/src/main/resources/codegen-resources/service-2.json +++ b/services/ec2/src/main/resources/codegen-resources/service-2.json @@ -15186,6 +15186,11 @@ "shape":"Boolean", "documentation":"

Indicates whether the AFI is public.

", "locationName":"public" + }, + "DataRetentionSupport":{ + "shape":"Boolean", + "documentation":"

Indicates whether data retention support is enabled for the AFI.

", + "locationName":"dataRetentionSupport" } }, "documentation":"

Describes an Amazon FPGA image (AFI).

" diff --git a/services/ecr/pom.xml b/services/ecr/pom.xml index d4a8b778f514..87ab6dc3bc1d 100644 --- a/services/ecr/pom.xml +++ b/services/ecr/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ecr AWS Java SDK :: Services :: Amazon EC2 Container Registry diff --git a/services/ecs/pom.xml b/services/ecs/pom.xml index 3e3d21e4d31c..e20fd483fe51 100644 --- a/services/ecs/pom.xml +++ b/services/ecs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ecs AWS Java SDK :: Services :: Amazon EC2 Container Service diff --git a/services/efs/pom.xml b/services/efs/pom.xml index 3faa3d230622..04a2f6349229 100644 --- a/services/efs/pom.xml +++ b/services/efs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 efs AWS Java SDK :: Services :: Amazon Elastic File System diff --git a/services/eks/pom.xml b/services/eks/pom.xml index 451c093bc5f8..69f4bef4d2b0 100644 --- a/services/eks/pom.xml +++ b/services/eks/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 eks AWS Java SDK :: Services :: EKS diff --git a/services/elasticache/pom.xml b/services/elasticache/pom.xml index 6341b0e7108a..273afb289f37 100644 --- a/services/elasticache/pom.xml +++ b/services/elasticache/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elasticache AWS Java SDK :: Services :: Amazon ElastiCache diff --git a/services/elasticbeanstalk/pom.xml b/services/elasticbeanstalk/pom.xml index 39cece4985dc..0737b249a96b 100644 --- a/services/elasticbeanstalk/pom.xml +++ b/services/elasticbeanstalk/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elasticbeanstalk AWS Java SDK :: Services :: AWS Elastic Beanstalk diff --git a/services/elasticloadbalancing/pom.xml b/services/elasticloadbalancing/pom.xml index 8780ed61ffc9..3736dbd38fa7 100644 --- a/services/elasticloadbalancing/pom.xml +++ b/services/elasticloadbalancing/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elasticloadbalancing AWS Java SDK :: Services :: Elastic Load Balancing diff --git a/services/elasticloadbalancingv2/pom.xml b/services/elasticloadbalancingv2/pom.xml index 4e549a074ccc..ef978ae944a0 100644 --- a/services/elasticloadbalancingv2/pom.xml +++ b/services/elasticloadbalancingv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elasticloadbalancingv2 AWS Java SDK :: Services :: Elastic Load Balancing V2 diff --git a/services/elasticsearch/pom.xml b/services/elasticsearch/pom.xml index 8233e9c6f5fe..4b8fbff28e35 100644 --- a/services/elasticsearch/pom.xml +++ b/services/elasticsearch/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elasticsearch AWS Java SDK :: Services :: Amazon Elasticsearch Service diff --git a/services/elastictranscoder/pom.xml b/services/elastictranscoder/pom.xml index a127fb321a8a..a11dabb3ce4e 100644 --- a/services/elastictranscoder/pom.xml +++ b/services/elastictranscoder/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 elastictranscoder AWS Java SDK :: Services :: Amazon Elastic Transcoder diff --git a/services/emr/pom.xml b/services/emr/pom.xml index ba8d27178c05..6b0ef430cb37 100644 --- a/services/emr/pom.xml +++ b/services/emr/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 emr AWS Java SDK :: Services :: Amazon EMR diff --git a/services/firehose/pom.xml b/services/firehose/pom.xml index 2730a2256dcf..cf6fe0780dc4 100644 --- a/services/firehose/pom.xml +++ b/services/firehose/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 firehose AWS Java SDK :: Services :: Amazon Kinesis Firehose diff --git a/services/fms/pom.xml b/services/fms/pom.xml index 2ceacafd0e29..2998cd5d4504 100644 --- a/services/fms/pom.xml +++ b/services/fms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 fms AWS Java SDK :: Services :: FMS diff --git a/services/fsx/pom.xml b/services/fsx/pom.xml index 2c8741edb6b1..2950281a21bc 100644 --- a/services/fsx/pom.xml +++ b/services/fsx/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 fsx AWS Java SDK :: Services :: FSx diff --git a/services/gamelift/pom.xml b/services/gamelift/pom.xml index 8efec386bae5..049bb34f689b 100644 --- a/services/gamelift/pom.xml +++ b/services/gamelift/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 gamelift AWS Java SDK :: Services :: AWS GameLift diff --git a/services/glacier/pom.xml b/services/glacier/pom.xml index a10455207f02..a4bafb8bf040 100644 --- a/services/glacier/pom.xml +++ b/services/glacier/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 glacier AWS Java SDK :: Services :: Amazon Glacier diff --git a/services/globalaccelerator/pom.xml b/services/globalaccelerator/pom.xml index 543fea073c85..73375610cfed 100644 --- a/services/globalaccelerator/pom.xml +++ b/services/globalaccelerator/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 globalaccelerator AWS Java SDK :: Services :: Global Accelerator diff --git a/services/glue/pom.xml b/services/glue/pom.xml index 40f47c48e635..160dccc6d4ca 100644 --- a/services/glue/pom.xml +++ b/services/glue/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 glue diff --git a/services/greengrass/pom.xml b/services/greengrass/pom.xml index 901848751d52..3c2319ce7c42 100644 --- a/services/greengrass/pom.xml +++ b/services/greengrass/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 greengrass AWS Java SDK :: Services :: AWS Greengrass diff --git a/services/guardduty/pom.xml b/services/guardduty/pom.xml index e3ef5e5e672d..e2490b6f5f9f 100644 --- a/services/guardduty/pom.xml +++ b/services/guardduty/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 guardduty diff --git a/services/health/pom.xml b/services/health/pom.xml index 250c08de2808..c65e22080092 100644 --- a/services/health/pom.xml +++ b/services/health/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 health AWS Java SDK :: Services :: AWS Health APIs and Notifications diff --git a/services/iam/pom.xml b/services/iam/pom.xml index a937bcf7d63e..98a1fd5cf360 100644 --- a/services/iam/pom.xml +++ b/services/iam/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iam AWS Java SDK :: Services :: AWS IAM diff --git a/services/inspector/pom.xml b/services/inspector/pom.xml index dcbf927b0852..7800be2d0122 100644 --- a/services/inspector/pom.xml +++ b/services/inspector/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 inspector AWS Java SDK :: Services :: Amazon Inspector Service diff --git a/services/iot/pom.xml b/services/iot/pom.xml index 6232839fb9d4..b545c79183c2 100644 --- a/services/iot/pom.xml +++ b/services/iot/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iot AWS Java SDK :: Services :: AWS IoT diff --git a/services/iot1clickdevices/pom.xml b/services/iot1clickdevices/pom.xml index b3fa0474991f..edd167cf0dc9 100644 --- a/services/iot1clickdevices/pom.xml +++ b/services/iot1clickdevices/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iot1clickdevices AWS Java SDK :: Services :: IoT 1Click Devices Service diff --git a/services/iot1clickprojects/pom.xml b/services/iot1clickprojects/pom.xml index 466212ac3fce..2c421cc93aa3 100644 --- a/services/iot1clickprojects/pom.xml +++ b/services/iot1clickprojects/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iot1clickprojects AWS Java SDK :: Services :: IoT 1Click Projects diff --git a/services/iotanalytics/pom.xml b/services/iotanalytics/pom.xml index 46fd9bd66e24..0313fce7f876 100644 --- a/services/iotanalytics/pom.xml +++ b/services/iotanalytics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iotanalytics AWS Java SDK :: Services :: IoTAnalytics diff --git a/services/iotdataplane/pom.xml b/services/iotdataplane/pom.xml index f88712b2e4f7..f9d9da0b3a89 100644 --- a/services/iotdataplane/pom.xml +++ b/services/iotdataplane/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iotdataplane AWS Java SDK :: Services :: AWS IoT Data Plane diff --git a/services/iotjobsdataplane/pom.xml b/services/iotjobsdataplane/pom.xml index 2f218cf20dd5..312e536987c3 100644 --- a/services/iotjobsdataplane/pom.xml +++ b/services/iotjobsdataplane/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 iotjobsdataplane AWS Java SDK :: Services :: IoT Jobs Data Plane diff --git a/services/kafka/pom.xml b/services/kafka/pom.xml index ee5cd006ba11..41fda094a940 100644 --- a/services/kafka/pom.xml +++ b/services/kafka/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kafka AWS Java SDK :: Services :: Kafka diff --git a/services/kinesis/pom.xml b/services/kinesis/pom.xml index 4fdc2008e2df..c820522ca557 100644 --- a/services/kinesis/pom.xml +++ b/services/kinesis/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kinesis AWS Java SDK :: Services :: Amazon Kinesis diff --git a/services/kinesisanalytics/pom.xml b/services/kinesisanalytics/pom.xml index ec65b28f57e4..64aed564bbdd 100644 --- a/services/kinesisanalytics/pom.xml +++ b/services/kinesisanalytics/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kinesisanalytics AWS Java SDK :: Services :: Amazon Kinesis Analytics diff --git a/services/kinesisanalyticsv2/pom.xml b/services/kinesisanalyticsv2/pom.xml index e1533a2d20a4..f8b1d3db4574 100644 --- a/services/kinesisanalyticsv2/pom.xml +++ b/services/kinesisanalyticsv2/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kinesisanalyticsv2 AWS Java SDK :: Services :: Kinesis Analytics V2 diff --git a/services/kinesisvideo/pom.xml b/services/kinesisvideo/pom.xml index f9315868e418..cf5227df4746 100644 --- a/services/kinesisvideo/pom.xml +++ b/services/kinesisvideo/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 kinesisvideo diff --git a/services/kinesisvideoarchivedmedia/pom.xml b/services/kinesisvideoarchivedmedia/pom.xml index 49abb0b856ef..462fcb005ff9 100644 --- a/services/kinesisvideoarchivedmedia/pom.xml +++ b/services/kinesisvideoarchivedmedia/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kinesisvideoarchivedmedia AWS Java SDK :: Services :: Kinesis Video Archived Media diff --git a/services/kinesisvideomedia/pom.xml b/services/kinesisvideomedia/pom.xml index 58b6bb1276f5..005656abaabc 100644 --- a/services/kinesisvideomedia/pom.xml +++ b/services/kinesisvideomedia/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kinesisvideomedia AWS Java SDK :: Services :: Kinesis Video Media diff --git a/services/kms/pom.xml b/services/kms/pom.xml index 096f6c1373db..271aecb63281 100644 --- a/services/kms/pom.xml +++ b/services/kms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 kms AWS Java SDK :: Services :: AWS KMS diff --git a/services/lambda/pom.xml b/services/lambda/pom.xml index 2b779f07eeda..109d00b759fe 100644 --- a/services/lambda/pom.xml +++ b/services/lambda/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 lambda AWS Java SDK :: Services :: AWS Lambda diff --git a/services/lexmodelbuilding/pom.xml b/services/lexmodelbuilding/pom.xml index 38d2f798e20e..ffb41b1cbe9d 100644 --- a/services/lexmodelbuilding/pom.xml +++ b/services/lexmodelbuilding/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 lexmodelbuilding AWS Java SDK :: Services :: Amazon Lex Model Building diff --git a/services/lexruntime/pom.xml b/services/lexruntime/pom.xml index 5692ad43c2be..1ccc50490c57 100644 --- a/services/lexruntime/pom.xml +++ b/services/lexruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 lexruntime AWS Java SDK :: Services :: Amazon Lex Runtime diff --git a/services/licensemanager/pom.xml b/services/licensemanager/pom.xml index 4ec5ba171f1f..4e19b79e0389 100644 --- a/services/licensemanager/pom.xml +++ b/services/licensemanager/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 licensemanager AWS Java SDK :: Services :: License Manager diff --git a/services/lightsail/pom.xml b/services/lightsail/pom.xml index a1df23e02c42..63ab0e1ab3e1 100644 --- a/services/lightsail/pom.xml +++ b/services/lightsail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 lightsail AWS Java SDK :: Services :: Amazon Lightsail diff --git a/services/machinelearning/pom.xml b/services/machinelearning/pom.xml index 2aaa0a77bfa9..0710013f1f3b 100644 --- a/services/machinelearning/pom.xml +++ b/services/machinelearning/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 machinelearning AWS Java SDK :: Services :: Amazon Machine Learning diff --git a/services/macie/pom.xml b/services/macie/pom.xml index 733f789714a2..075c5c7e6e8b 100644 --- a/services/macie/pom.xml +++ b/services/macie/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 macie AWS Java SDK :: Services :: Macie diff --git a/services/marketplacecommerceanalytics/pom.xml b/services/marketplacecommerceanalytics/pom.xml index 6cfb06a074dc..e5b72d56f303 100644 --- a/services/marketplacecommerceanalytics/pom.xml +++ b/services/marketplacecommerceanalytics/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 marketplacecommerceanalytics AWS Java SDK :: Services :: AWS Marketplace Commerce Analytics diff --git a/services/marketplaceentitlement/pom.xml b/services/marketplaceentitlement/pom.xml index 0c4c6c02cf3e..dab765d1536c 100644 --- a/services/marketplaceentitlement/pom.xml +++ b/services/marketplaceentitlement/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 marketplaceentitlement AWS Java SDK :: Services :: AWS Marketplace Entitlement diff --git a/services/marketplacemetering/pom.xml b/services/marketplacemetering/pom.xml index 68ab470ba602..33cf3fec5fc7 100644 --- a/services/marketplacemetering/pom.xml +++ b/services/marketplacemetering/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 marketplacemetering AWS Java SDK :: Services :: AWS Marketplace Metering Service diff --git a/services/mediaconnect/pom.xml b/services/mediaconnect/pom.xml index 405ebd5ae6d2..e7b588147c2e 100644 --- a/services/mediaconnect/pom.xml +++ b/services/mediaconnect/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 mediaconnect AWS Java SDK :: Services :: MediaConnect diff --git a/services/mediaconvert/pom.xml b/services/mediaconvert/pom.xml index 2103c55f1796..975828f88887 100644 --- a/services/mediaconvert/pom.xml +++ b/services/mediaconvert/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mediaconvert diff --git a/services/medialive/pom.xml b/services/medialive/pom.xml index 7e380fccc055..6a803ae0da70 100644 --- a/services/medialive/pom.xml +++ b/services/medialive/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 medialive diff --git a/services/mediapackage/pom.xml b/services/mediapackage/pom.xml index 8c689b021f39..2164b9ea1017 100644 --- a/services/mediapackage/pom.xml +++ b/services/mediapackage/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mediapackage diff --git a/services/mediastore/pom.xml b/services/mediastore/pom.xml index 900896582279..4f5139e43d5f 100644 --- a/services/mediastore/pom.xml +++ b/services/mediastore/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mediastore diff --git a/services/mediastoredata/pom.xml b/services/mediastoredata/pom.xml index e5e70ed588ae..f1de63663f3c 100644 --- a/services/mediastoredata/pom.xml +++ b/services/mediastoredata/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mediastoredata diff --git a/services/mediatailor/pom.xml b/services/mediatailor/pom.xml index 4b0af90c3c8d..ad104b1342f8 100644 --- a/services/mediatailor/pom.xml +++ b/services/mediatailor/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 mediatailor AWS Java SDK :: Services :: MediaTailor diff --git a/services/migrationhub/pom.xml b/services/migrationhub/pom.xml index 95f5dd6c011b..5ab8a19edbb5 100644 --- a/services/migrationhub/pom.xml +++ b/services/migrationhub/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 migrationhub diff --git a/services/mobile/pom.xml b/services/mobile/pom.xml index b1ead1ba557f..8f378f7c862b 100644 --- a/services/mobile/pom.xml +++ b/services/mobile/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mobile diff --git a/services/mq/pom.xml b/services/mq/pom.xml index 10a1abc37634..d255de8fd608 100644 --- a/services/mq/pom.xml +++ b/services/mq/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 mq diff --git a/services/mturk/pom.xml b/services/mturk/pom.xml index c78ebeead0f4..f2e1bb327043 100644 --- a/services/mturk/pom.xml +++ b/services/mturk/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 mturk AWS Java SDK :: Services :: Amazon Mechanical Turk Requester diff --git a/services/neptune/pom.xml b/services/neptune/pom.xml index b9c2bf0a64e1..ff88626b54a8 100644 --- a/services/neptune/pom.xml +++ b/services/neptune/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 neptune AWS Java SDK :: Services :: Neptune diff --git a/services/opsworks/pom.xml b/services/opsworks/pom.xml index 345f3b207025..a4353897364a 100644 --- a/services/opsworks/pom.xml +++ b/services/opsworks/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 opsworks AWS Java SDK :: Services :: AWS OpsWorks diff --git a/services/opsworkscm/pom.xml b/services/opsworkscm/pom.xml index faf08ff2b66d..89ae771bf50e 100644 --- a/services/opsworkscm/pom.xml +++ b/services/opsworkscm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 opsworkscm AWS Java SDK :: Services :: AWS OpsWorks for Chef Automate diff --git a/services/organizations/pom.xml b/services/organizations/pom.xml index db0054826bcb..065465c22461 100644 --- a/services/organizations/pom.xml +++ b/services/organizations/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 organizations AWS Java SDK :: Services :: AWS Organizations diff --git a/services/pi/pom.xml b/services/pi/pom.xml index 4b13c7a710d6..24e4e47efad6 100644 --- a/services/pi/pom.xml +++ b/services/pi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 pi AWS Java SDK :: Services :: PI diff --git a/services/pinpoint/pom.xml b/services/pinpoint/pom.xml index d6239e0e972c..982ba16e490c 100644 --- a/services/pinpoint/pom.xml +++ b/services/pinpoint/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 pinpoint AWS Java SDK :: Services :: Amazon Pinpoint diff --git a/services/pinpointemail/pom.xml b/services/pinpointemail/pom.xml index 43d5792c0228..c0caeae03a97 100644 --- a/services/pinpointemail/pom.xml +++ b/services/pinpointemail/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 pinpointemail AWS Java SDK :: Services :: Pinpoint Email diff --git a/services/pinpointsmsvoice/pom.xml b/services/pinpointsmsvoice/pom.xml index 5034731a5cf2..52626d7a28bf 100644 --- a/services/pinpointsmsvoice/pom.xml +++ b/services/pinpointsmsvoice/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 pinpointsmsvoice AWS Java SDK :: Services :: Pinpoint SMS Voice diff --git a/services/polly/pom.xml b/services/polly/pom.xml index c3ea87e28244..ba9a6035b304 100644 --- a/services/polly/pom.xml +++ b/services/polly/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 polly AWS Java SDK :: Services :: Amazon Polly diff --git a/services/pom.xml b/services/pom.xml index d83af6ca0cb7..2d89ead97b68 100644 --- a/services/pom.xml +++ b/services/pom.xml @@ -4,7 +4,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 services AWS Java SDK :: Services diff --git a/services/pricing/pom.xml b/services/pricing/pom.xml index f53af2de81ca..180c01b8d033 100644 --- a/services/pricing/pom.xml +++ b/services/pricing/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 pricing diff --git a/services/quicksight/pom.xml b/services/quicksight/pom.xml index 803e6c156758..1cd9f2cf7b2c 100644 --- a/services/quicksight/pom.xml +++ b/services/quicksight/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 quicksight AWS Java SDK :: Services :: QuickSight diff --git a/services/ram/pom.xml b/services/ram/pom.xml index 3b2b4fb3b6e2..318d490e4de8 100644 --- a/services/ram/pom.xml +++ b/services/ram/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ram AWS Java SDK :: Services :: RAM diff --git a/services/rds/pom.xml b/services/rds/pom.xml index 22262b9811ba..88defe408182 100644 --- a/services/rds/pom.xml +++ b/services/rds/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 rds AWS Java SDK :: Services :: Amazon RDS diff --git a/services/rdsdata/pom.xml b/services/rdsdata/pom.xml index 12be9b43e0d5..cd08805faba7 100644 --- a/services/rdsdata/pom.xml +++ b/services/rdsdata/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 rdsdata AWS Java SDK :: Services :: RDS Data diff --git a/services/redshift/pom.xml b/services/redshift/pom.xml index 7d53bd2dc625..381b1783d569 100644 --- a/services/redshift/pom.xml +++ b/services/redshift/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 redshift AWS Java SDK :: Services :: Amazon Redshift diff --git a/services/rekognition/pom.xml b/services/rekognition/pom.xml index 0222da19fb49..2a5c7f88ef0e 100644 --- a/services/rekognition/pom.xml +++ b/services/rekognition/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 rekognition AWS Java SDK :: Services :: Amazon Rekognition diff --git a/services/resourcegroups/pom.xml b/services/resourcegroups/pom.xml index 79f9d78ba1f0..bfed7b4e3eb5 100644 --- a/services/resourcegroups/pom.xml +++ b/services/resourcegroups/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 resourcegroups diff --git a/services/resourcegroupstaggingapi/pom.xml b/services/resourcegroupstaggingapi/pom.xml index 4956c656744f..c2b560bd250b 100644 --- a/services/resourcegroupstaggingapi/pom.xml +++ b/services/resourcegroupstaggingapi/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 resourcegroupstaggingapi AWS Java SDK :: Services :: AWS Resource Groups Tagging API diff --git a/services/robomaker/pom.xml b/services/robomaker/pom.xml index 78f1292a4701..1f2633be297a 100644 --- a/services/robomaker/pom.xml +++ b/services/robomaker/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 robomaker AWS Java SDK :: Services :: RoboMaker diff --git a/services/route53/pom.xml b/services/route53/pom.xml index efcf498342b9..f8d0d6145cc7 100644 --- a/services/route53/pom.xml +++ b/services/route53/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 route53 AWS Java SDK :: Services :: Amazon Route53 diff --git a/services/route53domains/pom.xml b/services/route53domains/pom.xml index ee90cb455117..f7f89ee168e8 100644 --- a/services/route53domains/pom.xml +++ b/services/route53domains/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 route53domains AWS Java SDK :: Services :: Amazon Route53 Domains diff --git a/services/route53resolver/pom.xml b/services/route53resolver/pom.xml index ea367f6b0341..0bec39d0b767 100644 --- a/services/route53resolver/pom.xml +++ b/services/route53resolver/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 route53resolver AWS Java SDK :: Services :: Route53Resolver diff --git a/services/s3/pom.xml b/services/s3/pom.xml index d70c4eee6a1e..b38e443d78c5 100644 --- a/services/s3/pom.xml +++ b/services/s3/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 s3 AWS Java SDK :: Services :: Amazon S3 diff --git a/services/s3/src/it/java/software/amazon/awssdk/services/s3/BucketAccelerateIntegrationTest.java b/services/s3/src/it/java/software/amazon/awssdk/services/s3/BucketAccelerateIntegrationTest.java index c8559ff6f272..79cf1b963a72 100644 --- a/services/s3/src/it/java/software/amazon/awssdk/services/s3/BucketAccelerateIntegrationTest.java +++ b/services/s3/src/it/java/software/amazon/awssdk/services/s3/BucketAccelerateIntegrationTest.java @@ -24,6 +24,9 @@ import org.junit.BeforeClass; import org.junit.Ignore; import org.junit.Test; +import software.amazon.awssdk.core.interceptor.Context; +import software.amazon.awssdk.core.interceptor.ExecutionAttributes; +import software.amazon.awssdk.core.interceptor.ExecutionInterceptor; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.model.AccelerateConfiguration; @@ -49,10 +52,6 @@ /** * Integration tests for S3 bucket accelerate configuration. */ -// TODO: "These tests are a bit flaky. Looks like S3 returns 307 Temporary Redirect occasionally -// for a newly accelerated bucket. Not sure what the right fix is without following redirects -// which we don't want to do for other reasons. -@Ignore public class BucketAccelerateIntegrationTest extends S3IntegrationTestBase { private static final String US_BUCKET_NAME = temporaryBucketName("s3-accelerate-us-east-1"); @@ -70,6 +69,7 @@ public static void setup() throws Exception { .serviceConfiguration(S3Configuration.builder() .accelerateModeEnabled(true) .build()) + .overrideConfiguration(o -> o.addExecutionInterceptor(new AccelerateValidatingInterceptor())) .build(); setUpBuckets(); @@ -84,47 +84,6 @@ private static void setUpBuckets() { createBucket(US_BUCKET_NAME); } - @Test - public void testControlPlaneOperationsUnderAccelerateMode() throws Exception { - enableAccelerateOnBucket(); - - Tagging tags = Tagging.builder() - .tagSet(Tag.builder() - .key("foo") - .value("bar") - .build()) - .build(); - - accelerateClient.putBucketTagging(PutBucketTaggingRequest.builder().bucket(US_BUCKET_NAME).tagging(tags).build()); - accelerateClient.putBucketVersioning(PutBucketVersioningRequest.builder() - .bucket(US_BUCKET_NAME) - .versioningConfiguration( - VersioningConfiguration.builder() - .status("Enabled") - .build()) - .build()); - - // Retry a couple of times due to eventual consistency - RetryableAssertion.doRetryableAssert(new AssertCallable() { - @Override - public void doAssert() { - List taggingConfiguration = accelerateClient - .getBucketTagging(GetBucketTaggingRequest.builder().bucket(US_BUCKET_NAME).build()).tagSet(); - - assertEquals("foo", taggingConfiguration.get(0).key()); - assertEquals("bar", taggingConfiguration.get(0).value()); - } - }, new RetryableParams().withMaxAttempts(30).withDelayInMs(200)); - - assertEquals(BucketVersioningStatus.ENABLED, - accelerateClient.getBucketVersioning(GetBucketVersioningRequest.builder() - .bucket(US_BUCKET_NAME) - .build()) - .status()); - - accelerateClient.deleteBucketTagging(DeleteBucketTaggingRequest.builder().bucket(US_BUCKET_NAME).build()); - } - @Test public void testUpdateAccelerateConfiguration() throws InterruptedException { @@ -166,11 +125,15 @@ public void testAccelerateEndpoint() throws Exception { // PutObject File uploadFile = new RandomTempFile(KEY_NAME, 1000); - accelerateClient.putObject(PutObjectRequest.builder() - .bucket(US_BUCKET_NAME) - .key(KEY_NAME) - .build(), - RequestBody.fromFile(uploadFile)); + try { + accelerateClient.putObject(PutObjectRequest.builder() + .bucket(US_BUCKET_NAME) + .key(KEY_NAME) + .build(), + RequestBody.fromFile(uploadFile)); + } catch (Exception e) { + // We really only need to verify the request is using the accelerate endpoint + } } private void enableAccelerateOnBucket() throws InterruptedException { @@ -204,4 +167,14 @@ public void testUnsupportedOperationsUnderAccelerateMode() { //fail("Exception is not expected!"); } } + + private static final class AccelerateValidatingInterceptor implements ExecutionInterceptor { + + @Override + public void beforeTransmission(Context.BeforeTransmission context, ExecutionAttributes executionAttributes) { + if (!(context.request() instanceof ListBucketsRequest)) { + assertEquals(context.httpRequest().host(), US_BUCKET_NAME + ".s3-accelerate.amazonaws.com"); + } + } + } } diff --git a/services/s3/src/it/java/software/amazon/awssdk/services/s3/UploadLargeObjectIntegrationTest.java b/services/s3/src/it/java/software/amazon/awssdk/services/s3/UploadLargeObjectIntegrationTest.java index 0368a8016011..5a4c79de7720 100644 --- a/services/s3/src/it/java/software/amazon/awssdk/services/s3/UploadLargeObjectIntegrationTest.java +++ b/services/s3/src/it/java/software/amazon/awssdk/services/s3/UploadLargeObjectIntegrationTest.java @@ -28,7 +28,6 @@ import software.amazon.awssdk.testutils.RandomTempFile; import software.amazon.awssdk.utils.IoUtils; -@Ignore("The tests are intended to run manually as it can take a relatively long time") public class UploadLargeObjectIntegrationTest extends S3IntegrationTestBase { private static final String BUCKET = temporaryBucketName(UploadLargeObjectIntegrationTest.class); @@ -51,13 +50,13 @@ public static void tearDownFixture() { } @Test - public void syncPutLargeObject() throws Exception { + public void syncPutLargeObject() { s3.putObject(b -> b.bucket(BUCKET).key(SYNC_KEY), file.toPath()); verifyResponse(SYNC_KEY); } @Test - public void asyncPutLargeObject() throws Exception { + public void asyncPutLargeObject() { s3Async.putObject(b -> b.bucket(BUCKET).key(ASYNC_KEY), file.toPath()).join(); verifyResponse(ASYNC_KEY); } diff --git a/services/s3/src/it/java/software/amazon/awssdk/services/s3/UserMetadataIntegrationTest.java b/services/s3/src/it/java/software/amazon/awssdk/services/s3/UserMetadataIntegrationTest.java index 995fcb5dceb1..94e82315769f 100644 --- a/services/s3/src/it/java/software/amazon/awssdk/services/s3/UserMetadataIntegrationTest.java +++ b/services/s3/src/it/java/software/amazon/awssdk/services/s3/UserMetadataIntegrationTest.java @@ -36,6 +36,8 @@ public class UserMetadataIntegrationTest extends S3IntegrationTestBase { * The S3 bucket created and used by these tests. */ private static final String BUCKET_NAME = temporaryBucketName("user-metadata-integ-test"); + + private static final String KEY = "UserMetadataIntegrationTest"; /** * Length of the data uploaded to S3. */ @@ -54,6 +56,10 @@ public static void initializeTestData() throws Exception { createBucket(BUCKET_NAME); file = new RandomTempFile("user-metadata-integ-test-" + new Date().getTime(), CONTENT_LENGTH); + s3.putObject(PutObjectRequest.builder() + .bucket(BUCKET_NAME) + .key(KEY) + .build(), file.toPath()); } @AfterClass @@ -67,11 +73,15 @@ public void putObject_PutsUserMetadata() throws Exception { userMetadata.put("thing1", "IAmThing1"); userMetadata.put("thing2", "IAmThing2"); + String mixedCasePrefix = "x-AmZ-mEtA-"; + String metadataKey = "test"; + final String key = "user-metadata-key"; s3.putObject(PutObjectRequest.builder() .bucket(BUCKET_NAME) .key(key) .metadata(userMetadata) + .overrideConfiguration(b -> b.putHeader(mixedCasePrefix + metadataKey, "test")) .build(), RequestBody.fromFile(file)); @@ -83,5 +93,6 @@ public void putObject_PutsUserMetadata() throws Exception { Map returnedMetadata = response.metadata(); assertThat(returnedMetadata).containsAllEntriesOf(userMetadata); + assertThat(returnedMetadata).containsKey(metadataKey); } } diff --git a/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/handlers/PutObjectHeaderTest.java b/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/handlers/PutObjectHeaderTest.java index 13edbfabb01b..e03ff18547f8 100644 --- a/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/handlers/PutObjectHeaderTest.java +++ b/services/s3/src/test/java/software/amazon/awssdk/services/s3/internal/handlers/PutObjectHeaderTest.java @@ -23,6 +23,7 @@ import static com.github.tomakehurst.wiremock.client.WireMock.stubFor; import static com.github.tomakehurst.wiremock.client.WireMock.urlMatching; import static com.github.tomakehurst.wiremock.client.WireMock.verify; +import static org.assertj.core.api.Assertions.assertThat; import static software.amazon.awssdk.http.Header.CONTENT_LENGTH; import static software.amazon.awssdk.http.Header.CONTENT_TYPE; @@ -41,6 +42,7 @@ import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.S3Configuration; +import software.amazon.awssdk.services.s3.model.HeadObjectResponse; import software.amazon.awssdk.services.s3.model.PutObjectRequest; import software.amazon.awssdk.testutils.RandomTempFile; @@ -135,6 +137,22 @@ public void putObjectWithContentTypeHeader_shouldNotOverrideContentTypeInRawConf verify(putRequestedFor(anyUrl()).withHeader(CONTENT_TYPE, equalTo(contentType))); } + @Test + public void headObject_userMetadataReturnMixedCaseMetadata() { + String lowerCaseMetadataPrefix = "x-amz-meta-"; + String mixedCaseMetadataPrefix = "X-AmZ-MEta-"; + String metadataKey = "foo"; + String mixedCaseMetadataKey = "bAr"; + + stubFor(any(urlMatching(".*")) + .willReturn(response().withHeader(lowerCaseMetadataPrefix + metadataKey, "test") + .withHeader(mixedCaseMetadataPrefix + mixedCaseMetadataKey, "test"))); + HeadObjectResponse headObjectResponse = s3Client.headObject(b -> b.key("key").bucket("bucket")); + + assertThat(headObjectResponse.metadata()).containsKey(metadataKey); + assertThat(headObjectResponse.metadata()).containsKey(mixedCaseMetadataKey); + } + private ResponseDefinitionBuilder response() { return aResponse().withStatus(200).withHeader(CONTENT_LENGTH, "0").withBody(""); } diff --git a/services/sagemaker/pom.xml b/services/sagemaker/pom.xml index a454f021d25e..a1b0b754cb7c 100644 --- a/services/sagemaker/pom.xml +++ b/services/sagemaker/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 sagemaker diff --git a/services/sagemakerruntime/pom.xml b/services/sagemakerruntime/pom.xml index 6fdb27b74397..904849dae034 100644 --- a/services/sagemakerruntime/pom.xml +++ b/services/sagemakerruntime/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sagemakerruntime AWS Java SDK :: Services :: SageMaker Runtime diff --git a/services/secretsmanager/pom.xml b/services/secretsmanager/pom.xml index 9edad513d005..b189b4888ba8 100644 --- a/services/secretsmanager/pom.xml +++ b/services/secretsmanager/pom.xml @@ -22,7 +22,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 secretsmanager AWS Java SDK :: Services :: AWS Secrets Manager diff --git a/services/securityhub/pom.xml b/services/securityhub/pom.xml index 35119561f221..f78b57050715 100644 --- a/services/securityhub/pom.xml +++ b/services/securityhub/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 securityhub AWS Java SDK :: Services :: SecurityHub diff --git a/services/serverlessapplicationrepository/pom.xml b/services/serverlessapplicationrepository/pom.xml index 432c493dee4a..42d69c92b9d8 100644 --- a/services/serverlessapplicationrepository/pom.xml +++ b/services/serverlessapplicationrepository/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 serverlessapplicationrepository diff --git a/services/servicecatalog/pom.xml b/services/servicecatalog/pom.xml index 634645a1b3c5..ac336994a3a3 100644 --- a/services/servicecatalog/pom.xml +++ b/services/servicecatalog/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 servicecatalog AWS Java SDK :: Services :: AWS Service Catalog diff --git a/services/servicediscovery/pom.xml b/services/servicediscovery/pom.xml index 80df0f60aeed..1db62ddee8eb 100644 --- a/services/servicediscovery/pom.xml +++ b/services/servicediscovery/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 servicediscovery diff --git a/services/ses/pom.xml b/services/ses/pom.xml index 00f8d5a72037..2068cb7adc54 100644 --- a/services/ses/pom.xml +++ b/services/ses/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ses AWS Java SDK :: Services :: Amazon SES diff --git a/services/sfn/pom.xml b/services/sfn/pom.xml index a0c8f1c133cf..b8b4b1231961 100644 --- a/services/sfn/pom.xml +++ b/services/sfn/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sfn AWS Java SDK :: Services :: AWS Step Functions diff --git a/services/shield/pom.xml b/services/shield/pom.xml index a948f571aef5..7d89e23e32fe 100644 --- a/services/shield/pom.xml +++ b/services/shield/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 shield AWS Java SDK :: Services :: AWS Shield diff --git a/services/signer/pom.xml b/services/signer/pom.xml index 0af092a57ef4..458db4808327 100644 --- a/services/signer/pom.xml +++ b/services/signer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 signer AWS Java SDK :: Services :: signer diff --git a/services/sms/pom.xml b/services/sms/pom.xml index 7623493310cc..422f38fb003b 100644 --- a/services/sms/pom.xml +++ b/services/sms/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sms AWS Java SDK :: Services :: AWS Server Migration diff --git a/services/snowball/pom.xml b/services/snowball/pom.xml index 57fb9cc419db..80365b1f77e4 100644 --- a/services/snowball/pom.xml +++ b/services/snowball/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 snowball AWS Java SDK :: Services :: Amazon Snowball diff --git a/services/sns/pom.xml b/services/sns/pom.xml index f3b1ba18d8fb..7f4a62d68f7b 100644 --- a/services/sns/pom.xml +++ b/services/sns/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sns AWS Java SDK :: Services :: Amazon SNS diff --git a/services/sqs/pom.xml b/services/sqs/pom.xml index b984bf729f21..aba7bcd6cab4 100644 --- a/services/sqs/pom.xml +++ b/services/sqs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sqs AWS Java SDK :: Services :: Amazon SQS diff --git a/services/ssm/pom.xml b/services/ssm/pom.xml index 17da5c53d6fe..3090f804c0c8 100644 --- a/services/ssm/pom.xml +++ b/services/ssm/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 ssm AWS Java SDK :: Services :: AWS Simple Systems Management (SSM) diff --git a/services/storagegateway/pom.xml b/services/storagegateway/pom.xml index 15a044ef9142..d0627a5024bc 100644 --- a/services/storagegateway/pom.xml +++ b/services/storagegateway/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 storagegateway AWS Java SDK :: Services :: AWS Storage Gateway diff --git a/services/sts/pom.xml b/services/sts/pom.xml index 65f155f7996e..f19c810297bc 100644 --- a/services/sts/pom.xml +++ b/services/sts/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 sts AWS Java SDK :: Services :: AWS STS diff --git a/services/support/pom.xml b/services/support/pom.xml index e855a23e7d58..7d05c3128277 100644 --- a/services/support/pom.xml +++ b/services/support/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 support AWS Java SDK :: Services :: AWS Support diff --git a/services/swf/pom.xml b/services/swf/pom.xml index 9e6464503586..a05c96725110 100644 --- a/services/swf/pom.xml +++ b/services/swf/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 swf AWS Java SDK :: Services :: Amazon SWF diff --git a/services/textract/pom.xml b/services/textract/pom.xml index e9f9f95c8bad..795c5f96427e 100644 --- a/services/textract/pom.xml +++ b/services/textract/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 textract AWS Java SDK :: Services :: Textract diff --git a/services/transcribe/pom.xml b/services/transcribe/pom.xml index 46d5746eaa9b..31d9c829ddfa 100644 --- a/services/transcribe/pom.xml +++ b/services/transcribe/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 transcribe AWS Java SDK :: Services :: Transcribe diff --git a/services/transcribestreaming/pom.xml b/services/transcribestreaming/pom.xml index a518edec691b..81e097d28c57 100644 --- a/services/transcribestreaming/pom.xml +++ b/services/transcribestreaming/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 transcribestreaming AWS Java SDK :: Services :: AWS Transcribe Streaming diff --git a/services/transfer/pom.xml b/services/transfer/pom.xml index 50d84e99d8b1..bb4e3f22c160 100644 --- a/services/transfer/pom.xml +++ b/services/transfer/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 transfer AWS Java SDK :: Services :: Transfer diff --git a/services/translate/pom.xml b/services/translate/pom.xml index 10475a00e1de..c36e714bc63e 100644 --- a/services/translate/pom.xml +++ b/services/translate/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 translate diff --git a/services/waf/pom.xml b/services/waf/pom.xml index f923264f70c7..927589eda18e 100644 --- a/services/waf/pom.xml +++ b/services/waf/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 waf AWS Java SDK :: Services :: AWS WAF diff --git a/services/workdocs/pom.xml b/services/workdocs/pom.xml index 02dc34a2622f..a7fb7437448c 100644 --- a/services/workdocs/pom.xml +++ b/services/workdocs/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 workdocs AWS Java SDK :: Services :: Amazon WorkDocs diff --git a/services/worklink/pom.xml b/services/worklink/pom.xml index fcbda0874285..975245e6824f 100644 --- a/services/worklink/pom.xml +++ b/services/worklink/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 worklink AWS Java SDK :: Services :: WorkLink diff --git a/services/workmail/pom.xml b/services/workmail/pom.xml index 4ecc749b7333..5abc46cf7c9c 100644 --- a/services/workmail/pom.xml +++ b/services/workmail/pom.xml @@ -20,7 +20,7 @@ services software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 workmail diff --git a/services/workspaces/pom.xml b/services/workspaces/pom.xml index a6337d86ba4b..a435f6695260 100644 --- a/services/workspaces/pom.xml +++ b/services/workspaces/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 workspaces AWS Java SDK :: Services :: Amazon WorkSpaces diff --git a/services/xray/pom.xml b/services/xray/pom.xml index f3e139e88687..db02fa018d67 100644 --- a/services/xray/pom.xml +++ b/services/xray/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk services - 2.5.10 + 2.5.11 xray AWS Java SDK :: Services :: AWS X-Ray diff --git a/test/codegen-generated-classes-test/pom.xml b/test/codegen-generated-classes-test/pom.xml index a14fbe310ad0..8e9454c58572 100644 --- a/test/codegen-generated-classes-test/pom.xml +++ b/test/codegen-generated-classes-test/pom.xml @@ -6,7 +6,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml diff --git a/test/dynamodbdocument-v1/pom.xml b/test/dynamodbdocument-v1/pom.xml index d40ccf47bc2c..6fd7b57744bc 100644 --- a/test/dynamodbdocument-v1/pom.xml +++ b/test/dynamodbdocument-v1/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml dynamodbdocument-v1 diff --git a/test/dynamodbmapper-v1/pom.xml b/test/dynamodbmapper-v1/pom.xml index 9e2efc4d5075..bec207c85a3a 100644 --- a/test/dynamodbmapper-v1/pom.xml +++ b/test/dynamodbmapper-v1/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml dynamodbmapper-v1 diff --git a/test/http-client-tests/pom.xml b/test/http-client-tests/pom.xml index eef1e8fa8f20..df1abfed352d 100644 --- a/test/http-client-tests/pom.xml +++ b/test/http-client-tests/pom.xml @@ -21,7 +21,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml http-client-tests diff --git a/test/module-path-tests/pom.xml b/test/module-path-tests/pom.xml index bdc08273d42d..7d2cd56730b5 100644 --- a/test/module-path-tests/pom.xml +++ b/test/module-path-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml 4.0.0 diff --git a/test/protocol-tests-core/pom.xml b/test/protocol-tests-core/pom.xml index b32fd12f036a..9b4c3fe5db97 100644 --- a/test/protocol-tests-core/pom.xml +++ b/test/protocol-tests-core/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml 4.0.0 diff --git a/test/protocol-tests-core/src/main/resources/software/amazon/awssdk/protocol/suites/cases/rest-xml-output.json b/test/protocol-tests-core/src/main/resources/software/amazon/awssdk/protocol/suites/cases/rest-xml-output.json index 492dcffc90b9..72cc4a9081a9 100644 --- a/test/protocol-tests-core/src/main/resources/software/amazon/awssdk/protocol/suites/cases/rest-xml-output.json +++ b/test/protocol-tests-core/src/main/resources/software/amazon/awssdk/protocol/suites/cases/rest-xml-output.json @@ -310,5 +310,29 @@ "stringMember": "" } } + }, + { + "description": "Map headers are unmarshalled correctly", + "given": { + "response": { + "status_code": 200, + "headers": { + "x-amz-meta-FoO": "foo", + "X-aMZ-mEtA-bAr": "bar" + } + } + }, + "when": { + "action": "unmarshall", + "operation": "MembersInHeaders" + }, + "then": { + "deserializedAs": { + "MetadataMember": { + "FoO": "foo", + "bAr": "bar" + } + } + } } ] diff --git a/test/protocol-tests/pom.xml b/test/protocol-tests/pom.xml index 1617bbfc864a..5e8d50e63829 100644 --- a/test/protocol-tests/pom.xml +++ b/test/protocol-tests/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 ../../pom.xml 4.0.0 diff --git a/test/protocol-tests/src/main/resources/codegen-resources/restxml/service-2.json b/test/protocol-tests/src/main/resources/codegen-resources/restxml/service-2.json index 6d7e33f6bb06..bd1e5514dd4b 100644 --- a/test/protocol-tests/src/main/resources/codegen-resources/restxml/service-2.json +++ b/test/protocol-tests/src/main/resources/codegen-resources/restxml/service-2.json @@ -295,6 +295,11 @@ "shape":"Timestamp", "location":"header", "locationName":"x-amz-timestamp" + }, + "MetadataMember":{ + "shape":"Metadata", + "location":"header", + "locationName":"x-amz-meta-" } } }, @@ -535,12 +540,6 @@ }, "exception":true }, - "EmptyModeledException":{ - "type":"structure", - "members":{ - }, - "exception":true - }, "ExplicitPayloadAndHeadersException":{ "type":"structure", "members":{ @@ -584,6 +583,13 @@ "exception":true, "payload":"PayloadMember" }, - "Timestamp":{"type":"timestamp"} + "Timestamp":{"type":"timestamp"}, + "Metadata":{ + "type":"map", + "key":{"shape":"MetadataKey"}, + "value":{"shape":"MetadataValue"} + }, + "MetadataKey":{"type":"string"}, + "MetadataValue":{"type":"string"} } } diff --git a/test/sdk-benchmarks/pom.xml b/test/sdk-benchmarks/pom.xml index 4a46f02db7b8..a33465f87f54 100755 --- a/test/sdk-benchmarks/pom.xml +++ b/test/sdk-benchmarks/pom.xml @@ -19,7 +19,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../../pom.xml @@ -29,26 +29,39 @@ AWS Java SDK :: Test :: SDK Benchmarks Contains JMH benchmark code for the SDK - - - - software.amazon.awssdk - bom-internal - ${project.version} - pom - import - - - + + UTF-8 + + + 1.21 + + + 1.8 + + + benchmarks + + 1.11.404 + 2.9.6 + 1.6.0 + org.openjdk.jmh jmh-core + ${jmh.version} org.openjdk.jmh jmh-generator-annprocess + ${jmh.version} provided @@ -57,104 +70,152 @@ aws-java-sdk-core ${sdk-v1.version} + com.amazonaws aws-java-sdk-dynamodb ${sdk-v1.version} - - com.amazonaws - aws-java-sdk-ec2 - ${sdk-v1.version} - software.amazon.awssdk dynamodb ${awsjavasdk.version} + + + com.amazonaws + aws-java-sdk-ec2 + ${sdk-v1.version} + + software.amazon.awssdk ec2 ${awsjavasdk.version} + software.amazon.awssdk aws-query-protocol ${awsjavasdk.version} + software.amazon.awssdk aws-json-protocol ${awsjavasdk.version} + software.amazon.awssdk protocol-core ${awsjavasdk.version} + software.amazon.awssdk sdk-core ${awsjavasdk.version} + software.amazon.awssdk http-client-spi ${awsjavasdk.version} + + software.amazon.awssdk + url-connection-client + ${awsjavasdk.version} + + + software.amazon.awssdk + regions + ${awsjavasdk.version} + + + software.amazon.awssdk + auth + ${awsjavasdk.version} + + + software.amazon.awssdk + apache-client + ${awsjavasdk.version} + + + software.amazon.awssdk + protocol-tests + ${awsjavasdk.version} + compile + + + org.slf4j + slf4j-log4j12 + 1.7.25 + + + org.eclipse.jetty + jetty-servlet + 9.2.22.v20170606 + - - UTF-8 - benchmarks - - 1.11.404 - 2.9.8 - + + + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-core + ${jackson.version} + + + com.fasterxml.jackson.core + jackson-annotations + 2.9.0 + + + software.amazon.awssdk + bom-internal + ${awsjavasdk.version} + pom + import + + + - - - org.apache.maven.plugins - maven-shade-plugin - 2.2 - - - package - - shade - - - ${uberjar.name} - - - org.openjdk.jmh.Main - - - - - - *:* - - META-INF/*.SF - META-INF/*.DSA - META-INF/*.RSA - - - - - - - - + + + src/main/resources + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.1 + + + ${javac.target} + ${javac.target} + ${javac.target} + + + + compile + none + + + false + maven-clean-plugin 2.5 @@ -193,6 +254,85 @@ + + + org.apache.maven.plugins + maven-compiler-plugin + + + org.apache.maven.plugins + maven-shade-plugin + 2.2 + + + package + + shade + + + ${uberjar.name} + + + org.openjdk.jmh.Main + + + + + + *:* + + META-INF/*.SF + META-INF/*.DSA + META-INF/*.RSA + + + + + + + + + org.codehaus.mojo + + exec-maven-plugin + ${exec-maven-plugin.version} + + java + + -classpath + + software.amazon.awssdk.benchmark.BenchmarkRunner + + + + + com.github.spotbugs + spotbugs-maven-plugin + + + true + + + + org.apache.maven.plugins + maven-dependency-plugin + + + + analyze-only + + + + + + true + + + diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkResultProcessor.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkResultProcessor.java new file mode 100644 index 000000000000..a77deb445091 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkResultProcessor.java @@ -0,0 +1,117 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark; + +import com.amazonaws.util.CollectionUtils; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.StringJoiner; +import org.openjdk.jmh.infra.BenchmarkParams; +import org.openjdk.jmh.results.Result; +import org.openjdk.jmh.results.RunResult; +import software.amazon.awssdk.utils.Logger; + + +/** + * Process benchmark score, compare the result with the baseline score and return + * the names of the benchmarks that exceed the baseline score. + */ +class BenchmarkResultProcessor { + + private static final Logger log = Logger.loggerFor(BenchmarkResultProcessor.class); + + private final Map benchmarkIdToBaselineScore; + private List failedBenchmarkNames = new ArrayList<>(); + + BenchmarkResultProcessor(List benchmarkScores) { + this.benchmarkIdToBaselineScore = constructBenchmarkIdToScoreMap(benchmarkScores); + } + + /** + * Process benchmark results + * @param results the results of the benchmark + * @return the benchmark name that failed the test + */ + List processBenchmarkResult(Collection results) { + + for (RunResult result : results) { + String benchmarkId = retrieveBenchmarkId(result); + Double baseline = benchmarkIdToBaselineScore.getOrDefault(benchmarkId, Double.MAX_VALUE); + + double calibratedScore = calibrateScore(result.getPrimaryResult()); + if (calibratedScore > baseline) { + failedBenchmarkNames.add(benchmarkId); + } + } + return failedBenchmarkNames; + } + + /** + * Calibrate score if needed. Ignoring the result if the score error is + * greater than the result score. + */ + private double calibrateScore(Result result) { + if (Double.isNaN(result.getScoreError())) { + return result.getScore(); + } + + if (result.getScoreError() > result.getScore()) { + log.warn(() -> "Ignoring the result since it's not accurate: " + result.getLabel()); + return Double.NaN; + } + + return result.getScore() - result.getScoreError(); + } + + /** + * Retrieve BenchmarkId from the runResult. + */ + private String retrieveBenchmarkId(RunResult runResult) { + BenchmarkParams params = runResult.getParams(); + String benchmark = params.getBenchmark(); + + String[] split = benchmark.split("\\."); + + String className = split[split.length - 2]; + String benchmarkMethodName = split[split.length - 1]; + + StringJoiner stringJoiner = new StringJoiner(".").add(className).add(benchmarkMethodName); + + Collection paramsKeys = params.getParamsKeys(); + + if (!CollectionUtils.isNullOrEmpty(paramsKeys)) { + String paramKey = paramsKeys.iterator().next(); + String paramValue = params.getParam(paramKey); + stringJoiner.add(paramValue); + } + return stringJoiner.toString(); + } + + private Map constructBenchmarkIdToScoreMap(List benchmarkScores) { + Map benchmarkIdToScore = new HashMap<>(); + for (BenchmarkScore score : benchmarkScores) { + String id = score.getBenchmark(); + if (score.getParameter() != null) { + id += "." + score.getParameter(); + } + benchmarkIdToScore.put(id, score.getScore()); + } + return benchmarkIdToScore; + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkRunner.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkRunner.java new file mode 100644 index 000000000000..86b6d6f299e1 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkRunner.java @@ -0,0 +1,57 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark; + +import java.io.IOException; +import java.util.Arrays; +import java.util.Collection; +import java.util.List; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.ChainedOptionsBuilder; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.utils.Logger; + +public class BenchmarkRunner { + + private static final List BENCHMARKS_TO_RUN = + Arrays.asList("Ec2ProtocolBenchmark", "JsonProtocolBenchmark", "QueryProtocolBenchmark", "XmlProtocolBenchmark", + "V2OptimizedClientCreationBenchmark", "V1ClientCreationBenchmark", "V2DefaultClientCreationBenchmark", + "ApacheHttpClientBenchmark", "UrlConnectionHttpClientClientBenchmark"); + private static final Logger log = Logger.loggerFor(BenchmarkRunner.class); + private final List benchmarksToRun; + + private BenchmarkRunner(List benchmarksToRun) { + this.benchmarksToRun = benchmarksToRun; + } + + public static void main(String... args) throws RunnerException, IOException { + BenchmarkRunner runner = new BenchmarkRunner(BENCHMARKS_TO_RUN); + runner.runBenchmark(); + } + + private void runBenchmark() throws RunnerException { + ChainedOptionsBuilder optionsBuilder = new OptionsBuilder(); + + benchmarksToRun.forEach(optionsBuilder::include); + + log.info(() -> "benchmarks to run " + benchmarksToRun); + + Collection results = new Runner(optionsBuilder.build()).run(); + //TODO: process the results and compare with baseline, consider using Statistics#isDifferent + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkScore.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkScore.java new file mode 100644 index 000000000000..00a877ae6cf1 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/BenchmarkScore.java @@ -0,0 +1,64 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark; + +import com.fasterxml.jackson.annotation.JsonCreator; +import com.fasterxml.jackson.annotation.JsonProperty; + +/** + * Represent the benchmark name and score + */ +public class BenchmarkScore { + + private String benchmark; + + private String parameter; + + private Double score; + + @JsonCreator + public BenchmarkScore(@JsonProperty("benchmark") String benchmark, + @JsonProperty("parameter") String parameter, + @JsonProperty("score") Double score) { + this.benchmark = benchmark; + this.parameter = parameter; + this.score = score; + } + + public String getBenchmark() { + return benchmark; + } + + public void setBenchmark(String benchmark) { + this.benchmark = benchmark; + } + + public String getParameter() { + return parameter; + } + + public void setParameter(String parameter) { + this.parameter = parameter; + } + + public Double getScore() { + return score; + } + + public void setScore(Double score) { + this.score = score; + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/Ec2ProtocolBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/Ec2ProtocolBenchmark.java new file mode 100644 index 000000000000..f72f046e93ab --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/Ec2ProtocolBenchmark.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.protocol; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.EC2_ALL_TYPES_REQUEST; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.ERROR_XML_BODY; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.XML_BODY; + +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockHttpClient; +import software.amazon.awssdk.services.protocolec2.ProtocolEc2Client; + +/** + * Benchmarking for running with different protocols. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class Ec2ProtocolBenchmark implements SdkProtocolBenchmark { + + private ProtocolEc2Client client; + + @Setup(Level.Trial) + public void setup() { + client = ProtocolEc2Client.builder() + .endpointOverride(LOCAL_URI) + .httpClient(new MockHttpClient(XML_BODY, ERROR_XML_BODY)) + .build(); + } + + @Benchmark + public void successfulResponse(Blackhole blackhole) { + blackhole.consume(client.allTypes(EC2_ALL_TYPES_REQUEST)); + } + + public static void main(String... args) throws Exception { + Options opt = new OptionsBuilder() + .include(Ec2ProtocolBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonProtocolBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonProtocolBenchmark.java new file mode 100644 index 000000000000..b5a21144ee87 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/JsonProtocolBenchmark.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.protocol; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.ERROR_JSON_BODY; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.JSON_ALL_TYPES_REQUEST; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.JSON_BODY; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; + +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockHttpClient; +import software.amazon.awssdk.services.protocolrestjson.ProtocolRestJsonClient; + +/** + * Benchmarking for running with different protocols. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class JsonProtocolBenchmark implements SdkProtocolBenchmark { + + private ProtocolRestJsonClient client; + + @Setup(Level.Trial) + public void setup() { + client = ProtocolRestJsonClient.builder() + .endpointOverride(LOCAL_URI) + .httpClient(new MockHttpClient(JSON_BODY, ERROR_JSON_BODY)) + .build(); + } + + @Benchmark + public void successfulResponse(Blackhole blackhole) { + blackhole.consume(client.allTypes(JSON_ALL_TYPES_REQUEST)); + } + + public static void main(String... args) throws Exception { + Options opt = new OptionsBuilder() + .include(JsonProtocolBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/QueryProtocolBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/QueryProtocolBenchmark.java new file mode 100644 index 000000000000..6659dffd13cc --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/QueryProtocolBenchmark.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.protocol; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.ERROR_XML_BODY; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.QUERY_ALL_TYPES_REQUEST; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.XML_BODY; + +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockHttpClient; +import software.amazon.awssdk.services.protocolquery.ProtocolQueryClient; + +/** + * Benchmarking for running with different protocols. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class QueryProtocolBenchmark implements SdkProtocolBenchmark { + + private ProtocolQueryClient client; + + @Setup(Level.Trial) + public void setup() { + client = ProtocolQueryClient.builder() + .endpointOverride(LOCAL_URI) + .httpClient(new MockHttpClient(XML_BODY, ERROR_XML_BODY)) + .build(); + } + + @Benchmark + public void successfulResponse(Blackhole blackhole) { + blackhole.consume(client.allTypes(QUERY_ALL_TYPES_REQUEST)); + } + + public static void main(String... args) throws Exception { + Options opt = new OptionsBuilder() + .include(QueryProtocolBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/SdkProtocolBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/SdkProtocolBenchmark.java new file mode 100644 index 000000000000..84aa5e178ffc --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/SdkProtocolBenchmark.java @@ -0,0 +1,28 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.protocol; + +import org.openjdk.jmh.infra.Blackhole; + +public interface SdkProtocolBenchmark { + + void successfulResponse(Blackhole blackhole); + + //TODO, implement it and remove default + default void failedRepsonse(Blackhole blackhole) { + + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/XmlProtocolBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/XmlProtocolBenchmark.java new file mode 100644 index 000000000000..a3dc43301f66 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/protocol/XmlProtocolBenchmark.java @@ -0,0 +1,74 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.protocol; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.ERROR_XML_BODY; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.XML_ALL_TYPES_REQUEST; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.XML_BODY; + +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockHttpClient; +import software.amazon.awssdk.services.protocolrestxml.ProtocolRestXmlClient; + +/** + * Benchmarking for running with different protocols. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class XmlProtocolBenchmark implements SdkProtocolBenchmark { + + private ProtocolRestXmlClient client; + + @Setup(Level.Trial) + public void setup() { + client = ProtocolRestXmlClient.builder() + .endpointOverride(LOCAL_URI) + .httpClient(new MockHttpClient(XML_BODY, ERROR_XML_BODY)) + .build(); + } + + @Benchmark + public void successfulResponse(Blackhole blackhole) { + blackhole.consume(client.allTypes(XML_ALL_TYPES_REQUEST)); + } + + public static void main(String... args) throws Exception { + Options opt = new OptionsBuilder() + .include(XmlProtocolBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/ApacheHttpClientBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/ApacheHttpClientBenchmark.java new file mode 100644 index 000000000000..aba6325bf02a --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/ApacheHttpClientBenchmark.java @@ -0,0 +1,90 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.sync; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.PORT_NUMBER; + +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockServer; +import software.amazon.awssdk.http.SdkHttpClient; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.services.protocolrestjson.ProtocolRestJsonClient; + +/** + * Benchmarking for running with different http clients. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class ApacheHttpClientBenchmark implements SdkApiCallBenchmark { + + private MockServer mockServer; + private SdkHttpClient sdkHttpClient; + private ProtocolRestJsonClient client; + + @Setup(Level.Trial) + public void setup() throws Exception { + mockServer = new MockServer(PORT_NUMBER); + mockServer.start(); + sdkHttpClient = ApacheHttpClient.builder().build(); + client = ProtocolRestJsonClient.builder() + .endpointOverride(LOCAL_URI) + .httpClient(sdkHttpClient) + .build(); + } + + @TearDown(Level.Trial) + public void tearDown() throws Exception { + mockServer.stop(); + sdkHttpClient.close(); + client.close(); + } + + @Benchmark + public void apiCall(Blackhole blackhole) { + blackhole.consume(client.allTypes()); + } + + public static void main(String... args) throws Exception { + + Options opt = new OptionsBuilder() + .include(ApacheHttpClientBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + Collection run = new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/SdkApiCallBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/SdkApiCallBenchmark.java new file mode 100644 index 000000000000..dbc18408c96a --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/SdkApiCallBenchmark.java @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.sync; + +import org.openjdk.jmh.infra.Blackhole; + +public interface SdkApiCallBenchmark { + + void apiCall(Blackhole blackhole); +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/UrlConnectionHttpClientClientBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/UrlConnectionHttpClientClientBenchmark.java new file mode 100644 index 000000000000..9b0e6aee9568 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/apicall/sync/UrlConnectionHttpClientClientBenchmark.java @@ -0,0 +1,91 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.apicall.sync; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.LOCAL_URI; +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.PORT_NUMBER; + +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.Setup; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.benchmark.utils.MockServer; +import software.amazon.awssdk.http.SdkHttpClient; +import software.amazon.awssdk.http.urlconnection.UrlConnectionHttpClient; +import software.amazon.awssdk.services.protocolrestjson.ProtocolRestJsonClient; + +/** + * Benchmarking for running with different http clients. + */ +@State(Scope.Thread) +@Warmup(iterations = 3, time = 15, timeUnit = TimeUnit.SECONDS) +@Measurement(iterations = 5, time = 10, timeUnit = TimeUnit.SECONDS) +@Fork(2) // To reduce difference between each run +@BenchmarkMode(Mode.Throughput) +public class UrlConnectionHttpClientClientBenchmark implements SdkApiCallBenchmark { + + private MockServer mockServer; + private SdkHttpClient sdkHttpClient; + private ProtocolRestJsonClient client; + + @Setup(Level.Trial) + public void setup() throws Exception { + mockServer = new MockServer(PORT_NUMBER); + mockServer.start(); + sdkHttpClient = UrlConnectionHttpClient.builder().build(); + client = ProtocolRestJsonClient.builder() + .endpointOverride(LOCAL_URI) + .httpClient(sdkHttpClient) + .build(); + } + + @TearDown(Level.Trial) + public void tearDown() throws Exception { + mockServer.stop(); + sdkHttpClient.close(); + client.close(); + } + + @Benchmark + @Override + public void apiCall(Blackhole blackhole) { + blackhole.consume(client.allTypes()); + } + + public static void main(String... args) throws Exception { + + Options opt = new OptionsBuilder() + .include(UrlConnectionHttpClientClientBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + Collection run = new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/SdkClientCreationBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/SdkClientCreationBenchmark.java new file mode 100644 index 000000000000..1fd711c87b9e --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/SdkClientCreationBenchmark.java @@ -0,0 +1,23 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.coldstart; + +import org.openjdk.jmh.infra.Blackhole; + +public interface SdkClientCreationBenchmark { + + void createClient(Blackhole blackhole) throws Exception; +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V1ClientCreationBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V1ClientCreationBenchmark.java new file mode 100644 index 000000000000..33ddc9b5c1a4 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V1ClientCreationBenchmark.java @@ -0,0 +1,78 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.coldstart; + +import com.amazonaws.services.dynamodbv2.AmazonDynamoDB; +import com.amazonaws.services.dynamodbv2.AmazonDynamoDBClient; +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.CommandLineOptionException; +import org.openjdk.jmh.runner.options.CommandLineOptions; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; + +/** + * Benchmark for creating the clients + */ +@State(Scope.Thread) +@BenchmarkMode(Mode.SampleTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@Warmup(iterations = 3) +@Measurement(iterations = 5) +@Fork(3) +public class V1ClientCreationBenchmark implements SdkClientCreationBenchmark { + + private AmazonDynamoDB client; + + @Override + @Benchmark + public void createClient(Blackhole blackhole) throws Exception { + client = AmazonDynamoDBClient.builder().build(); + blackhole.consume(client); + } + + @TearDown(Level.Trial) + public void tearDown() throws Exception { + if (client != null) { + client.shutdown(); + } + } + + public static void main(String... args) throws RunnerException, CommandLineOptionException { + Options opt = new OptionsBuilder() + .parent(new CommandLineOptions()) + .include(V1ClientCreationBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + Collection run = new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2DefaultClientCreationBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2DefaultClientCreationBenchmark.java new file mode 100644 index 000000000000..66b6b64ff540 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2DefaultClientCreationBenchmark.java @@ -0,0 +1,79 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.coldstart; + +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.CommandLineOptionException; +import org.openjdk.jmh.runner.options.CommandLineOptions; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; + +/** + * Benchmark for creating the clients + */ +@State(Scope.Thread) +@BenchmarkMode(Mode.SampleTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@Warmup(iterations = 3) +@Measurement(iterations = 5) +@Fork(3) +public class V2DefaultClientCreationBenchmark implements SdkClientCreationBenchmark { + + private DynamoDbClient client; + + @Override + @Benchmark + public void createClient(Blackhole blackhole) throws Exception { + client = DynamoDbClient.builder() + .httpClient(ApacheHttpClient.builder().build()).build(); + blackhole.consume(client); + } + + @TearDown(Level.Trial) + public void tearDown() throws Exception { + if (client != null) { + client.close(); + } + } + + public static void main(String... args) throws RunnerException, CommandLineOptionException { + Options opt = new OptionsBuilder() + .parent(new CommandLineOptions()) + .include(V2DefaultClientCreationBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + Collection run = new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2OptimizedClientCreationBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2OptimizedClientCreationBenchmark.java new file mode 100644 index 000000000000..74724b27b3f2 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/coldstart/V2OptimizedClientCreationBenchmark.java @@ -0,0 +1,89 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.coldstart; + +import java.util.Collection; +import java.util.concurrent.TimeUnit; +import org.openjdk.jmh.annotations.Benchmark; +import org.openjdk.jmh.annotations.BenchmarkMode; +import org.openjdk.jmh.annotations.Fork; +import org.openjdk.jmh.annotations.Level; +import org.openjdk.jmh.annotations.Measurement; +import org.openjdk.jmh.annotations.Mode; +import org.openjdk.jmh.annotations.OutputTimeUnit; +import org.openjdk.jmh.annotations.Scope; +import org.openjdk.jmh.annotations.State; +import org.openjdk.jmh.annotations.TearDown; +import org.openjdk.jmh.annotations.Warmup; +import org.openjdk.jmh.infra.Blackhole; +import org.openjdk.jmh.profile.StackProfiler; +import org.openjdk.jmh.results.RunResult; +import org.openjdk.jmh.runner.Runner; +import org.openjdk.jmh.runner.RunnerException; +import org.openjdk.jmh.runner.options.CommandLineOptionException; +import org.openjdk.jmh.runner.options.CommandLineOptions; +import org.openjdk.jmh.runner.options.Options; +import org.openjdk.jmh.runner.options.OptionsBuilder; +import software.amazon.awssdk.auth.credentials.AwsBasicCredentials; +import software.amazon.awssdk.auth.credentials.StaticCredentialsProvider; +import software.amazon.awssdk.core.client.config.ClientOverrideConfiguration; +import software.amazon.awssdk.http.apache.ApacheHttpClient; +import software.amazon.awssdk.regions.Region; +import software.amazon.awssdk.services.dynamodb.DynamoDbClient; + +/** + * Benchmark for creating the clients + */ +@State(Scope.Thread) +@BenchmarkMode(Mode.SampleTime) +@OutputTimeUnit(TimeUnit.MILLISECONDS) +@Warmup(iterations = 3) +@Measurement(iterations = 5) +@Fork(3) +public class V2OptimizedClientCreationBenchmark implements SdkClientCreationBenchmark { + + private DynamoDbClient client; + + @Override + @Benchmark + public void createClient(Blackhole blackhole) throws Exception { + client = DynamoDbClient.builder() + .region(Region.US_WEST_2) + .credentialsProvider(StaticCredentialsProvider.create( + AwsBasicCredentials.create("test", "test"))) + .httpClient(ApacheHttpClient.builder().build()) + .overrideConfiguration(ClientOverrideConfiguration.builder().build()) + .build(); + + blackhole.consume(client); + } + + @TearDown(Level.Trial) + public void tearDown() throws Exception { + if (client != null) { + client.close(); + } + } + + public static void main(String... args) throws RunnerException, CommandLineOptionException { + Options opt = new OptionsBuilder() + .parent(new CommandLineOptions()) + .include(V2OptimizedClientCreationBenchmark.class.getSimpleName()) + .addProfiler(StackProfiler.class) + .build(); + Collection run = new Runner(opt).run(); + } +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/AbstractItemFactory.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/AbstractItemFactory.java similarity index 98% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/AbstractItemFactory.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/AbstractItemFactory.java index b6c0742376a5..a3805803ff52 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/AbstractItemFactory.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/AbstractItemFactory.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.dynamodb; +package software.amazon.awssdk.benchmark.marshaller.dynamodb; import com.amazonaws.util.ImmutableMapParameter; import java.nio.ByteBuffer; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1DynamoDbAttributeValue.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1DynamoDbAttributeValue.java similarity index 98% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1DynamoDbAttributeValue.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1DynamoDbAttributeValue.java index e04fde457dc7..03d8034493db 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1DynamoDbAttributeValue.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1DynamoDbAttributeValue.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.dynamodb; +package software.amazon.awssdk.benchmark.marshaller.dynamodb; import com.amazonaws.AmazonWebServiceResponse; import com.amazonaws.Request; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1ItemFactory.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1ItemFactory.java similarity index 95% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1ItemFactory.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1ItemFactory.java index 93b03f813b44..2d6d2870e655 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V1ItemFactory.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V1ItemFactory.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.dynamodb; +package software.amazon.awssdk.benchmark.marshaller.dynamodb; import com.amazonaws.services.dynamodbv2.model.AttributeValue; import java.nio.ByteBuffer; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2DynamoDbAttributeValue.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java similarity index 99% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2DynamoDbAttributeValue.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java index 2edd709d79fd..a68c3afa4905 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2DynamoDbAttributeValue.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2DynamoDbAttributeValue.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.dynamodb; +package software.amazon.awssdk.benchmark.marshaller.dynamodb; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2ItemFactory.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2ItemFactory.java similarity index 95% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2ItemFactory.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2ItemFactory.java index eb7192bbbe27..dbb4163bbbfa 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/dynamodb/V2ItemFactory.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/dynamodb/V2ItemFactory.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.dynamodb; +package software.amazon.awssdk.benchmark.marshaller.dynamodb; import java.nio.ByteBuffer; import java.util.List; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1Ec2MarshallerBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1Ec2MarshallerBenchmark.java similarity index 97% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1Ec2MarshallerBenchmark.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1Ec2MarshallerBenchmark.java index c7ec5f90140b..dda717fb632f 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1Ec2MarshallerBenchmark.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1Ec2MarshallerBenchmark.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.ec2; +package software.amazon.awssdk.benchmark.marshaller.ec2; import com.amazonaws.services.ec2.model.RunInstancesRequest; import com.amazonaws.services.ec2.model.transform.RunInstancesRequestMarshaller; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1ItemFactory.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1ItemFactory.java similarity index 98% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1ItemFactory.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1ItemFactory.java index 01b1c66012f3..2af350ecc803 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V1ItemFactory.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V1ItemFactory.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.ec2; +package software.amazon.awssdk.benchmark.marshaller.ec2; import com.amazonaws.services.ec2.model.BlockDeviceMapping; import com.amazonaws.services.ec2.model.CpuOptionsRequest; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2Ec2MarshallerBenchmark.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2Ec2MarshallerBenchmark.java similarity index 97% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2Ec2MarshallerBenchmark.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2Ec2MarshallerBenchmark.java index 7798cf0b41a7..585d88b5e305 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2Ec2MarshallerBenchmark.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2Ec2MarshallerBenchmark.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.ec2; +package software.amazon.awssdk.benchmark.marshaller.ec2; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.Param; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2ItemFactory.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2ItemFactory.java similarity index 98% rename from test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2ItemFactory.java rename to test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2ItemFactory.java index b8fffa17f099..277a6ae0b053 100755 --- a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/ec2/V2ItemFactory.java +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/marshaller/ec2/V2ItemFactory.java @@ -13,7 +13,7 @@ * permissions and limitations under the License. */ -package software.amazon.awssdk.benchmark.ec2; +package software.amazon.awssdk.benchmark.marshaller.ec2; import java.util.List; import java.util.Random; diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/BenchmarkUtil.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/BenchmarkUtil.java new file mode 100644 index 000000000000..1aca3e0d11fd --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/BenchmarkUtil.java @@ -0,0 +1,176 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.utils; + +import java.net.URI; +import java.time.Instant; +import java.time.LocalDateTime; +import java.time.ZoneOffset; +import software.amazon.awssdk.core.SdkBytes; +import software.amazon.awssdk.services.protocolec2.model.AllTypesRequest; + +/** + * Contains utility methods and constants used by the benchmarks + */ +@SuppressWarnings("unchecked") +public final class BenchmarkUtil { + + public static final int PORT_NUMBER = 8089; + public static final URI LOCAL_URI = URI.create(String.format("http://localhost:%s", PORT_NUMBER)); + public static final Instant TIMESTAMP_MEMBER = LocalDateTime.now().toInstant(ZoneOffset.UTC); + + public static final String ERROR_JSON_BODY = "{}"; + + public static final String JSON_BODY = "{\"StringMember\":\"foo\",\"IntegerMember\":123,\"BooleanMember\":true," + + "\"FloatMember\":123.0,\"DoubleMember\":123.9,\"LongMember\":123," + + "\"SimpleList\":[\"so simple\"]," + + "\"ListOfStructs\":[{\"StringMember\":\"listOfStructs1\"}]," + + "\"TimestampMember\":1540982918.887," + + "\"StructWithNestedTimestampMember\":{\"NestedTimestamp\":1540982918.908}," + + "\"BlobArg\":\"aGVsbG8gd29ybGQ=\"}"; + + public static final String XML_BODY = "foo123" + + "true123" + + ".0123" + + ".9123so " + + "simplelistOfStructs1" + + "2018-10-31T10:51:12" + + ".302183Z2018" + + "-10-31T10:51:12.311305ZaGVsbG8gd29ybGQ="; + + public static final String ERROR_XML_BODY = "" + + " " + + " ImplicitPayloadException" + + " this is the service message" + + " foo" + + " 42" + + " 9001" + + " 1234.56" + + " 789.10" + + " 2015-01-25T08:00:12Z" + + " true" + + " dGhlcmUh" + + " " + + " valOne" + + " valTwo" + + " " + + " " + + " " + + " keyOne" + + " valOne" + + " " + + " " + + " keyTwo" + + " valTwo" + + " " + + " " + + " " + + " foobar" + + " " + + " " + + ""; + public static final software.amazon.awssdk.services.protocolrestxml.model.AllTypesRequest XML_ALL_TYPES_REQUEST = + software.amazon.awssdk.services.protocolrestxml.model.AllTypesRequest.builder() + .stringMember("foo") + .integerMember(123) + .booleanMember(true) + .floatMember(123.0f) + .doubleMember(123.9) + .longMember(123L) + .simpleStructMember(b -> b.stringMember( + "bar")) + .simpleList("so simple") + .listOfStructs(b -> b.stringMember( + "listOfStructs1").stringMember( + "listOfStructs1")) + .timestampMember( + TIMESTAMP_MEMBER) + .structWithNestedTimestampMember( + b -> b.nestedTimestamp(TIMESTAMP_MEMBER)) + .blobArg(SdkBytes.fromUtf8String("hello " + + "world")) + .build(); + public static final software.amazon.awssdk.services.protocolquery.model.AllTypesRequest QUERY_ALL_TYPES_REQUEST = + software.amazon.awssdk.services.protocolquery.model.AllTypesRequest.builder() + .stringMember("foo") + .integerMember(123) + .booleanMember(true) + .floatMember(123.0f) + .doubleMember(123.9) + .longMember(123L) + .simpleStructMember(b -> b.stringMember( + "bar")) + .simpleList("so simple") + .listOfStructs(b -> b.stringMember( + "listOfStructs1").stringMember( + "listOfStructs1")) + .timestampMember( + TIMESTAMP_MEMBER) + .structWithNestedTimestampMember( + b -> b.nestedTimestamp( + TIMESTAMP_MEMBER)) + .blobArg(SdkBytes.fromUtf8String("hello " + + "world")) + .build(); + + + public static final software.amazon.awssdk.services.protocolrestjson.model.AllTypesRequest JSON_ALL_TYPES_REQUEST = + software.amazon.awssdk.services.protocolrestjson.model.AllTypesRequest.builder() + .stringMember("foo") + .integerMember(123) + .booleanMember(true) + .floatMember(123.0f) + .doubleMember(123.9) + .longMember(123L) + .simpleList("so simple") + .listOfStructs(b -> b.stringMember( + "listOfStructs1").stringMember( + "listOfStructs1")) + .timestampMember( + TIMESTAMP_MEMBER) + .structWithNestedTimestampMember( + b -> b.nestedTimestamp( + TIMESTAMP_MEMBER)) + .blobArg(SdkBytes.fromUtf8String("hello " + + "world")) + .build(); + public static final AllTypesRequest EC2_ALL_TYPES_REQUEST = + AllTypesRequest.builder() + .stringMember("foo") + .integerMember(123) + .booleanMember(true) + .floatMember(123.0f) + .doubleMember(123.9) + .longMember(123L) + .simpleStructMember(b -> b.stringMember( + "bar")) + .simpleList("so simple") + .listOfStructs(b -> b.stringMember( + "listOfStructs1").stringMember( + "listOfStructs1")) + .timestampMember(TIMESTAMP_MEMBER) + .structWithNestedTimestampMember(b -> b.nestedTimestamp( + TIMESTAMP_MEMBER)) + .blobArg(SdkBytes.fromUtf8String("hello " + + "world")) + .build(); + + private BenchmarkUtil() { + } + +} diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockHttpClient.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockHttpClient.java new file mode 100644 index 000000000000..90947addac40 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockHttpClient.java @@ -0,0 +1,96 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.utils; + +import java.io.ByteArrayInputStream; +import java.io.IOException; +import software.amazon.awssdk.http.AbortableInputStream; +import software.amazon.awssdk.http.ExecutableHttpRequest; +import software.amazon.awssdk.http.HttpExecuteRequest; +import software.amazon.awssdk.http.HttpExecuteResponse; +import software.amazon.awssdk.http.SdkHttpClient; +import software.amazon.awssdk.http.SdkHttpResponse; + +/** + * Mock implementation of {@link SdkHttpClient} to return mock response. + */ +public final class MockHttpClient implements SdkHttpClient { + + private String successResponseContent; + private String errorResponseContent; + + public MockHttpClient(String successResponseContent, String errorResponseContent) { + this.successResponseContent = successResponseContent; + this.errorResponseContent = errorResponseContent; + } + + @Override + public ExecutableHttpRequest prepareRequest(HttpExecuteRequest request) { + if (request.httpRequest().firstMatchingHeader("stub-error").isPresent()) { + return new MockHttpRequest(errorResponse()); + } + + return new MockHttpRequest(successResponse()); + } + + @Override + public void close() { + } + + private class MockHttpRequest implements ExecutableHttpRequest { + + private final HttpExecuteResponse response; + + private MockHttpRequest(HttpExecuteResponse response) { + this.response = response; + } + + @Override + public HttpExecuteResponse call() throws IOException { + return response; + } + + @Override + public void abort() { + } + } + + private HttpExecuteResponse successResponse() { + + AbortableInputStream inputStream = + AbortableInputStream.create(new ByteArrayInputStream(successResponseContent.getBytes())); + + return HttpExecuteResponse.builder() + .response(SdkHttpResponse.builder() + .statusCode(200) + .build()) + .responseBody(inputStream) + .build(); + } + + private HttpExecuteResponse errorResponse() { + + AbortableInputStream inputStream = + AbortableInputStream.create(new ByteArrayInputStream(errorResponseContent.getBytes())); + + return HttpExecuteResponse.builder() + .response(SdkHttpResponse.builder() + .statusCode(500) + .build()) + .responseBody(inputStream) + .build(); + } +} \ No newline at end of file diff --git a/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockServer.java b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockServer.java new file mode 100644 index 000000000000..2400c566d892 --- /dev/null +++ b/test/sdk-benchmarks/src/main/java/software/amazon/awssdk/benchmark/utils/MockServer.java @@ -0,0 +1,65 @@ +/* + * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"). + * You may not use this file except in compliance with the License. + * A copy of the License is located at + * + * http://aws.amazon.com/apache2.0 + * + * or in the "license" file accompanying this file. This file is distributed + * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either + * express or implied. See the License for the specific language governing + * permissions and limitations under the License. + */ + +package software.amazon.awssdk.benchmark.utils; + +import static software.amazon.awssdk.benchmark.utils.BenchmarkUtil.JSON_BODY; + +import java.io.IOException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import org.eclipse.jetty.http.HttpStatus; +import org.eclipse.jetty.server.Server; +import org.eclipse.jetty.servlet.ServletHandler; + +/** + * Local mock server used to stub fixed response. + */ +public class MockServer { + private final Server server; + + public MockServer(int port) { + server = new Server(port); + ServletHandler handler = new ServletHandler(); + handler.addServletWithMapping(AlwaysSuccessServlet.class, "/*"); + server.setHandler(handler); + } + + public void start() throws Exception { + server.start(); + } + + public void stop() throws Exception { + server.stop(); + } + + /** + * Always succeeds with with a 200 response. + */ + public static class AlwaysSuccessServlet extends HttpServlet { + + @Override + public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException { + response.setStatus(HttpStatus.OK_200); + if (request.getContentType().equals("application/xml")) { + response.setContentType("application/xml"); + } else { + response.setContentType("application/json"); + } + response.getWriter().write(JSON_BODY); + } + } +} \ No newline at end of file diff --git a/test/sdk-benchmarks/src/main/resources/jetty-logging.properties b/test/sdk-benchmarks/src/main/resources/jetty-logging.properties new file mode 100644 index 000000000000..0b7cafa3b426 --- /dev/null +++ b/test/sdk-benchmarks/src/main/resources/jetty-logging.properties @@ -0,0 +1,3 @@ +# Set up logging implementation +org.eclipse.jetty.util.log.class=org.eclipse.jetty.util.log.StdErrLog +org.eclipse.jetty.LEVEL=INFO diff --git a/test/sdk-benchmarks/src/main/resources/log4j.properties b/test/sdk-benchmarks/src/main/resources/log4j.properties new file mode 100644 index 000000000000..e4f7e88d5536 --- /dev/null +++ b/test/sdk-benchmarks/src/main/resources/log4j.properties @@ -0,0 +1,37 @@ +# +# Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License"). +# You may not use this file except in compliance with the License. +# A copy of the License is located at +# +# http://aws.amazon.com/apache2.0 +# +# or in the "license" file accompanying this file. This file is distributed +# on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either +# express or implied. See the License for the specific language governing +# permissions and limitations under the License. +# + +log4j.rootLogger=ERROR, A1 +log4j.appender.A1=org.apache.log4j.ConsoleAppender +log4j.appender.A1.layout=org.apache.log4j.PatternLayout + +# Print the date in ISO 8601 format +log4j.appender.A1.layout.ConversionPattern=%d [%t] %-5p %c - %m%n + +# Adjust to see more / less logging +#log4j.logger.com.amazonaws.ec2=DEBUG + +# HttpClient 3 Wire Logging +#log4j.logger.httpclient.wire=DEBUG + +# HttpClient 4 Wire Logging +# log4j.logger.org.apache.http.wire=DEBUG +# log4j.logger.org.apache.http=DEBUG +# log4j.logger.org.apache.http.wire=DEBUG +# +# log4j.logger.com.amazonaws=DEBUG +# log4j.logger.com.amazonaws.services.s3.internal.Mimetypes=DEBUG + + diff --git a/test/service-test-utils/pom.xml b/test/service-test-utils/pom.xml index f8cf62f08c5e..08dcb5273e37 100644 --- a/test/service-test-utils/pom.xml +++ b/test/service-test-utils/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../../pom.xml service-test-utils diff --git a/test/test-utils/pom.xml b/test/test-utils/pom.xml index 2eb9ee6e7c74..e65ae7690b52 100644 --- a/test/test-utils/pom.xml +++ b/test/test-utils/pom.xml @@ -21,7 +21,7 @@ software.amazon.awssdk aws-sdk-java-pom - 2.5.10 + 2.5.11 ../../pom.xml test-utils diff --git a/utils/pom.xml b/utils/pom.xml index 54b6e3575ed7..22348bf51e07 100644 --- a/utils/pom.xml +++ b/utils/pom.xml @@ -20,7 +20,7 @@ aws-sdk-java-pom software.amazon.awssdk - 2.5.10 + 2.5.11 4.0.0 diff --git a/utils/src/main/java/software/amazon/awssdk/utils/StringUtils.java b/utils/src/main/java/software/amazon/awssdk/utils/StringUtils.java index 3482a09b2c39..04cf2df30d91 100644 --- a/utils/src/main/java/software/amazon/awssdk/utils/StringUtils.java +++ b/utils/src/main/java/software/amazon/awssdk/utils/StringUtils.java @@ -578,4 +578,31 @@ public static String fromBytes(byte[] bytes, Charset charset) throws UncheckedIO throw new UncheckedIOException("Cannot encode string.", e); } } + + /** + * Tests if this string starts with the specified prefix ignoring case considerations. + * + * @param str the string to be tested + * @param prefix the prefix + * @return true if the string starts with the prefix ignoring case + */ + public static boolean startsWithIgnoreCase(String str, String prefix) { + return str.regionMatches(true, 0, prefix, 0, prefix.length()); + } + + /** + * Replace the prefix of the string provided ignoring case considerations. + * + *

+ * The unmatched part is unchanged. + * + * + * @param str the string to replace + * @param prefix the prefix to find + * @param replacement the replacement + * @return the replaced string + */ + public static String replacePrefixIgnoreCase(String str, String prefix, String replacement) { + return str.replaceFirst("(?i)" + prefix, replacement); + } } diff --git a/utils/src/test/java/software/amazon/awssdk/utils/StringUtilsTest.java b/utils/src/test/java/software/amazon/awssdk/utils/StringUtilsTest.java index 29b7f525f4e8..c59102a9bf5e 100644 --- a/utils/src/test/java/software/amazon/awssdk/utils/StringUtilsTest.java +++ b/utils/src/test/java/software/amazon/awssdk/utils/StringUtilsTest.java @@ -16,7 +16,11 @@ package software.amazon.awssdk.utils; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThat; +import static org.junit.Assert.assertTrue; +import static software.amazon.awssdk.utils.StringUtils.replacePrefixIgnoreCase; import org.junit.Test; @@ -107,4 +111,18 @@ public void testReCapitalize() { assertEquals("capitalize(uncapitalize(String)) failed", FOO_CAP, StringUtils.capitalize(StringUtils.uncapitalize(FOO_CAP))); } + + @Test + public void testStartsWithIgnoreCase() { + assertTrue(StringUtils.startsWithIgnoreCase("helloworld", "hello")); + assertTrue(StringUtils.startsWithIgnoreCase("hELlOwOrlD", "hello")); + assertFalse(StringUtils.startsWithIgnoreCase("hello", "world")); + } + + @Test + public void testReplacePrefixIgnoreCase() { + assertEquals("lloWorld" ,replacePrefixIgnoreCase("helloWorld", "he", "")); + assertEquals("lloWORld" ,replacePrefixIgnoreCase("helloWORld", "He", "")); + assertEquals("llOwOrld" ,replacePrefixIgnoreCase("HEllOwOrld", "he", "")); + } }