diff --git a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts index c74f0433c9..b82192ce82 100644 --- a/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts +++ b/plugins/node/opentelemetry-instrumentation-aws-sdk/src/aws-sdk.ts @@ -112,6 +112,21 @@ export class AwsInstrumentation extends InstrumentationBase { v3MiddlewareStackFileNewVersions, ]); + // patch for @smithy/middleware-stack for aws-sdk packages v3.363.0+ + const v3SmithyMiddlewareStackFile = new InstrumentationNodeModuleFile( + '@smithy/middleware-stack/dist-cjs/MiddlewareStack.js', + ['>=1.0.1'], + this.patchV3ConstructStack.bind(this), + this.unpatchV3ConstructStack.bind(this) + ); + const v3SmithyMiddlewareStack = new InstrumentationNodeModuleDefinition( + '@smithy/middleware-stack', + ['>=2.0.0'], + undefined, + undefined, + [v3SmithyMiddlewareStackFile] + ); + const v3SmithyClient = new InstrumentationNodeModuleDefinition( '@aws-sdk/smithy-client', ['^3.1.0'], @@ -119,6 +134,14 @@ export class AwsInstrumentation extends InstrumentationBase { this.unpatchV3SmithyClient.bind(this) ); + // patch for new @smithy/smithy-client for aws-sdk packages v3.363.0+ + const v3NewSmithyClient = new InstrumentationNodeModuleDefinition( + '@smithy/smithy-client', + ['>=1.0.3'], + this.patchV3SmithyClient.bind(this), + this.unpatchV3SmithyClient.bind(this) + ); + const v2Request = new InstrumentationNodeModuleFile( 'aws-sdk/lib/core.js', ['^2.308.0'], @@ -134,7 +157,13 @@ export class AwsInstrumentation extends InstrumentationBase { [v2Request] ); - return [v2Module, v3MiddlewareStack, v3SmithyClient]; + return [ + v2Module, + v3MiddlewareStack, + v3SmithyMiddlewareStack, + v3SmithyClient, + v3NewSmithyClient, + ]; } protected patchV3ConstructStack(moduleExports: any, moduleVersion?: string) {