File tree Expand file tree Collapse file tree 2 files changed +17
-1
lines changed
aws-distro-opentelemetry-node-autoinstrumentation/src Expand file tree Collapse file tree 2 files changed +17
-1
lines changed Original file line number Diff line number Diff line change @@ -448,6 +448,7 @@ export class AwsSpanProcessorProvider {
448448 return new OTLPHttpTraceExporter ( ) ;
449449 case 'http/protobuf' :
450450 if ( otlp_exporter_traces_endpoint && isXrayOtlpEndpoint ( otlp_exporter_traces_endpoint ) ) {
451+ diag . debug ( 'Detected XRay OTLP Traces endpoint. Switching exporter to OtlpAwsSpanExporter' ) ;
451452 return new OTLPAwsSpanExporter ( otlp_exporter_traces_endpoint ) ;
452453 }
453454 return new OTLPProtoTraceExporter ( ) ;
@@ -457,6 +458,7 @@ export class AwsSpanProcessorProvider {
457458 default :
458459 diag . warn ( `Unsupported OTLP traces protocol: ${ protocol } . Using http/protobuf.` ) ;
459460 if ( otlp_exporter_traces_endpoint && isXrayOtlpEndpoint ( otlp_exporter_traces_endpoint ) ) {
461+ diag . debug ( 'Detected XRay OTLP Traces endpoint. Switching exporter to OtlpAwsSpanExporter' ) ;
460462 return new OTLPAwsSpanExporter ( otlp_exporter_traces_endpoint ) ;
461463 }
462464 return new OTLPProtoTraceExporter ( ) ;
@@ -672,3 +674,4 @@ function isXrayOtlpEndpoint(otlpEndpoint: string | undefined) {
672674}
673675
674676// END The OpenTelemetry Authors code
677+
Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ export class OTLPAwsSpanExporter extends OTLPProtoTraceExporter {
6666 path : url . pathname ,
6767 body : serializedSpans ,
6868 headers : {
69- ...oldHeaders ,
69+ ...this . removeSigV4Headers ( oldHeaders ) ,
7070 host : url . hostname ,
7171 } ,
7272 } ) ;
@@ -93,6 +93,18 @@ export class OTLPAwsSpanExporter extends OTLPProtoTraceExporter {
9393 await super . export ( items , resultCallback ) ;
9494 }
9595
96+ // Need to ensure old SigV4 headers do not remain when we inject new SigV4 authorization headers.
97+ private removeSigV4Headers ( headers : Record < string , string > ) {
98+ const newHeaders : Record < string , string > = { } ;
99+
100+ for ( const key in headers ) {
101+ if ( ! key . toLowerCase ( ) . startsWith ( 'x-amz-' ) && key . toLowerCase ( ) !== 'authorization' ) {
102+ newHeaders [ key ] = headers [ key ] ;
103+ }
104+ }
105+ return newHeaders ;
106+ }
107+
96108 private initDependencies ( ) : any {
97109 if ( getNodeVersion ( ) < 16 ) {
98110 diag . error ( 'SigV4 signing requires atleast Node major version 16' ) ;
@@ -127,3 +139,4 @@ export class OTLPAwsSpanExporter extends OTLPProtoTraceExporter {
127139 return newConfig ;
128140 }
129141}
142+
You can’t perform that action at this time.
0 commit comments