@@ -466,7 +466,9 @@ public final long getRemainingTimeInMillis() {
466466 request .setRequestCredentialsProvider (v1CredentialsProvider );
467467
468468 try {
469- return requestFunction .apply (request );
469+ ResultT respose = requestFunction .apply (request );
470+ logRequestMetadata (request , respose );
471+ return respose ;
470472 } catch (final Throwable e ) {
471473 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
472474 throw e ;
@@ -486,7 +488,9 @@ public final long getRemainingTimeInMillis() {
486488 RequestT wrappedRequest = (RequestT ) request .toBuilder ().overrideConfiguration (overrideConfiguration ).build ();
487489
488490 try {
489- return requestFunction .apply (wrappedRequest );
491+ ResultT response = requestFunction .apply (wrappedRequest );
492+ logRequestMetadataV2 (request , response );
493+ return response ;
490494 } catch (final Throwable e ) {
491495 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
492496 throw e ;
@@ -505,7 +509,11 @@ public final long getRemainingTimeInMillis() {
505509 RequestT wrappedRequest = (RequestT ) request .toBuilder ().overrideConfiguration (overrideConfiguration ).build ();
506510
507511 try {
508- return requestFunction .apply (wrappedRequest );
512+ CompletableFuture <ResultT > response = requestFunction .apply (wrappedRequest ).thenApplyAsync (resultT -> {
513+ logRequestMetadataV2 (request , resultT );
514+ return resultT ;
515+ });
516+ return response ;
509517 } catch (final Throwable e ) {
510518 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
511519 throw e ;
@@ -523,7 +531,9 @@ public final long getRemainingTimeInMillis() {
523531 RequestT wrappedRequest = (RequestT ) request .toBuilder ().overrideConfiguration (overrideConfiguration ).build ();
524532
525533 try {
526- return requestFunction .apply (wrappedRequest );
534+ IterableT response = requestFunction .apply (wrappedRequest );
535+ response .forEach (r -> logRequestMetadataV2 (request , r ));
536+ return response ;
527537 } catch (final Throwable e ) {
528538 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
529539 throw e ;
@@ -542,7 +552,9 @@ public final long getRemainingTimeInMillis() {
542552 RequestT wrappedRequest = (RequestT ) request .toBuilder ().overrideConfiguration (overrideConfiguration ).build ();
543553
544554 try {
545- return requestFunction .apply (wrappedRequest );
555+ ResponseInputStream <ResultT > response = requestFunction .apply (wrappedRequest );
556+ logRequestMetadataV2 (request , response .response ());
557+ return response ;
546558 } catch (final Throwable e ) {
547559 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
548560 throw e ;
@@ -561,7 +573,9 @@ public final long getRemainingTimeInMillis() {
561573 RequestT wrappedRequest = (RequestT ) request .toBuilder ().overrideConfiguration (overrideConfiguration ).build ();
562574
563575 try {
564- return requestFunction .apply (wrappedRequest );
576+ ResponseBytes <ResultT > response = requestFunction .apply (wrappedRequest );
577+ logRequestMetadataV2 (request , response .response ());
578+ return response ;
565579 } catch (final Throwable e ) {
566580 loggerProxy .log (String .format ("Failed to execute remote function: {%s}" , e .getMessage ()));
567581 throw e ;
@@ -623,4 +637,33 @@ public final long getRemainingTimeInMillis() {
623637 return ProgressEvent .failed (model , context , HandlerErrorCode .InternalFailure , e .getMessage ());
624638
625639 }
640+
641+ private <RequestT extends AmazonWebServiceRequest , ResultT extends AmazonWebServiceResult <ResponseMetadata >>
642+ void
643+ logRequestMetadata (final RequestT request , final ResultT response ) {
644+ try {
645+ String requestName = request .getClass ().getSimpleName ();
646+ String requestId = (response == null || response .getSdkResponseMetadata () == null )
647+ ? ""
648+ : response .getSdkResponseMetadata ().getRequestId ();
649+ loggerProxy
650+ .log (String .format ("{\" apiRequest\" : {\" requestId\" : \" %s\" , \" requestName\" : \" %s\" }}" , requestId , requestName ));
651+ } catch (final Exception e ) {
652+ loggerProxy .log (e .getMessage ());
653+ }
654+ }
655+
656+ private <RequestT extends AwsRequest , ResultT extends AwsResponse > void logRequestMetadataV2 (final RequestT request ,
657+ final ResultT response ) {
658+ try {
659+ String requestName = request .getClass ().getSimpleName ();
660+ String requestId = (response == null || response .responseMetadata () == null )
661+ ? ""
662+ : response .responseMetadata ().requestId ();
663+ loggerProxy
664+ .log (String .format ("{\" apiRequest\" : {\" requestId\" : \" %s\" , \" requestName\" : \" %s\" }}" , requestId , requestName ));
665+ } catch (final Exception e ) {
666+ loggerProxy .log (e .getMessage ());
667+ }
668+ }
626669}
0 commit comments