feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0 - #21548

Merged
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation
Jun 15, 2026
Merged

feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0#21548
mydea merged 3 commits into
developfrom
fix/aws-sdk-smithy-core-instrumentation

Conversation

@mydea

@mydeamydea commented Jun 15, 2026

Copy link
Copy Markdown
Member

The vendored @opentelemetry/instrumentation-aws-sdk had almost no test coverage — only S3 PutObject was exercised, leaving DynamoDB, SQS, SNS, Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service-extension code) completely untested.

This adds nock-based integration tests (mirroring the existing S3 test) that lock in the current span output (name, op, origin, and service-specific attributes) for every service the SDK instruments:

  • S3 — expanded to PutObject, GetObject, and an errored GetObject (status: internal_error)
  • DynamoDB — PutItem + Query (op: db, db.* + aws.dynamodb.*)
  • SQS — SendMessage + ReceiveMessage (messaging.*, PRODUCER/CONSUMER, message id, batch count)
  • SNS — Publish (messaging.*, topic ARN)
  • Lambda — Invoke (faas.*)
  • Kinesis — PutRecord (stream name)
  • SecretsManager — GetSecretValue (secret ARN)
  • StepFunctions — StartExecution (state machine ARN)

This showed that actually we did not instrument newer versions of the AWS SDK. So this PR also vendors a fix for this from the upstream otel instrumentation. Integration tests run for both sets of versions.

@smithy/core@3.24.0 moved the Client class out of @smithy/smithy-client into the @smithy/core/client bundle and turned constructStack into a closed-over local. Our vendored aws-sdk instrumentation creates spans by wrapping constructStack (exported from @smithy/middleware-stack), so it silently produced no spans for any AWS service on @aws-sdk/* >= 3.1046.0. See #21546 for the full root-cause writeup.

This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530, released in @opentelemetry/instrumentation-aws-sdk@0.74.0):

  • Patch Client.prototype.send in @smithy/core/dist-cjs/submodules/client/index.js for @smithy/core >= 3.24.0.
  • From within the send patch, patch the live middlewareStack instance directly (its resolve is the span-creation point) rather than the no-longer-patchable constructStack export.
  • Guard clone/concat wrapping with isWrapped so repeated patching is safe.

Fixes#21546

…strumentation
The vendored `@opentelemetry/instrumentation-aws-sdk` had almost no test
coverage - only S3 `PutObject` was exercised, leaving DynamoDB, SQS, SNS,
Lambda, Kinesis, SecretsManager and StepFunctions (~97% of the service
extension code) completely untested.
This adds `nock`-based integration tests (mirroring the existing S3 test)
covering the span name, op, origin and service-specific attributes for each
service the SDK instruments:
* S3 - expanded to PutObject, GetObject and an errored GetObject
* DynamoDB - PutItem + Query (db.* attributes, op `db`)
* SQS - SendMessage + ReceiveMessage (messaging.* attributes, PRODUCER/CONSUMER)
* SNS - Publish (messaging.* attributes, topic ARN)
* Lambda - Invoke (faas.* attributes)
* Kinesis - PutRecord (stream name)
* SecretsManager - GetSecretValue (secret ARN)
* StepFunctions - StartExecution (state machine ARN)
This is step 1 of streamlining the vendored aws-sdk instrumentation - the
tests lock in current behavior so the upcoming cleanup and Sentry-API
migration can be done safely.
Notes:
* The new `@aws-sdk/client-*` packages are pinned to `3.1041.0` (matching the
existing S3 dep) because newer clients route through `@smithy/core`, which
the current instrumentation does not patch.
* The Kinesis client is forced onto the HTTP/1 request handler because it
defaults to HTTP/2, which `nock` cannot intercept.
Addresses step 1 of #20944
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5a2d59 to 8b34564CompareJune 15, 2026 13:26
… 3.24.0
`@smithy/core@3.24.0` moved the `Client` class out of `@smithy/smithy-client`
into the `@smithy/core/client` bundle and turned `constructStack` into a
closed-over local, so the vendored instrumentation - which created spans by
wrapping `constructStack` exported from `@smithy/middleware-stack` - silently
produced no spans for any AWS service on `@aws-sdk/*` >= 3.1046.0.
This backports the upstream fix (open-telemetry/opentelemetry-js-contrib#3530,
released in @opentelemetry/instrumentation-aws-sdk@0.74.0):
* Patch `Client.prototype.send` in `@smithy/core/dist-cjs/submodules/client/index.js`
for `@smithy/core` >= 3.24.0.
* From within the `send` patch, patch the live `middlewareStack` instance
directly (its `resolve` is the span-creation point) instead of relying on the
no-longer-patchable `constructStack` export.
* Guard `clone`/`concat` wrapping with `isWrapped` so repeated patching is safe.
The aws-integration tests are consolidated into a single scenario that exercises
all instrumented services, and run via `createEsmAndCjsTests` + `describe.each`
against two dependency sets:
* `latest` - the workspace `@aws-sdk/*` (`@smithy/core` >= 3.24.0, the new path)
* `v3.1041.0` - aws-sdk 3.1041.0 pinned together with the pre-`@smithy/core`
smithy stack via `additionalDependencies`, exercising the old
`@smithy/middleware-stack` path
Both run the same assertions in ESM and CJS, proving spans are produced on both
architectures. Pinning only the client is not enough - `@smithy/smithy-client`
must also be pinned < 4.13, otherwise it pulls `@smithy/core` >= 3.24.0 again.
Fixes#21546
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from 8b34564 to b2ced23CompareJune 15, 2026 13:29
@mydea
mydea requested a review from andreiborzaJune 15, 2026 13:31
@mydea
mydea changed the base branch from test/aws-sdk-instrumentation-coverage to developJune 15, 2026 13:32
@mydeamydea self-assigned this Jun 15, 2026
@mydea
mydea marked this pull request as ready for review June 15, 2026 13:34
@mydea
mydea requested a review from a team as a code ownerJune 15, 2026 13:34
@mydea
mydea requested review from JPeer264 and removed request for a teamJune 15, 2026 13:34
@mydeamydea changed the title fix(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0Jun 15, 2026
@mydeamydea changed the title feat(aws-serverless): Instrument aws-sdk clients using @smithy/core >= 3.24.0feat(aws-serverless): Instrument aws-sdk clients >= 3.1046.0Jun 15, 2026
@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from b2ced23 to f5d221fCompareJune 15, 2026 14:06
@github-actions

github-actionsBot commented Jun 15, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

PathSize% ChangeChange
@sentry/browser27.4 kB--
@sentry/browser - with treeshaking flags25.84 kB--
@sentry/browser (incl. Tracing)45.7 kB--
@sentry/browser (incl. Tracing + Span Streaming)47.94 kB--
@sentry/browser (incl. Tracing, Profiling)50.5 kB--
@sentry/browser (incl. Tracing, Replay)84.92 kB--
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags74.53 kB--
@sentry/browser (incl. Tracing, Replay with Canvas)89.61 kB--
@sentry/browser (incl. Tracing, Replay, Feedback)102.3 kB--
@sentry/browser (incl. Feedback)44.56 kB--
@sentry/browser (incl. sendFeedback)32.2 kB--
@sentry/browser (incl. FeedbackAsync)37.31 kB--
@sentry/browser (incl. Metrics)28.47 kB--
@sentry/browser (incl. Logs)28.71 kB--
@sentry/browser (incl. Metrics & Logs)29.4 kB--
@sentry/react29.2 kB--
@sentry/react (incl. Tracing)48 kB--
@sentry/vue32.42 kB--
@sentry/vue (incl. Tracing)47.59 kB--
@sentry/svelte27.42 kB--
CDN Bundle29.79 kB--
CDN Bundle (incl. Tracing)48.2 kB--
CDN Bundle (incl. Logs, Metrics)31.33 kB--
CDN Bundle (incl. Tracing, Logs, Metrics)49.49 kB--
CDN Bundle (incl. Replay, Logs, Metrics)70.62 kB--
CDN Bundle (incl. Tracing, Replay)85.52 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics)86.77 kB--
CDN Bundle (incl. Tracing, Replay, Feedback)91.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics)92.62 kB--
CDN Bundle - uncompressed88.59 kB--
CDN Bundle (incl. Tracing) - uncompressed145.8 kB--
CDN Bundle (incl. Logs, Metrics) - uncompressed93.29 kB--
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed149.77 kB--
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed218.12 kB--
CDN Bundle (incl. Tracing, Replay) - uncompressed264.67 kB--
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed268.63 kB--
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed278.37 kB--
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed282.31 kB--
@sentry/nextjs (client)50.45 kB--
@sentry/sveltekit (client)46.12 kB--
@sentry/core/server76.08 kB--
@sentry/core/browser63.22 kB--
@sentry/node-core61.72 kB--
@sentry/node130.45 kB+0.01%+1 B 🔺
@sentry/node - without tracing74.11 kB+0.01%+1 B 🔺
@sentry/aws-serverless86.35 kB+0.08%+64 B 🔺
@sentry/cloudflare (withSentry) - minified173.69 kB--
@sentry/cloudflare (withSentry)433.85 kB--

View base workflow run

@mydea
mydeaforce-pushed the fix/aws-sdk-smithy-core-instrumentation branch from f5d221f to 0cf5876CompareJune 15, 2026 14:31
@mydea
mydea merged commit 72b3aed into developJun 15, 2026
273 checks passed
@mydea
mydea deleted the fix/aws-sdk-smithy-core-instrumentation branch June 15, 2026 14:53
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ensure AWS SDK instrumentation works >= 3.1046.0

2 participants

@mydea@andreiborza