2727import org .apache .http .protocol .HttpCoreContext ;
2828import software .amazon .awssdk .auth .credentials .AwsCredentials ;
2929import software .amazon .awssdk .auth .credentials .AwsCredentialsProvider ;
30- import software .amazon .awssdk .auth .signer .Aws4Signer ;
31- import software .amazon .awssdk .auth .signer .params .Aws4SignerParams ;
3230import software .amazon .awssdk .http .ContentStreamProvider ;
3331import software .amazon .awssdk .http .SdkHttpFullRequest ;
3432import 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 ;
3535import software .amazon .awssdk .regions .Region ;
3636
3737class 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,15 @@ 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+ .putProperty ( AwsV4HttpSigner .SERVICE_SIGNING_NAME , service )
74+ .putProperty ( AwsV4HttpSigner .REGION_NAME , region .id () ) );
7875
7976 // The AWS SDK added some headers.
8077 // Let's just override the existing headers with whatever the AWS SDK came up with.
8178 // We don't expect signing to affect anything else (path, query, content, ...).
82- for ( Map .Entry <String , List <String >> header : awsRequest .headers ().entrySet () ) {
79+ for ( Map .Entry <String , List <String >> header : signedRequest . request () .headers ().entrySet () ) {
8380 String name = header .getKey ();
8481 boolean first = true ;
8582 for ( String value : header .getValue () ) {
@@ -94,7 +91,7 @@ private void sign(HttpRequest request, HttpContext context, HttpEntityContentStr
9491 }
9592
9693 if ( log .isTraceEnabled () ) {
97- log .tracef ( "AWS request (after signing): %s" , awsRequest );
94+ log .tracef ( "AWS request (after signing): %s" , signedRequest );
9895 log .tracef ( "HTTP request (after signing): %s" , request );
9996 }
10097 }
0 commit comments