Skip to content

Commit 2e3df0c

Browse files
authored
Upgrade repository-s3 to AWS SDK v2 (elastic#127331)
Closes elastic#120993 Backport of elastic#126843 to `8.x`
1 parent fe8c7c4 commit 2e3df0c

File tree

61 files changed

+4269
-2352
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

61 files changed

+4269
-2352
lines changed

build-tools-internal/version.properties

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ jna = 5.12.1
1717
netty = 4.1.118.Final
1818
commons_lang3 = 3.9
1919
google_oauth_client = 1.34.1
20-
awsv1sdk = 1.12.746
2120
awsv2sdk = 2.30.38
2221
reactive_streams = 1.0.4
2322

docs/changelog/126843.yaml

Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
pr: 126843
2+
summary: Upgrade `repository-s3` to AWS SDK v2
3+
area: Snapshot/Restore
4+
type: breaking
5+
issues:
6+
- 120993
7+
highlight:
8+
title: Upgrade `repository-s3` to AWS SDK v2
9+
body: >-
10+
In earlier versions of {es} the `repository-s3` plugin was based on the AWS
11+
SDK v1. AWS will withdraw support for this SDK before the end of the life
12+
of {es} {minor-version} so we have migrated this plugin to the newer AWS SDK v2.
13+
14+
The two SDKs are not quite compatible, so please check the breaking changes
15+
documentation and test the new version thoroughly before upgrading any
16+
production workloads.
17+
notable: true
18+
breaking:
19+
title: Upgrade `repository-s3` to AWS SDK v2
20+
area: Cluster and node setting
21+
details: >-
22+
In earlier versions of {es} the `repository-s3` plugin was based on the AWS
23+
SDK v1. AWS will withdraw support for this SDK before the end of the life
24+
of {es} {minor-version} so we must migrate to the newer AWS SDK v2.
25+
26+
Unfortunately there are several differences between the two AWS SDK
27+
versions which may require you to adjust your system configuration when
28+
upgrading to {es} {minor-version} or later. These differences include, but
29+
may not be limited to, the following items.
30+
31+
* AWS SDK v2 requires users to specify the region to use for signing
32+
requests, or else to run in an environment in which it can determine the
33+
correct region automatically. The older SDK would try to determine the
34+
region based on the endpoint URL as specified with the
35+
`s3.client.${CLIENT_NAME}.endpoint` setting, together with other data
36+
drawn from the operating environment, and would ultimately fall back to
37+
`us-east-1` if no better value could be found.
38+
39+
* AWS SDK v2 does not support the EC2 IMDSv1 protocol.
40+
41+
* AWS SDK v2 does not support the
42+
`com.amazonaws.sdk.ec2MetadataServiceEndpointOverride` system property.
43+
44+
* AWS SDK v2 does not permit specifying a choice between HTTP and HTTPS so
45+
the `s3.client.${CLIENT_NAME}.protocol` setting is deprecated and no longer
46+
has any effect.
47+
48+
* AWS SDK v2 does not permit control over throttling for retries, so the
49+
the `s3.client.${CLIENT_NAME}.use_throttle_retries` setting is deprecated
50+
and no longer has any effect.
51+
52+
* AWS SDK v2 requires the use of the V4 signature algorithm, so the
53+
`s3.client.${CLIENT_NAME}.signer_override` setting is deprecated and no
54+
longer has any effect.
55+
56+
* AWS SDK v2 does not support the `log-delivery-write` canned ACL.
57+
58+
* AWS SDK v2 counts 4xx responses differently in its metrics reporting.
59+
60+
* AWS SDK v2 always uses the regional STS endpoint, whereas AWS SDK v2
61+
could use either a regional endpoint or the global
62+
`https://sts.amazonaws.com` one.
63+
64+
impact: >-
65+
If you use the `repository-s3` module, test your upgrade thoroughly before
66+
upgrading any production workloads.
67+
68+
Adapt your configuration to the new SDK functionality. This includes, but
69+
may not be limited to, the following items.
70+
71+
* Specify the correct signing region using the
72+
`s3.client.${CLIENT_NAME}.region` setting on each node. {es} will try and
73+
determine the correct region based on the endpoint URL and other data
74+
drawn from the operating environment but cannot guarantee to do so
75+
correctly in all cases.
76+
77+
* If you use IMDS to determine the availability zone of a node or to obtain
78+
credentials for accessing the EC2 API, ensure that it supports the IMDSv2
79+
protocol.
80+
81+
* If applicable, discontinue use of the
82+
`com.amazonaws.sdk.ec2MetadataServiceEndpointOverride` system property.
83+
84+
* If applicable, specify that you wish to use the insecure HTTP protocol to
85+
access the S3 API by setting `s3.client.${CLIENT_NAME}.endpoint` to a URL
86+
which starts with `http://`.
87+
88+
* If applicable, discontinue use of the `log-delivery-write` canned ACL.
89+
90+
notable: true

gradle/verification-metadata.xml

Lines changed: 20 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -86,36 +86,6 @@
8686
<sha256 value="395eebdbfaae281244b2da7f369654d6ca79c4be70acfff87e6638c07f89a0be" origin="Generated by Gradle"/>
8787
</artifact>
8888
</component>
89-
<component group="com.amazonaws" name="aws-java-sdk-bedrockruntime" version="1.12.740">
90-
<artifact name="aws-java-sdk-bedrockruntime-1.12.740.jar">
91-
<sha256 value="ccc7efe5cd3ce22d6046cafd4d2f8bff5adcb43e0d27da482178fac5daadef81" origin="Generated by Gradle"/>
92-
</artifact>
93-
</component>
94-
<component group="com.amazonaws" name="aws-java-sdk-core" version="1.12.746">
95-
<artifact name="aws-java-sdk-core-1.12.746.jar">
96-
<sha256 value="798fd30dafcf6816e760ad8aef8b3f09c43351ed2e166993bddc4527dbafb0be" origin="Generated by Gradle"/>
97-
</artifact>
98-
</component>
99-
<component group="com.amazonaws" name="aws-java-sdk-ec2" version="1.12.746">
100-
<artifact name="aws-java-sdk-ec2-1.12.746.jar">
101-
<sha256 value="cec22d57e05ed75417b1342e9dd468c6fe7f2fab97c626c065d6495e44d732ad" origin="Generated by Gradle"/>
102-
</artifact>
103-
</component>
104-
<component group="com.amazonaws" name="aws-java-sdk-s3" version="1.12.746">
105-
<artifact name="aws-java-sdk-s3-1.12.746.jar">
106-
<sha256 value="dcd839802c71ffc4d3e6bebc8769a2149bc423baf95f3e6c8214f9c91536bc38" origin="Generated by Gradle"/>
107-
</artifact>
108-
</component>
109-
<component group="com.amazonaws" name="aws-java-sdk-sts" version="1.12.746">
110-
<artifact name="aws-java-sdk-sts-1.12.746.jar">
111-
<sha256 value="2916c28f9a6b6ade40c7e2ffdea3788b198a98b2b16830e02a24ec49fc0fb06f" origin="Generated by Gradle"/>
112-
</artifact>
113-
</component>
114-
<component group="com.amazonaws" name="jmespath-java" version="1.12.746">
115-
<artifact name="jmespath-java-1.12.746.jar">
116-
<sha256 value="d4239a7a1bfacbb9cd1f0e48a46ac95960ab7942c6fbb41ea825161efea72351" origin="Generated by Gradle"/>
117-
</artifact>
118-
</component>
11989
<component group="com.avast.gradle" name="gradle-docker-compose-plugin" version="0.17.5">
12090
<artifact name="gradle-docker-compose-plugin-0.17.5.jar">
12191
<sha256 value="bc818ee3015f7cea73d5a603fc7a542ad82ebb5799e406d9abc81ac42caa90f0" origin="Generated by Gradle"/>
@@ -4682,6 +4652,11 @@
46824652
<sha256 value="ebb1d3d05711ccf2aa9bfc43fcc69fbe32e7be69e006e7952679c2f37d149f4d" origin="Generated by Gradle"/>
46834653
</artifact>
46844654
</component>
4655+
<component group="software.amazon.awssdk" name="arns" version="2.30.38">
4656+
<artifact name="arns-2.30.38.jar">
4657+
<sha256 value="8e2f30384e603bfe793932a143dc6d55fabaaefe85567d09ee6e29adce3892fe" origin="Generated by Gradle"/>
4658+
</artifact>
4659+
</component>
46854660
<component group="software.amazon.awssdk" name="auth" version="2.30.38">
46864661
<artifact name="auth-2.30.38.jar">
46874662
<sha256 value="22d59f9af8111be5219eb33ef480d84c616565913da57cb4eac686076fea370e" origin="Generated by Gradle"/>
@@ -4702,6 +4677,11 @@
47024677
<sha256 value="bfd558e937de70c3260df2356b47a25b562c59b5ebeded6b199846cc9a354fe5" origin="Generated by Gradle"/>
47034678
</artifact>
47044679
</component>
4680+
<component group="software.amazon.awssdk" name="aws-xml-protocol" version="2.30.38">
4681+
<artifact name="aws-xml-protocol-2.30.38.jar">
4682+
<sha256 value="6940bdaaa0dd135a6389bcd51a7bc613cf040cb8a689b5db7dcc18443b33d1fe" origin="Generated by Gradle"/>
4683+
</artifact>
4684+
</component>
47054685
<component group="software.amazon.awssdk" name="bedrockruntime" version="2.30.38">
47064686
<artifact name="bedrockruntime-2.30.38.jar">
47074687
<sha256 value="4424437b49fdf263ea460f4da634d3279ada7f4763827d74fea48c0f8f2afea3" origin="Generated by Gradle"/>
@@ -4802,11 +4782,21 @@
48024782
<sha256 value="da37cb021156b6aae5a30337e270a33a43817a64c59ca7aa4c39074cfda39a4b" origin="Generated by Gradle"/>
48034783
</artifact>
48044784
</component>
4785+
<component group="software.amazon.awssdk" name="s3" version="2.30.38">
4786+
<artifact name="s3-2.30.38.jar">
4787+
<sha256 value="c83dd82a9d82ff8c7d2eb1bdb2ae9f9505b312dad9a6bf0b80bc0136653a3a24" origin="Generated by Gradle"/>
4788+
</artifact>
4789+
</component>
48054790
<component group="software.amazon.awssdk" name="sdk-core" version="2.30.38">
48064791
<artifact name="sdk-core-2.30.38.jar">
48074792
<sha256 value="556463b8c353408d93feab74719d141fcfda7fd3d7b7d1ad3a8a548b7cc2982d" origin="Generated by Gradle"/>
48084793
</artifact>
48094794
</component>
4795+
<component group="software.amazon.awssdk" name="sts" version="2.30.38">
4796+
<artifact name="sts-2.30.38.jar">
4797+
<sha256 value="29a4eb10332893b17a59f81c9d5b3fbf5caa8a386479f9edf5e81b9b8961af63" origin="Generated by Gradle"/>
4798+
</artifact>
4799+
</component>
48104800
<component group="software.amazon.awssdk" name="third-party-jackson-core" version="2.30.38">
48114801
<artifact name="third-party-jackson-core-2.30.38.jar">
48124802
<sha256 value="979215cd78fe0b4abfa7465e6400b29ed90ced24d76323e87b6717195f0214af" origin="Generated by Gradle"/>

modules/repository-s3/build.gradle

Lines changed: 124 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -20,27 +20,49 @@ esplugin {
2020
}
2121

2222
dependencies {
23-
api "com.amazonaws:aws-java-sdk-s3:${versions.awsv1sdk}"
24-
api "com.amazonaws:aws-java-sdk-core:${versions.awsv1sdk}"
25-
api "com.amazonaws:aws-java-sdk-sts:${versions.awsv1sdk}"
26-
api "com.amazonaws:jmespath-java:${versions.awsv1sdk}"
27-
api "org.apache.httpcomponents:httpclient:${versions.httpclient}"
28-
api "org.apache.httpcomponents:httpcore:${versions.httpcore}"
29-
api "commons-logging:commons-logging:${versions.commonslogging}"
30-
api "org.apache.logging.log4j:log4j-1.2-api:${versions.log4j}"
31-
api "commons-codec:commons-codec:${versions.commonscodec}"
32-
api "com.fasterxml.jackson.core:jackson-core:${versions.jackson}"
33-
api "com.fasterxml.jackson.core:jackson-databind:${versions.jackson}"
34-
api "com.fasterxml.jackson.core:jackson-annotations:${versions.jackson}"
35-
api "com.fasterxml.jackson.dataformat:jackson-dataformat-cbor:${versions.jackson}"
36-
api "joda-time:joda-time:2.10.14"
37-
38-
// HACK: javax.xml.bind was removed from default modules in java 9, so we pull the api in here,
39-
// and whitelist this hack in JarHell
40-
api 'javax.xml.bind:jaxb-api:2.2.2'
23+
implementation "software.amazon.awssdk:annotations:${versions.awsv2sdk}"
24+
implementation "software.amazon.awssdk:apache-client:${versions.awsv2sdk}"
25+
implementation "software.amazon.awssdk:auth:${versions.awsv2sdk}"
26+
implementation "software.amazon.awssdk:aws-core:${versions.awsv2sdk}"
27+
implementation "software.amazon.awssdk:aws-xml-protocol:${versions.awsv2sdk}"
28+
implementation "software.amazon.awssdk:http-client-spi:${versions.awsv2sdk}"
29+
implementation "software.amazon.awssdk:identity-spi:${versions.awsv2sdk}"
30+
implementation "software.amazon.awssdk:metrics-spi:${versions.awsv2sdk}"
31+
implementation "software.amazon.awssdk:regions:${versions.awsv2sdk}"
32+
implementation "software.amazon.awssdk:retries-spi:${versions.awsv2sdk}"
33+
implementation "software.amazon.awssdk:retries:${versions.awsv2sdk}"
34+
implementation "software.amazon.awssdk:s3:${versions.awsv2sdk}"
35+
implementation "software.amazon.awssdk:sdk-core:${versions.awsv2sdk}"
36+
implementation "software.amazon.awssdk:services:${versions.awsv2sdk}"
37+
implementation "software.amazon.awssdk:sts:${versions.awsv2sdk}"
38+
implementation "software.amazon.awssdk:utils:${versions.awsv2sdk}"
39+
40+
implementation "org.apache.httpcomponents:httpclient:${versions.httpclient}"
41+
42+
runtimeOnly "commons-codec:commons-codec:${versions.commonscodec}"
43+
runtimeOnly "commons-logging:commons-logging:${versions.commonslogging}"
44+
runtimeOnly "joda-time:joda-time:2.10.14"
45+
runtimeOnly "org.apache.httpcomponents:httpcore:${versions.httpcore}"
46+
runtimeOnly "org.apache.logging.log4j:log4j-1.2-api:${versions.log4j}"
47+
runtimeOnly "org.reactivestreams:reactive-streams:${versions.reactive_streams}"
48+
runtimeOnly "org.slf4j:slf4j-api:${versions.slf4j}"
49+
runtimeOnly "software.amazon.awssdk:arns:${versions.awsv2sdk}"
50+
runtimeOnly "software.amazon.awssdk:aws-query-protocol:${versions.awsv2sdk}"
51+
runtimeOnly "software.amazon.awssdk:checksums-spi:${versions.awsv2sdk}"
52+
runtimeOnly "software.amazon.awssdk:checksums:${versions.awsv2sdk}"
53+
runtimeOnly "software.amazon.awssdk:endpoints-spi:${versions.awsv2sdk}"
54+
runtimeOnly "software.amazon.awssdk:http-auth:${versions.awsv2sdk}"
55+
runtimeOnly "software.amazon.awssdk:http-auth-aws:${versions.awsv2sdk}"
56+
runtimeOnly "software.amazon.awssdk:http-auth-spi:${versions.awsv2sdk}"
57+
runtimeOnly "software.amazon.awssdk:json-utils:${versions.awsv2sdk}"
58+
runtimeOnly "software.amazon.awssdk:profiles:${versions.awsv2sdk}"
59+
runtimeOnly "software.amazon.awssdk:protocol-core:${versions.awsv2sdk}"
60+
runtimeOnly "software.amazon.awssdk:third-party-jackson-core:${versions.awsv2sdk}"
4161

4262
testImplementation project(':test:fixtures:s3-fixture')
63+
testImplementation "software.amazon.awssdk:endpoints-spi:${versions.awsv2sdk}"
4364

65+
internalClusterTestImplementation project(':test:fixtures:aws-fixture-utils')
4466
internalClusterTestImplementation project(':test:fixtures:minio-fixture')
4567
internalClusterTestRuntimeOnly "org.slf4j:slf4j-simple:${versions.slf4j}"
4668

@@ -69,10 +91,34 @@ restResources {
6991
}
7092

7193
tasks.named("dependencyLicenses").configure {
72-
mapping from: /aws-java-sdk-.*/, to: 'aws-java-sdk'
73-
mapping from: /jmespath-java.*/, to: 'aws-java-sdk'
74-
mapping from: /jackson-.*/, to: 'jackson'
75-
mapping from: /jaxb-.*/, to: 'jaxb'
94+
mapping from: 'annotations', to: 'aws-sdk-2'
95+
mapping from: 'apache-client', to: 'aws-sdk-2'
96+
mapping from: 'arns', to: 'aws-sdk-2'
97+
mapping from: 'auth', to: 'aws-sdk-2'
98+
mapping from: 'aws-core', to: 'aws-sdk-2'
99+
mapping from: 'aws-query-protocol', to: 'aws-sdk-2'
100+
mapping from: 'aws-xml-protocol', to: 'aws-sdk-2'
101+
mapping from: 'checksums', to: 'aws-sdk-2'
102+
mapping from: 'checksums-spi', to: 'aws-sdk-2'
103+
mapping from: 'endpoints-spi', to: 'aws-sdk-2'
104+
mapping from: 'http-auth', to: 'aws-sdk-2'
105+
mapping from: 'http-auth-aws', to: 'aws-sdk-2'
106+
mapping from: 'http-auth-spi', to: 'aws-sdk-2'
107+
mapping from: 'http-client-spi', to: 'aws-sdk-2'
108+
mapping from: 'identity-spi', to: 'aws-sdk-2'
109+
mapping from: 'json-utils', to: 'aws-sdk-2'
110+
mapping from: 'metrics-spi', to: 'aws-sdk-2'
111+
mapping from: 'profiles', to: 'aws-sdk-2'
112+
mapping from: 'protocol-core', to: 'aws-sdk-2'
113+
mapping from: 'regions', to: 'aws-sdk-2'
114+
mapping from: 'retries', to: 'aws-sdk-2'
115+
mapping from: 'retries-spi', to: 'aws-sdk-2'
116+
mapping from: 's3', to: 'aws-sdk-2'
117+
mapping from: 'sdk-core', to: 'aws-sdk-2'
118+
mapping from: 'services', to: 'aws-sdk-2'
119+
mapping from: 'sts', to: 'aws-sdk-2'
120+
mapping from: 'third-party-jackson-core', to: 'aws-sdk-2'
121+
mapping from: 'utils', to: 'aws-sdk-2'
76122
}
77123

78124
esplugin.bundleSpec.from('config/repository-s3') {
@@ -86,23 +132,61 @@ tasks.named("internalClusterTest").configure {
86132

87133
tasks.named("thirdPartyAudit").configure {
88134
ignoreMissingClasses(
89-
// classes are missing
90-
'javax.servlet.ServletContextEvent',
91-
'javax.servlet.ServletContextListener',
92-
'org.apache.avalon.framework.logger.Logger',
93-
'org.apache.log.Hierarchy',
94-
'org.apache.log.Logger',
95-
'javax.jms.Message',
96-
// We don't use the kms dependency
97-
'com.amazonaws.services.kms.AWSKMS',
98-
'com.amazonaws.services.kms.AWSKMSClient',
99-
'com.amazonaws.services.kms.AWSKMSClientBuilder',
100-
'com.amazonaws.services.kms.model.DecryptRequest',
101-
'com.amazonaws.services.kms.model.DecryptResult',
102-
'com.amazonaws.services.kms.model.EncryptRequest',
103-
'com.amazonaws.services.kms.model.EncryptResult',
104-
'com.amazonaws.services.kms.model.GenerateDataKeyRequest',
105-
'com.amazonaws.services.kms.model.GenerateDataKeyResult',
106-
'javax.activation.DataHandler'
135+
// missing/unused classes
136+
'javax.servlet.ServletContextEvent',
137+
'javax.servlet.ServletContextListener',
138+
'org.apache.avalon.framework.logger.Logger',
139+
'org.apache.log.Hierarchy',
140+
'org.apache.log.Logger',
141+
'javax.jms.Message',
142+
143+
// We use the Apache HTTP client rather than an AWS common runtime (CRT) one, so we don't need any of these classes:
144+
'software.amazon.awssdk.crt.CRT',
145+
'software.amazon.awssdk.crt.auth.credentials.Credentials',
146+
'software.amazon.awssdk.crt.auth.credentials.CredentialsProvider',
147+
'software.amazon.awssdk.crt.auth.credentials.DelegateCredentialsProvider$DelegateCredentialsProviderBuilder',
148+
'software.amazon.awssdk.crt.auth.signing.AwsSigner',
149+
'software.amazon.awssdk.crt.auth.signing.AwsSigningConfig$AwsSignatureType',
150+
'software.amazon.awssdk.crt.auth.signing.AwsSigningConfig$AwsSignedBodyHeaderType',
151+
'software.amazon.awssdk.crt.auth.signing.AwsSigningConfig$AwsSigningAlgorithm',
152+
'software.amazon.awssdk.crt.auth.signing.AwsSigningConfig',
153+
'software.amazon.awssdk.crt.auth.signing.AwsSigningResult',
154+
'software.amazon.awssdk.crt.http.HttpHeader',
155+
'software.amazon.awssdk.crt.http.HttpMonitoringOptions',
156+
'software.amazon.awssdk.crt.http.HttpProxyEnvironmentVariableSetting$HttpProxyEnvironmentVariableType',
157+
'software.amazon.awssdk.crt.http.HttpProxyEnvironmentVariableSetting',
158+
'software.amazon.awssdk.crt.http.HttpProxyOptions',
159+
'software.amazon.awssdk.crt.http.HttpRequest',
160+
'software.amazon.awssdk.crt.http.HttpRequestBodyStream',
161+
'software.amazon.awssdk.crt.io.ClientBootstrap',
162+
'software.amazon.awssdk.crt.io.ExponentialBackoffRetryOptions',
163+
'software.amazon.awssdk.crt.io.StandardRetryOptions',
164+
'software.amazon.awssdk.crt.io.TlsCipherPreference',
165+
'software.amazon.awssdk.crt.io.TlsContext',
166+
'software.amazon.awssdk.crt.io.TlsContextOptions',
167+
'software.amazon.awssdk.crt.s3.ChecksumAlgorithm',
168+
'software.amazon.awssdk.crt.s3.ChecksumConfig$ChecksumLocation',
169+
'software.amazon.awssdk.crt.s3.ChecksumConfig',
170+
'software.amazon.awssdk.crt.s3.ResumeToken',
171+
'software.amazon.awssdk.crt.s3.S3Client',
172+
'software.amazon.awssdk.crt.s3.S3ClientOptions',
173+
'software.amazon.awssdk.crt.s3.S3FinishedResponseContext',
174+
'software.amazon.awssdk.crt.s3.S3MetaRequest',
175+
'software.amazon.awssdk.crt.s3.S3MetaRequestOptions$MetaRequestType',
176+
'software.amazon.awssdk.crt.s3.S3MetaRequestOptions',
177+
'software.amazon.awssdk.crt.s3.S3MetaRequestProgress',
178+
'software.amazon.awssdk.crt.s3.S3MetaRequestResponseHandler',
179+
'software.amazon.awssdk.crtcore.CrtConfigurationUtils',
180+
'software.amazon.awssdk.crtcore.CrtConnectionHealthConfiguration$Builder',
181+
'software.amazon.awssdk.crtcore.CrtConnectionHealthConfiguration$DefaultBuilder',
182+
'software.amazon.awssdk.crtcore.CrtConnectionHealthConfiguration',
183+
'software.amazon.awssdk.crtcore.CrtProxyConfiguration$Builder',
184+
'software.amazon.awssdk.crtcore.CrtProxyConfiguration$DefaultBuilder',
185+
'software.amazon.awssdk.crtcore.CrtProxyConfiguration',
186+
187+
// We don't use anything eventstream-based so these classes are not needed:
188+
'software.amazon.eventstream.HeaderValue',
189+
'software.amazon.eventstream.Message',
190+
'software.amazon.eventstream.MessageDecoder'
107191
)
108192
}

0 commit comments

Comments
 (0)