Skip to content

ref(aws-serverless): Streamline aws-sdk instrumentation#21564

Merged
mydea merged 4 commits into
developfrom
ref/streamline-aws-sdk-sentry-api
Jun 17, 2026
Merged

ref(aws-serverless): Streamline aws-sdk instrumentation#21564
mydea merged 4 commits into
developfrom
ref/streamline-aws-sdk-sentry-api

Conversation

@mydea

@mydea mydea commented Jun 16, 2026

Copy link
Copy Markdown
Member

Steps 3 + 4 of streamlining the vendored @opentelemetry/instrumentation-aws-sdk (#20944), on top of the unused-code removal in #21563.

Step 4 — migrate to Sentry span APIs

  • _startAwsV3Span now creates spans via startInactiveSpan from @sentry/core instead of this.tracer.startSpan, so aws-sdk spans go through Sentry's sampling/scope/processing pipeline. In the Node SDK this returns the underlying OTel span, so it's still activated for the operation via the OTel context (trace.setSpan + context.with) and bound to the result promise for incoming operations — there's no Sentry equivalent for that context plumbing, so those OTel context APIs are kept (same approach as the fs instrumentation).
  • Dropped span.recordException (Sentry captures errors as separate events; the error status is still set via setStatus).
  • this.tracer is no longer used, so the now-unused tracer/config/startTime params are removed from the responseHook chain across all service extensions.

Step 3 — remove eslint-disable, pass the linter

  • Removed the blanket /* eslint-disable */ from all vendored files.
  • Scoped the genuinely-vendored allowances to a dedicated .oxlintrc override (modeled on the node-fetch vendored override) instead of disabling everything per-file. This is stricter than before — e.g. no-floating-promises is now enforced for these files (and passes).
  • Fixed a few real findings inline rather than disabling: unused config/diag params (_-prefixed), an unused catch binding, and never-assigned spanName locals.

Verification

No change to emitted spans, verified by the dual-version (@smithy/core + @smithy/middleware-stack, ESM + CJS) integration tests (4/4) and the @sentry/aws-serverless unit tests (72/72). Lint is 0 errors / 0 warnings.

Closes #20944

@github-actions

github-actions Bot commented Jun 16, 2026

Copy link
Copy Markdown
Contributor

size-limit report 📦

Path Size % Change Change
@sentry/browser 27.4 kB - -
@sentry/browser - with treeshaking flags 25.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 flags 74.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/react 29.2 kB - -
@sentry/react (incl. Tracing) 48 kB - -
@sentry/vue 32.42 kB - -
@sentry/vue (incl. Tracing) 47.59 kB - -
@sentry/svelte 27.42 kB - -
CDN Bundle 29.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 - uncompressed 88.59 kB - -
CDN Bundle (incl. Tracing) - uncompressed 145.8 kB - -
CDN Bundle (incl. Logs, Metrics) - uncompressed 93.29 kB - -
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 149.77 kB - -
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 218.12 kB - -
CDN Bundle (incl. Tracing, Replay) - uncompressed 264.67 kB - -
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 268.63 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 278.37 kB - -
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 282.31 kB - -
@sentry/nextjs (client) 50.45 kB - -
@sentry/sveltekit (client) 46.12 kB - -
@sentry/core/server 76.08 kB - -
@sentry/core/browser 63.22 kB - -
@sentry/node-core 61.72 kB -0.01% -2 B 🔽
@sentry/node 128.67 kB -0.01% -1 B 🔽
@sentry/node - without tracing 74.1 kB -0.01% -1 B 🔽
@sentry/aws-serverless 85.34 kB -0.14% -114 B 🔽
@sentry/cloudflare (withSentry) - minified 174.19 kB - -
@sentry/cloudflare (withSentry) 435.41 kB - -

View base workflow run

@mydea mydea force-pushed the ref/streamline-aws-sdk-sentry-api branch from b0d77f5 to 9d2d4ed Compare June 16, 2026 09:14
Base automatically changed from ref/streamline-aws-sdk-cleanup to develop June 16, 2026 09:30
mydea and others added 4 commits June 16, 2026 14:08
…ry span APIs

Replaces the OpenTelemetry tracer with Sentry's `startInactiveSpan` for span
creation in the vendored aws-sdk instrumentation, so aws-sdk spans go through
Sentry's sampling/scope/processing pipeline. The span is still activated for the
operation via the OTel context (`trace.setSpan` + `context.with`) and, for
incoming operations, bound to the result promise - there is no Sentry equivalent
for that context plumbing, so those OTel context APIs are kept (same approach as
the fs instrumentation).

* `_startAwsV3Span` now uses `startInactiveSpan` instead of `this.tracer.startSpan`
  (in the Node SDK this returns the underlying OTel span, so it still works with
  the OTel context APIs).
* Drop `span.recordException` - Sentry captures errors as separate events, not as
  span exceptions; the error status is still set via `setStatus`.
* `this.tracer` is no longer used, so the now-unused `tracer` (and the likewise
  unused `config`/`startTime`) parameters are removed from the `responseHook`
  chain across all service extensions.

No change to emitted spans - verified by the dual-version (`@smithy/core` +
`@smithy/middleware-stack`, ESM + CJS) integration tests.

Part of #20944

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…rumentation

Removes the blanket `/* eslint-disable */` from every vendored aws-sdk file and
makes them pass the (type-aware) linter. Instead of disabling all rules per
file, the genuinely-vendored-specific allowances are scoped to a dedicated
`.oxlintrc` override (modeled on the existing `node-fetch` vendored override):
`no-explicit-any`, `no-unsafe-member-access`, `no-this-alias`,
`consistent-type-imports`, `no-unnecessary-type-assertion`, `prefer-for-of`,
`unbound-method`, `max-lines`, `complexity`, `no-param-reassign`.

This is stricter than the previous blanket disable - rules like
`no-floating-promises` are now enforced for these files (and pass).

A few real lint findings were fixed inline rather than disabled: unused
`config`/`diag` parameters (now `_`-prefixed), an unused catch binding, and
`spanName` locals that were declared but never assigned.

No change to emitted spans - verified by the dual-version (`@smithy/core` +
`@smithy/middleware-stack`, ESM + CJS) integration tests.

Part of #20944

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…stHook

The Sentry SDK only used the vendored instrumentation's `preRequestHook` to set
the `auto.otel.aws` span origin. Set the origin directly on the span attributes
in the instrumentation instead, and remove the now-unused `preRequestHook`
config option (and its hook-info types) entirely.

* `_startAwsV3Span` sets `SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN` at span creation.
* `awsIntegration` no longer wires a `preRequestHook`.
* `AwsSdkInstrumentationConfig` collapses to `InstrumentationConfig` (no
  Sentry-specific options remain).
* `moduleVersion` is no longer threaded into the resolve patch (it was only used
  by the removed hook).

No change to emitted spans - verified by the dual-version integration tests.

Part of #20944

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@mydea mydea force-pushed the ref/streamline-aws-sdk-sentry-api branch from a8dfb9d to b5dde44 Compare June 16, 2026 12:08
@mydea mydea marked this pull request as ready for review June 16, 2026 12:08
@mydea mydea requested a review from a team as a code owner June 16, 2026 12:08
@mydea mydea requested review from JPeer264 and andreiborza and removed request for a team June 16, 2026 12:08
@mydea mydea self-assigned this Jun 16, 2026

@andreiborza andreiborza left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

@mydea mydea changed the title ref(aws-serverless): Migrate vendored aws-sdk instrumentation to Sentry APIs + drop eslint-disable ref(aws-serverless): Streamline aws-sdk instrumentation Jun 17, 2026
@mydea mydea merged commit 1c5203b into develop Jun 17, 2026
532 of 534 checks passed
@mydea mydea deleted the ref/streamline-aws-sdk-sentry-api branch June 17, 2026 06:48
Sign up for free to 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.

Streamline @opentelemetry/instrumentation-aws-sdk

2 participants