Skip to content

Commit f06fe4a

Browse files
committed
HSEARCH-5179 Replace deprecated request signer
1 parent d799977 commit f06fe4a

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

backend/elasticsearch-aws/src/main/java/org/hibernate/search/backend/elasticsearch/aws/impl/AwsSigningRequestInterceptor.java

Lines changed: 11 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -27,24 +27,24 @@
2727
import org.apache.http.protocol.HttpCoreContext;
2828
import software.amazon.awssdk.auth.credentials.AwsCredentials;
2929
import software.amazon.awssdk.auth.credentials.AwsCredentialsProvider;
30-
import software.amazon.awssdk.auth.signer.Aws4Signer;
31-
import software.amazon.awssdk.auth.signer.params.Aws4SignerParams;
3230
import software.amazon.awssdk.http.ContentStreamProvider;
3331
import software.amazon.awssdk.http.SdkHttpFullRequest;
3432
import software.amazon.awssdk.http.SdkHttpMethod;
33+
import software.amazon.awssdk.http.auth.aws.signer.AwsV4HttpSigner;
34+
import software.amazon.awssdk.http.auth.spi.signer.SignedRequest;
3535
import software.amazon.awssdk.regions.Region;
3636

3737
class AwsSigningRequestInterceptor implements HttpRequestInterceptor {
3838

3939
private static final Log log = LoggerFactory.make( Log.class, MethodHandles.lookup() );
4040

41-
private final Aws4Signer signer;
41+
private final AwsV4HttpSigner signer;
4242
private final Region region;
4343
private final String service;
4444
private final AwsCredentialsProvider credentialsProvider;
4545

4646
AwsSigningRequestInterceptor(Region region, String service, AwsCredentialsProvider credentialsProvider) {
47-
this.signer = Aws4Signer.create();
47+
this.signer = AwsV4HttpSigner.create();
4848
this.region = region;
4949
this.service = service;
5050
this.credentialsProvider = credentialsProvider;
@@ -68,18 +68,16 @@ private void sign(HttpRequest request, HttpContext context, HttpEntityContentStr
6868
AwsCredentials credentials = credentialsProvider.resolveCredentials();
6969
log.tracef( "AWS credentials: %s", credentials );
7070

71-
Aws4SignerParams signerParams = Aws4SignerParams.builder()
72-
.awsCredentials( credentials )
73-
.signingRegion( region )
74-
.signingName( service )
75-
.build();
76-
77-
awsRequest = signer.sign( awsRequest, signerParams );
71+
SignedRequest signedRequest = signer.sign( r -> r.identity( credentials )
72+
.request( awsRequest )
73+
.payload( awsRequest.contentStreamProvider().orElse( null ) )
74+
.putProperty( AwsV4HttpSigner.SERVICE_SIGNING_NAME, service )
75+
.putProperty( AwsV4HttpSigner.REGION_NAME, region.id() ) );
7876

7977
// The AWS SDK added some headers.
8078
// Let's just override the existing headers with whatever the AWS SDK came up with.
8179
// We don't expect signing to affect anything else (path, query, content, ...).
82-
for ( Map.Entry<String, List<String>> header : awsRequest.headers().entrySet() ) {
80+
for ( Map.Entry<String, List<String>> header : signedRequest.request().headers().entrySet() ) {
8381
String name = header.getKey();
8482
boolean first = true;
8583
for ( String value : header.getValue() ) {
@@ -94,7 +92,7 @@ private void sign(HttpRequest request, HttpContext context, HttpEntityContentStr
9492
}
9593

9694
if ( log.isTraceEnabled() ) {
97-
log.tracef( "AWS request (after signing): %s", awsRequest );
95+
log.tracef( "AWS request (after signing): %s", signedRequest );
9896
log.tracef( "HTTP request (after signing): %s", request );
9997
}
10098
}

0 commit comments

Comments
 (0)