feat(aws-serverless): Replace OTel Lambda instrumentation with handler redirection - #22079
Conversation
…r redirection Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
size-limit report 📦
|
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 2 potential issues.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 2d5a898. Configure here.
Lms24
left a comment
There was a problem hiding this comment.
The approach seems reasonable to me, thanks for explaining it offline!
Had some minor comments regarding conventions and attribute deprecations.
| return { file: basePath, format: 'cjs' }; | ||
| } | ||
| if (isFile(`${basePath}.js`)) { | ||
| return { file: `${basePath}.js`, format: hasTypeModulePackageJson(path.dirname(basePath)) ? 'esm' : 'cjs' }; |
There was a problem hiding this comment.
l: Do lambdas always have a package.json? Or IOW, could we run into issues here where users define an index.js file in ESM but we identify CJS?
There was a problem hiding this comment.
I think that's an issue indeed but that issue also exists for the user, i.e. AWS looks at it the same way. If there's a .js file but no package.json then it automatically treats it as CJS regardless of what's in the file.
| * @deprecated Removed from the stable semantic conventions; not present in `@sentry/conventions`, so vendored here. | ||
| * Removed from the stable semantic conventions; not present in `@sentry/conventions`, so vendored here. | ||
| */ | ||
| export const ATTR_FAAS_EXECUTION = 'faas.execution'; |
There was a problem hiding this comment.
m (but no blocker for this PR, since we already send the attribute today): We should add this to conventions. OR, there's already in OTEL faas.invocation.id which sounds like the replacement to this?
Either way, faas.execution should be added to conventions and depending on if we use a replacement, it needs to be deprecated.
There was a problem hiding this comment.
Right, actually OTel already replaced this in their latest instrumentation update to use faas.invocation.id. I'll add a TODO that we should switch to faas.invocation.id in v11 but keep it as is for now.
There was a problem hiding this comment.
And I'll add it as a deprecated attribute to the conventions :)
There was a problem hiding this comment.
Added to conventions in #22079 (comment), updated the comment in 079361e
| * Removed from the stable semantic conventions; not present in `@sentry/conventions`, so vendored here. | ||
| */ | ||
| export const ATTR_FAAS_ID = 'faas.id'; |
There was a problem hiding this comment.
m: I'm not sure what the best replacement for this is (but I guess there should be one since it was deprecated). But similarly to above, we should add this attribute to conventions and mark it as deprecated if there is a replacement.
There was a problem hiding this comment.
Replacement is https://getsentry.github.io/sentry-conventions/attributes/cloud/#cloud-resource_id. I'll note this for v11 but keep as is for v10.
There was a problem hiding this comment.
Added to conventions with getsentry/sentry-conventions#475 and updated comment in 3c049fc.
`@sentry/vue` `^10.0.0` → `^10.70.0` (dependencies). This updates what `package.json` declares. The range may already have permitted the newer version, in which case only the declaration was stale. Lockfile resolved by `npm`, with no install and no lifecycle scripts. Produced by a script, not a model — a lockfile is not something to write by hand. <details><summary>Release notes</summary> ### 10.70.0 - feat(v10/core): Support stable MCP SDK v2 ([#22986](getsentry/sentry-javascript#22986)) - feat(v10/deps): Bump `@sentry/node-cpu-profiler` to 2.4.3 ([#22992](getsentry/sentry-javascript#22992)) - feat(v10/solid,solidstart): Support `@solidjs/router` v1 ([#23163](getsentry/sentry-javascript#23163)) - fix(v10/cloudflare): Fork the isolation scope for Durable Object methods ([#23189](getsentry/sentry-javascript#23189)) - fix(v10/cloudflare): Get original waituntil in workflows ([#23192](getsentry/sentry-javascript#23192)) - fix(v10/cloudflare): Instrument DO RPC methods on the prototype, not a Proxy ([#23190](getsentry/sentry-javascript#23190)) - fix(v10/cloudflare): Set agent conversation id on the `onRequest` path ([#22985](getsentry/sentry-javascript#22985)) - fix(v10/cloudflare): Set conversation id independent of session name ([#23193](getsentry/sentry-javascript#23193)) - fix(v10/cloudflare): Try/catch on non-configurable prototypes ([#23191](https://github.com/getsentry/sentry-javascript …truncated; see the release link above. ### 10.69.0 ### Important Changes - **feat(v10/cloudflare): Add `instrumentAgentWithSentry` for Cloudflare Agents ([#22786](getsentry/sentry-javascript#22786 The Cloudflare SDK adds a new `instrumentAgentWithSentry` API for [Cloudflare Agents](https://agents.cloudflare.com/). It works like `instrumentDurableObjectWithSentry` for `Agent` classes from the `agents` SDK and additionally creates spans for `@callable` RPC methods and automatically sets the `conversationId` based on the agent's name. When building with the Sentry Vite plugin, Agents are instrumented automatically ([#22788](getsentry/sentry-javascript#22788)). ### Other Changes - feat(v10/cloudflare): Add Spotlight integration for local dev event forwarding ([#22796](getsentry/sentry-javascript#22796)) - feat(v10/cloudflare): Add wranglerConfigPath to Vite options ([#22803](getsentry/sentry-javascript#22803)) - feat(v10/cloudflare): Filter framework-internal Durable Object storage spans ([#22770](getsentry/sentry-javascript#22770)) - feat(v10/cloudflare): Instrument Agents automatically ([#22788](https://gith …truncated; see the release link above. ### 10.68.0 - feat(cloudflare): Add @sentry/cloudflare/vite orchestrion plugin ([#21967](getsentry/sentry-javascript#21967)) - feat(nestjs): Support WebSocket errors in SentryGlobalFilter ([#22224](getsentry/sentry-javascript#22224)) - feat(node,server-utils): Set `cache.key` on dataloader spans and capture redis delete operations as `cache.remove` ([#22389](getsentry/sentry-javascript#22389)) - feat(server-utils): Allow integrations to be part of marker ([#22094](getsentry/sentry-javascript#22094)) - feat(server-utils): Migrate `FirebaseInstrumentation` to orchestrion ([#22141](getsentry/sentry-javascript#22141)) - feat(server-utils): Warn when bundler config has instrumented module in external ([#22379](getsentry/sentry-javascript#22379)) - feat(v10): Add `http.route` attribute to `http.server` spans with parameterized routes ([#22564](getsentry/sentry-javascript#22564)) - feat(v10): Add `url.full` and `url.path` to `http.server` spans ([#22533](getsentry/sentry-javascript#22533)) - feat(v10/cloudflare) …truncated; see the release link above. ### 10.67.0 ### Important Changes - **feat(sveltekit): Add support for SvelteKit 3 ([#22264](getsentry/sentry-javascript#22264 The SvelteKit SDK now supports the pre-release of SvelteKit 3, including client-side pageload and navigation tracing and server-side native tracing, alongside continued SvelteKit 2 support. No Sentry-specific setup changes are required. The SDK detects your SvelteKit version and picks the right implementation automatically. ### Other Changes - feat(aws-serverless): Use orchestrion aws-sdk integration under diagnostics-channel opt-in ([#22143](getsentry/sentry-javascript#22143)) - feat(cloudflare): Auto-instrument Workers AI binding via env instrumentation ([#22126](getsentry/sentry-javascript#22126)) - feat(cloudflare): Instrument Cloudflare rate limiter bindings ([#22035](getsentry/sentry-javascript#22035)) - feat(core): Instrument workers-ai-provider ([#22119](getsentry/sentry-javascript#22119)) - feat(core): Rename `queryParams` to `urlQueryParams` ([#22217](getsentry/sentry-javascript#22217)) - feat(mongodb): impl …truncated; see the release link above. ### 10.66.0 - chore(node-core): Deprecate `@sentry/node-core` package ([#22285](getsentry/sentry-javascript#22285)) - chore(tanstackstart): Deprecate `@sentry/tanstackstart` package ([#22284](getsentry/sentry-javascript#22284)) - deps(server-utils): bump @apm-js-collab/code-transformer and tracing-hooks ([#22172](getsentry/sentry-javascript#22172)) - feat(bun): Add `initWithoutDefaultIntegrations` and `getDefaultIntegrationsWithoutPerformance` ([#22036](getsentry/sentry-javascript#22036)) - feat(bundlers): Add orchestrion bundler plugins ([#22124](getsentry/sentry-javascript#22124)) - feat(cloudflare): Support Cloudflare types v5 & newer wrangler versions ([#22180](getsentry/sentry-javascript#22180)) - feat(core): Add and use `dataCollection.databaseQueryData` (for e.g. Supabase filter values and mutation bodies) ([#22219](getsentry/sentry-javascript#22219)) - feat(core): Add and use `dataCollection.graphQL` ([#22221](getsentry/sentry-javascript#22221)) - feat(core): Add stringify helper and make AI-traci …truncated; see the release link above. ### 10.65.0 - feat(angular): Set `url` attributes on pageload and navigation spans ([#21985](getsentry/sentry-javascript#21985)) - feat(astro): Set `url.template` on pageload spans ([#22011](getsentry/sentry-javascript#22011)) - feat(aws-serverless): Replace OTel Lambda instrumentation with handler redirection ([#22079](getsentry/sentry-javascript#22079)) - feat(browser): Set `url.path` and `url.full` on pageload and navigation spans ([#21952](getsentry/sentry-javascript#21952)) - feat(bun): warn when externalizing instrumented deps ([#21999](getsentry/sentry-javascript#21999)) - feat(core): Require `attributes` on `SerializedStreamedSpan` ([#22052](getsentry/sentry-javascript#22052)) - feat(ember): Set `url.template`, `url.path` and `url.full` on router spans ([#22095](getsentry/sentry-javascript#22095)) - feat(mysql2): Instrument mysql2 >= 3.20.0 via native tracing channels ([#21824](getsentry/sentry-javascript#21824)) - feat(nextjs): Set `url` attributes on pageload and navigation spans ([#22006](https …truncated; see the release link above. ### 10.64.0 ### Important Changes - **feat(cloudflare): Add `nodejs_compat` entrypoint ([#21881](getsentry/sentry-javascript#21881 The Cloudflare SDK now ships a dedicated `@sentry/cloudflare/nodejs_compat` entrypoint for Workers running with the `nodejs_compat` flag. This entrypoint unlocks Node SDK features on Cloudflare, including the `prismaIntegration` ([#21882](getsentry/sentry-javascript#21882)) and AI v7 support for the `vercelAiIntegration` ([#21917](getsentry/sentry-javascript#21917)). This entrypoint is a drop-in replacement, so you can switch your imports from `@sentry/cloudflare` directly to `@sentry/cloudflare/nodejs_compat`. To use it, your Worker must set the `nodejs_compat` compatibility flag in `wrangler.toml`/`wrangler.jsonc`. This will become the default entrypoint in v11. - **feat: Use Sentry's minimal OpenTelemetry tracer provider by default ([#21666](getsentry/sentry-javascript#21666), [#21680](getsentry/sentry-javascript#21680), [#21842](getsentry/sentry-javascript#21842 The Node SDK now registers Sentry's own …truncated; see the release link above. ### 10.63.0 - feat(browser): Add `url.full` attribute to resource spans ([#21846](getsentry/sentry-javascript#21846)) - feat(core): Add `extendIntegration` method ([#21759](getsentry/sentry-javascript#21759)) - feat(core): Add `isTracingSuppressed` to the async context strategy ([#21785](getsentry/sentry-javascript#21785)) - feat(core): Pass normalizedRequest to the sampling context for root spans ([#21833](getsentry/sentry-javascript#21833)) - feat(node): Add lru-memoizer diagnostics-channel integration to experimentalUseDiagnosticsChannelInjection ([#21786](getsentry/sentry-javascript#21786)) - feat(node): Expose channel-based, streamlined `fastifyIntegration` ([#21706](getsentry/sentry-javascript#21706)) - fix(browser): Defer sending session envelope until browser is idle ([#21844](getsentry/sentry-javascript#21844)) - fix(core): Improve waiting for tracing channel bindings ([#21815](getsentry/sentry-javascript#21815)) - fix(core): Serialize streamed span status message to `sentry.status.message` attri …truncated; see the release link above. _71 earlier release(s) in this range are not shown._ Releases: https://github.com/getsentry/sentry-javascript/releases </details>
`@sentry/vue` `^10.0.0` → `^10.70.0` (dependencies). This updates what `package.json` declares. The range may already have permitted the newer version, in which case only the declaration was stale. Lockfile resolved by `npm`, with no install and no lifecycle scripts. Produced by a script, not a model — a lockfile is not something to write by hand. <details><summary>Release notes</summary> ### 10.70.0 - feat(v10/core): Support stable MCP SDK v2 ([#22986](getsentry/sentry-javascript#22986)) - feat(v10/deps): Bump `@sentry/node-cpu-profiler` to 2.4.3 ([#22992](getsentry/sentry-javascript#22992)) - feat(v10/solid,solidstart): Support `@solidjs/router` v1 ([#23163](getsentry/sentry-javascript#23163)) - fix(v10/cloudflare): Fork the isolation scope for Durable Object methods ([#23189](getsentry/sentry-javascript#23189)) - fix(v10/cloudflare): Get original waituntil in workflows ([#23192](getsentry/sentry-javascript#23192)) - fix(v10/cloudflare): Instrument DO RPC methods on the prototype, not a Proxy ([#23190](getsentry/sentry-javascript#23190)) - fix(v10/cloudflare): Set agent conversation id on the `onRequest` path ([#22985](getsentry/sentry-javascript#22985)) - fix(v10/cloudflare): Set conversation id independent of session name ([#23193](getsentry/sentry-javascript#23193)) - fix(v10/cloudflare): Try/catch on non-configurable prototypes ([#23191](https://github.com/getsentry/sentry-javascript …truncated; see the release link above. ### 10.69.0 ### Important Changes - **feat(v10/cloudflare): Add `instrumentAgentWithSentry` for Cloudflare Agents ([#22786](getsentry/sentry-javascript#22786 The Cloudflare SDK adds a new `instrumentAgentWithSentry` API for [Cloudflare Agents](https://agents.cloudflare.com/). It works like `instrumentDurableObjectWithSentry` for `Agent` classes from the `agents` SDK and additionally creates spans for `@callable` RPC methods and automatically sets the `conversationId` based on the agent's name. When building with the Sentry Vite plugin, Agents are instrumented automatically ([#22788](getsentry/sentry-javascript#22788)). ### Other Changes - feat(v10/cloudflare): Add Spotlight integration for local dev event forwarding ([#22796](getsentry/sentry-javascript#22796)) - feat(v10/cloudflare): Add wranglerConfigPath to Vite options ([#22803](getsentry/sentry-javascript#22803)) - feat(v10/cloudflare): Filter framework-internal Durable Object storage spans ([#22770](getsentry/sentry-javascript#22770)) - feat(v10/cloudflare): Instrument Agents automatically ([#22788](https://gith …truncated; see the release link above. ### 10.68.0 - feat(cloudflare): Add @sentry/cloudflare/vite orchestrion plugin ([#21967](getsentry/sentry-javascript#21967)) - feat(nestjs): Support WebSocket errors in SentryGlobalFilter ([#22224](getsentry/sentry-javascript#22224)) - feat(node,server-utils): Set `cache.key` on dataloader spans and capture redis delete operations as `cache.remove` ([#22389](getsentry/sentry-javascript#22389)) - feat(server-utils): Allow integrations to be part of marker ([#22094](getsentry/sentry-javascript#22094)) - feat(server-utils): Migrate `FirebaseInstrumentation` to orchestrion ([#22141](getsentry/sentry-javascript#22141)) - feat(server-utils): Warn when bundler config has instrumented module in external ([#22379](getsentry/sentry-javascript#22379)) - feat(v10): Add `http.route` attribute to `http.server` spans with parameterized routes ([#22564](getsentry/sentry-javascript#22564)) - feat(v10): Add `url.full` and `url.path` to `http.server` spans ([#22533](getsentry/sentry-javascript#22533)) - feat(v10/cloudflare) …truncated; see the release link above. ### 10.67.0 ### Important Changes - **feat(sveltekit): Add support for SvelteKit 3 ([#22264](getsentry/sentry-javascript#22264 The SvelteKit SDK now supports the pre-release of SvelteKit 3, including client-side pageload and navigation tracing and server-side native tracing, alongside continued SvelteKit 2 support. No Sentry-specific setup changes are required. The SDK detects your SvelteKit version and picks the right implementation automatically. ### Other Changes - feat(aws-serverless): Use orchestrion aws-sdk integration under diagnostics-channel opt-in ([#22143](getsentry/sentry-javascript#22143)) - feat(cloudflare): Auto-instrument Workers AI binding via env instrumentation ([#22126](getsentry/sentry-javascript#22126)) - feat(cloudflare): Instrument Cloudflare rate limiter bindings ([#22035](getsentry/sentry-javascript#22035)) - feat(core): Instrument workers-ai-provider ([#22119](getsentry/sentry-javascript#22119)) - feat(core): Rename `queryParams` to `urlQueryParams` ([#22217](getsentry/sentry-javascript#22217)) - feat(mongodb): impl …truncated; see the release link above. ### 10.66.0 - chore(node-core): Deprecate `@sentry/node-core` package ([#22285](getsentry/sentry-javascript#22285)) - chore(tanstackstart): Deprecate `@sentry/tanstackstart` package ([#22284](getsentry/sentry-javascript#22284)) - deps(server-utils): bump @apm-js-collab/code-transformer and tracing-hooks ([#22172](getsentry/sentry-javascript#22172)) - feat(bun): Add `initWithoutDefaultIntegrations` and `getDefaultIntegrationsWithoutPerformance` ([#22036](getsentry/sentry-javascript#22036)) - feat(bundlers): Add orchestrion bundler plugins ([#22124](getsentry/sentry-javascript#22124)) - feat(cloudflare): Support Cloudflare types v5 & newer wrangler versions ([#22180](getsentry/sentry-javascript#22180)) - feat(core): Add and use `dataCollection.databaseQueryData` (for e.g. Supabase filter values and mutation bodies) ([#22219](getsentry/sentry-javascript#22219)) - feat(core): Add and use `dataCollection.graphQL` ([#22221](getsentry/sentry-javascript#22221)) - feat(core): Add stringify helper and make AI-traci …truncated; see the release link above. ### 10.65.0 - feat(angular): Set `url` attributes on pageload and navigation spans ([#21985](getsentry/sentry-javascript#21985)) - feat(astro): Set `url.template` on pageload spans ([#22011](getsentry/sentry-javascript#22011)) - feat(aws-serverless): Replace OTel Lambda instrumentation with handler redirection ([#22079](getsentry/sentry-javascript#22079)) - feat(browser): Set `url.path` and `url.full` on pageload and navigation spans ([#21952](getsentry/sentry-javascript#21952)) - feat(bun): warn when externalizing instrumented deps ([#21999](getsentry/sentry-javascript#21999)) - feat(core): Require `attributes` on `SerializedStreamedSpan` ([#22052](getsentry/sentry-javascript#22052)) - feat(ember): Set `url.template`, `url.path` and `url.full` on router spans ([#22095](getsentry/sentry-javascript#22095)) - feat(mysql2): Instrument mysql2 >= 3.20.0 via native tracing channels ([#21824](getsentry/sentry-javascript#21824)) - feat(nextjs): Set `url` attributes on pageload and navigation spans ([#22006](https …truncated; see the release link above. ### 10.64.0 ### Important Changes - **feat(cloudflare): Add `nodejs_compat` entrypoint ([#21881](getsentry/sentry-javascript#21881 The Cloudflare SDK now ships a dedicated `@sentry/cloudflare/nodejs_compat` entrypoint for Workers running with the `nodejs_compat` flag. This entrypoint unlocks Node SDK features on Cloudflare, including the `prismaIntegration` ([#21882](getsentry/sentry-javascript#21882)) and AI v7 support for the `vercelAiIntegration` ([#21917](getsentry/sentry-javascript#21917)). This entrypoint is a drop-in replacement, so you can switch your imports from `@sentry/cloudflare` directly to `@sentry/cloudflare/nodejs_compat`. To use it, your Worker must set the `nodejs_compat` compatibility flag in `wrangler.toml`/`wrangler.jsonc`. This will become the default entrypoint in v11. - **feat: Use Sentry's minimal OpenTelemetry tracer provider by default ([#21666](getsentry/sentry-javascript#21666), [#21680](getsentry/sentry-javascript#21680), [#21842](getsentry/sentry-javascript#21842 The Node SDK now registers Sentry's own …truncated; see the release link above. ### 10.63.0 - feat(browser): Add `url.full` attribute to resource spans ([#21846](getsentry/sentry-javascript#21846)) - feat(core): Add `extendIntegration` method ([#21759](getsentry/sentry-javascript#21759)) - feat(core): Add `isTracingSuppressed` to the async context strategy ([#21785](getsentry/sentry-javascript#21785)) - feat(core): Pass normalizedRequest to the sampling context for root spans ([#21833](getsentry/sentry-javascript#21833)) - feat(node): Add lru-memoizer diagnostics-channel integration to experimentalUseDiagnosticsChannelInjection ([#21786](getsentry/sentry-javascript#21786)) - feat(node): Expose channel-based, streamlined `fastifyIntegration` ([#21706](getsentry/sentry-javascript#21706)) - fix(browser): Defer sending session envelope until browser is idle ([#21844](getsentry/sentry-javascript#21844)) - fix(core): Improve waiting for tracing channel bindings ([#21815](getsentry/sentry-javascript#21815)) - fix(core): Serialize streamed span status message to `sentry.status.message` attri …truncated; see the release link above. _71 earlier release(s) in this range are not shown._ Releases: https://github.com/getsentry/sentry-javascript/releases </details>
* Bump @sentry/vue from 10.0.0 to 10.70.0 `@sentry/vue` `^10.0.0` → `^10.70.0` (dependencies). This updates what `package.json` declares. The range may already have permitted the newer version, in which case only the declaration was stale. Lockfile resolved by `npm`, with no install and no lifecycle scripts. Produced by a script, not a model — a lockfile is not something to write by hand. <details><summary>Release notes</summary> ### 10.70.0 - feat(v10/core): Support stable MCP SDK v2 ([#22986](getsentry/sentry-javascript#22986)) - feat(v10/deps): Bump `@sentry/node-cpu-profiler` to 2.4.3 ([#22992](getsentry/sentry-javascript#22992)) - feat(v10/solid,solidstart): Support `@solidjs/router` v1 ([#23163](getsentry/sentry-javascript#23163)) - fix(v10/cloudflare): Fork the isolation scope for Durable Object methods ([#23189](getsentry/sentry-javascript#23189)) - fix(v10/cloudflare): Get original waituntil in workflows ([#23192](getsentry/sentry-javascript#23192)) - fix(v10/cloudflare): Instrument DO RPC methods on the prototype, not a Proxy ([#23190](getsentry/sentry-javascript#23190)) - fix(v10/cloudflare): Set agent conversation id on the `onRequest` path ([#22985](getsentry/sentry-javascript#22985)) - fix(v10/cloudflare): Set conversation id independent of session name ([#23193](getsentry/sentry-javascript#23193)) - fix(v10/cloudflare): Try/catch on non-configurable prototypes ([#23191](https://github.com/getsentry/sentry-javascript …truncated; see the release link above. ### 10.69.0 ### Important Changes - **feat(v10/cloudflare): Add `instrumentAgentWithSentry` for Cloudflare Agents ([#22786](getsentry/sentry-javascript#22786 The Cloudflare SDK adds a new `instrumentAgentWithSentry` API for [Cloudflare Agents](https://agents.cloudflare.com/). It works like `instrumentDurableObjectWithSentry` for `Agent` classes from the `agents` SDK and additionally creates spans for `@callable` RPC methods and automatically sets the `conversationId` based on the agent's name. When building with the Sentry Vite plugin, Agents are instrumented automatically ([#22788](getsentry/sentry-javascript#22788)). ### Other Changes - feat(v10/cloudflare): Add Spotlight integration for local dev event forwarding ([#22796](getsentry/sentry-javascript#22796)) - feat(v10/cloudflare): Add wranglerConfigPath to Vite options ([#22803](getsentry/sentry-javascript#22803)) - feat(v10/cloudflare): Filter framework-internal Durable Object storage spans ([#22770](getsentry/sentry-javascript#22770)) - feat(v10/cloudflare): Instrument Agents automatically ([#22788](https://gith …truncated; see the release link above. ### 10.68.0 - feat(cloudflare): Add @sentry/cloudflare/vite orchestrion plugin ([#21967](getsentry/sentry-javascript#21967)) - feat(nestjs): Support WebSocket errors in SentryGlobalFilter ([#22224](getsentry/sentry-javascript#22224)) - feat(node,server-utils): Set `cache.key` on dataloader spans and capture redis delete operations as `cache.remove` ([#22389](getsentry/sentry-javascript#22389)) - feat(server-utils): Allow integrations to be part of marker ([#22094](getsentry/sentry-javascript#22094)) - feat(server-utils): Migrate `FirebaseInstrumentation` to orchestrion ([#22141](getsentry/sentry-javascript#22141)) - feat(server-utils): Warn when bundler config has instrumented module in external ([#22379](getsentry/sentry-javascript#22379)) - feat(v10): Add `http.route` attribute to `http.server` spans with parameterized routes ([#22564](getsentry/sentry-javascript#22564)) - feat(v10): Add `url.full` and `url.path` to `http.server` spans ([#22533](getsentry/sentry-javascript#22533)) - feat(v10/cloudflare) …truncated; see the release link above. ### 10.67.0 ### Important Changes - **feat(sveltekit): Add support for SvelteKit 3 ([#22264](getsentry/sentry-javascript#22264 The SvelteKit SDK now supports the pre-release of SvelteKit 3, including client-side pageload and navigation tracing and server-side native tracing, alongside continued SvelteKit 2 support. No Sentry-specific setup changes are required. The SDK detects your SvelteKit version and picks the right implementation automatically. ### Other Changes - feat(aws-serverless): Use orchestrion aws-sdk integration under diagnostics-channel opt-in ([#22143](getsentry/sentry-javascript#22143)) - feat(cloudflare): Auto-instrument Workers AI binding via env instrumentation ([#22126](getsentry/sentry-javascript#22126)) - feat(cloudflare): Instrument Cloudflare rate limiter bindings ([#22035](getsentry/sentry-javascript#22035)) - feat(core): Instrument workers-ai-provider ([#22119](getsentry/sentry-javascript#22119)) - feat(core): Rename `queryParams` to `urlQueryParams` ([#22217](getsentry/sentry-javascript#22217)) - feat(mongodb): impl …truncated; see the release link above. ### 10.66.0 - chore(node-core): Deprecate `@sentry/node-core` package ([#22285](getsentry/sentry-javascript#22285)) - chore(tanstackstart): Deprecate `@sentry/tanstackstart` package ([#22284](getsentry/sentry-javascript#22284)) - deps(server-utils): bump @apm-js-collab/code-transformer and tracing-hooks ([#22172](getsentry/sentry-javascript#22172)) - feat(bun): Add `initWithoutDefaultIntegrations` and `getDefaultIntegrationsWithoutPerformance` ([#22036](getsentry/sentry-javascript#22036)) - feat(bundlers): Add orchestrion bundler plugins ([#22124](getsentry/sentry-javascript#22124)) - feat(cloudflare): Support Cloudflare types v5 & newer wrangler versions ([#22180](getsentry/sentry-javascript#22180)) - feat(core): Add and use `dataCollection.databaseQueryData` (for e.g. Supabase filter values and mutation bodies) ([#22219](getsentry/sentry-javascript#22219)) - feat(core): Add and use `dataCollection.graphQL` ([#22221](getsentry/sentry-javascript#22221)) - feat(core): Add stringify helper and make AI-traci …truncated; see the release link above. ### 10.65.0 - feat(angular): Set `url` attributes on pageload and navigation spans ([#21985](getsentry/sentry-javascript#21985)) - feat(astro): Set `url.template` on pageload spans ([#22011](getsentry/sentry-javascript#22011)) - feat(aws-serverless): Replace OTel Lambda instrumentation with handler redirection ([#22079](getsentry/sentry-javascript#22079)) - feat(browser): Set `url.path` and `url.full` on pageload and navigation spans ([#21952](getsentry/sentry-javascript#21952)) - feat(bun): warn when externalizing instrumented deps ([#21999](getsentry/sentry-javascript#21999)) - feat(core): Require `attributes` on `SerializedStreamedSpan` ([#22052](getsentry/sentry-javascript#22052)) - feat(ember): Set `url.template`, `url.path` and `url.full` on router spans ([#22095](getsentry/sentry-javascript#22095)) - feat(mysql2): Instrument mysql2 >= 3.20.0 via native tracing channels ([#21824](getsentry/sentry-javascript#21824)) - feat(nextjs): Set `url` attributes on pageload and navigation spans ([#22006](https …truncated; see the release link above. ### 10.64.0 ### Important Changes - **feat(cloudflare): Add `nodejs_compat` entrypoint ([#21881](getsentry/sentry-javascript#21881 The Cloudflare SDK now ships a dedicated `@sentry/cloudflare/nodejs_compat` entrypoint for Workers running with the `nodejs_compat` flag. This entrypoint unlocks Node SDK features on Cloudflare, including the `prismaIntegration` ([#21882](getsentry/sentry-javascript#21882)) and AI v7 support for the `vercelAiIntegration` ([#21917](getsentry/sentry-javascript#21917)). This entrypoint is a drop-in replacement, so you can switch your imports from `@sentry/cloudflare` directly to `@sentry/cloudflare/nodejs_compat`. To use it, your Worker must set the `nodejs_compat` compatibility flag in `wrangler.toml`/`wrangler.jsonc`. This will become the default entrypoint in v11. - **feat: Use Sentry's minimal OpenTelemetry tracer provider by default ([#21666](getsentry/sentry-javascript#21666), [#21680](getsentry/sentry-javascript#21680), [#21842](getsentry/sentry-javascript#21842 The Node SDK now registers Sentry's own …truncated; see the release link above. ### 10.63.0 - feat(browser): Add `url.full` attribute to resource spans ([#21846](getsentry/sentry-javascript#21846)) - feat(core): Add `extendIntegration` method ([#21759](getsentry/sentry-javascript#21759)) - feat(core): Add `isTracingSuppressed` to the async context strategy ([#21785](getsentry/sentry-javascript#21785)) - feat(core): Pass normalizedRequest to the sampling context for root spans ([#21833](getsentry/sentry-javascript#21833)) - feat(node): Add lru-memoizer diagnostics-channel integration to experimentalUseDiagnosticsChannelInjection ([#21786](getsentry/sentry-javascript#21786)) - feat(node): Expose channel-based, streamlined `fastifyIntegration` ([#21706](getsentry/sentry-javascript#21706)) - fix(browser): Defer sending session envelope until browser is idle ([#21844](getsentry/sentry-javascript#21844)) - fix(core): Improve waiting for tracing channel bindings ([#21815](getsentry/sentry-javascript#21815)) - fix(core): Serialize streamed span status message to `sentry.status.message` attri …truncated; see the release link above. _71 earlier release(s) in this range are not shown._ Releases: https://github.com/getsentry/sentry-javascript/releases </details> * Bump @sentry/vue from 10.0.0 to 10.70.0 `@sentry/vue` `^10.0.0` → `^10.70.0` (dependencies). This updates what `package.json` declares. The range may already have permitted the newer version, in which case only the declaration was stale. Lockfile resolved by `npm`, with no install and no lifecycle scripts. Produced by a script, not a model — a lockfile is not something to write by hand. <details><summary>Release notes</summary> ### 10.70.0 - feat(v10/core): Support stable MCP SDK v2 ([#22986](getsentry/sentry-javascript#22986)) - feat(v10/deps): Bump `@sentry/node-cpu-profiler` to 2.4.3 ([#22992](getsentry/sentry-javascript#22992)) - feat(v10/solid,solidstart): Support `@solidjs/router` v1 ([#23163](getsentry/sentry-javascript#23163)) - fix(v10/cloudflare): Fork the isolation scope for Durable Object methods ([#23189](getsentry/sentry-javascript#23189)) - fix(v10/cloudflare): Get original waituntil in workflows ([#23192](getsentry/sentry-javascript#23192)) - fix(v10/cloudflare): Instrument DO RPC methods on the prototype, not a Proxy ([#23190](getsentry/sentry-javascript#23190)) - fix(v10/cloudflare): Set agent conversation id on the `onRequest` path ([#22985](getsentry/sentry-javascript#22985)) - fix(v10/cloudflare): Set conversation id independent of session name ([#23193](getsentry/sentry-javascript#23193)) - fix(v10/cloudflare): Try/catch on non-configurable prototypes ([#23191](https://github.com/getsentry/sentry-javascript …truncated; see the release link above. ### 10.69.0 ### Important Changes - **feat(v10/cloudflare): Add `instrumentAgentWithSentry` for Cloudflare Agents ([#22786](getsentry/sentry-javascript#22786 The Cloudflare SDK adds a new `instrumentAgentWithSentry` API for [Cloudflare Agents](https://agents.cloudflare.com/). It works like `instrumentDurableObjectWithSentry` for `Agent` classes from the `agents` SDK and additionally creates spans for `@callable` RPC methods and automatically sets the `conversationId` based on the agent's name. When building with the Sentry Vite plugin, Agents are instrumented automatically ([#22788](getsentry/sentry-javascript#22788)). ### Other Changes - feat(v10/cloudflare): Add Spotlight integration for local dev event forwarding ([#22796](getsentry/sentry-javascript#22796)) - feat(v10/cloudflare): Add wranglerConfigPath to Vite options ([#22803](getsentry/sentry-javascript#22803)) - feat(v10/cloudflare): Filter framework-internal Durable Object storage spans ([#22770](getsentry/sentry-javascript#22770)) - feat(v10/cloudflare): Instrument Agents automatically ([#22788](https://gith …truncated; see the release link above. ### 10.68.0 - feat(cloudflare): Add @sentry/cloudflare/vite orchestrion plugin ([#21967](getsentry/sentry-javascript#21967)) - feat(nestjs): Support WebSocket errors in SentryGlobalFilter ([#22224](getsentry/sentry-javascript#22224)) - feat(node,server-utils): Set `cache.key` on dataloader spans and capture redis delete operations as `cache.remove` ([#22389](getsentry/sentry-javascript#22389)) - feat(server-utils): Allow integrations to be part of marker ([#22094](getsentry/sentry-javascript#22094)) - feat(server-utils): Migrate `FirebaseInstrumentation` to orchestrion ([#22141](getsentry/sentry-javascript#22141)) - feat(server-utils): Warn when bundler config has instrumented module in external ([#22379](getsentry/sentry-javascript#22379)) - feat(v10): Add `http.route` attribute to `http.server` spans with parameterized routes ([#22564](getsentry/sentry-javascript#22564)) - feat(v10): Add `url.full` and `url.path` to `http.server` spans ([#22533](getsentry/sentry-javascript#22533)) - feat(v10/cloudflare) …truncated; see the release link above. ### 10.67.0 ### Important Changes - **feat(sveltekit): Add support for SvelteKit 3 ([#22264](getsentry/sentry-javascript#22264 The SvelteKit SDK now supports the pre-release of SvelteKit 3, including client-side pageload and navigation tracing and server-side native tracing, alongside continued SvelteKit 2 support. No Sentry-specific setup changes are required. The SDK detects your SvelteKit version and picks the right implementation automatically. ### Other Changes - feat(aws-serverless): Use orchestrion aws-sdk integration under diagnostics-channel opt-in ([#22143](getsentry/sentry-javascript#22143)) - feat(cloudflare): Auto-instrument Workers AI binding via env instrumentation ([#22126](getsentry/sentry-javascript#22126)) - feat(cloudflare): Instrument Cloudflare rate limiter bindings ([#22035](getsentry/sentry-javascript#22035)) - feat(core): Instrument workers-ai-provider ([#22119](getsentry/sentry-javascript#22119)) - feat(core): Rename `queryParams` to `urlQueryParams` ([#22217](getsentry/sentry-javascript#22217)) - feat(mongodb): impl …truncated; see the release link above. ### 10.66.0 - chore(node-core): Deprecate `@sentry/node-core` package ([#22285](getsentry/sentry-javascript#22285)) - chore(tanstackstart): Deprecate `@sentry/tanstackstart` package ([#22284](getsentry/sentry-javascript#22284)) - deps(server-utils): bump @apm-js-collab/code-transformer and tracing-hooks ([#22172](getsentry/sentry-javascript#22172)) - feat(bun): Add `initWithoutDefaultIntegrations` and `getDefaultIntegrationsWithoutPerformance` ([#22036](getsentry/sentry-javascript#22036)) - feat(bundlers): Add orchestrion bundler plugins ([#22124](getsentry/sentry-javascript#22124)) - feat(cloudflare): Support Cloudflare types v5 & newer wrangler versions ([#22180](getsentry/sentry-javascript#22180)) - feat(core): Add and use `dataCollection.databaseQueryData` (for e.g. Supabase filter values and mutation bodies) ([#22219](getsentry/sentry-javascript#22219)) - feat(core): Add and use `dataCollection.graphQL` ([#22221](getsentry/sentry-javascript#22221)) - feat(core): Add stringify helper and make AI-traci …truncated; see the release link above. ### 10.65.0 - feat(angular): Set `url` attributes on pageload and navigation spans ([#21985](getsentry/sentry-javascript#21985)) - feat(astro): Set `url.template` on pageload spans ([#22011](getsentry/sentry-javascript#22011)) - feat(aws-serverless): Replace OTel Lambda instrumentation with handler redirection ([#22079](getsentry/sentry-javascript#22079)) - feat(browser): Set `url.path` and `url.full` on pageload and navigation spans ([#21952](getsentry/sentry-javascript#21952)) - feat(bun): warn when externalizing instrumented deps ([#21999](getsentry/sentry-javascript#21999)) - feat(core): Require `attributes` on `SerializedStreamedSpan` ([#22052](getsentry/sentry-javascript#22052)) - feat(ember): Set `url.template`, `url.path` and `url.full` on router spans ([#22095](getsentry/sentry-javascript#22095)) - feat(mysql2): Instrument mysql2 >= 3.20.0 via native tracing channels ([#21824](getsentry/sentry-javascript#21824)) - feat(nextjs): Set `url` attributes on pageload and navigation spans ([#22006](https …truncated; see the release link above. ### 10.64.0 ### Important Changes - **feat(cloudflare): Add `nodejs_compat` entrypoint ([#21881](getsentry/sentry-javascript#21881 The Cloudflare SDK now ships a dedicated `@sentry/cloudflare/nodejs_compat` entrypoint for Workers running with the `nodejs_compat` flag. This entrypoint unlocks Node SDK features on Cloudflare, including the `prismaIntegration` ([#21882](getsentry/sentry-javascript#21882)) and AI v7 support for the `vercelAiIntegration` ([#21917](getsentry/sentry-javascript#21917)). This entrypoint is a drop-in replacement, so you can switch your imports from `@sentry/cloudflare` directly to `@sentry/cloudflare/nodejs_compat`. To use it, your Worker must set the `nodejs_compat` compatibility flag in `wrangler.toml`/`wrangler.jsonc`. This will become the default entrypoint in v11. - **feat: Use Sentry's minimal OpenTelemetry tracer provider by default ([#21666](getsentry/sentry-javascript#21666), [#21680](getsentry/sentry-javascript#21680), [#21842](getsentry/sentry-javascript#21842 The Node SDK now registers Sentry's own …truncated; see the release link above. ### 10.63.0 - feat(browser): Add `url.full` attribute to resource spans ([#21846](getsentry/sentry-javascript#21846)) - feat(core): Add `extendIntegration` method ([#21759](getsentry/sentry-javascript#21759)) - feat(core): Add `isTracingSuppressed` to the async context strategy ([#21785](getsentry/sentry-javascript#21785)) - feat(core): Pass normalizedRequest to the sampling context for root spans ([#21833](getsentry/sentry-javascript#21833)) - feat(node): Add lru-memoizer diagnostics-channel integration to experimentalUseDiagnosticsChannelInjection ([#21786](getsentry/sentry-javascript#21786)) - feat(node): Expose channel-based, streamlined `fastifyIntegration` ([#21706](getsentry/sentry-javascript#21706)) - fix(browser): Defer sending session envelope until browser is idle ([#21844](getsentry/sentry-javascript#21844)) - fix(core): Improve waiting for tracing channel bindings ([#21815](getsentry/sentry-javascript#21815)) - fix(core): Serialize streamed span status message to `sentry.status.message` attri …truncated; see the release link above. _71 earlier release(s) in this range are not shown._ Releases: https://github.com/getsentry/sentry-javascript/releases </details>

What
Replaces the vendored
@opentelemetry/instrumentation-aws-lambda(module patching viaInstrumentationBase+ import-in-the-middle) with handler redirection.The idea is that the AWS runtime reads
_HANDLERonly after all--import/--requirepreloads (and thusSentry.init()) have run. So during init, theAwsLambdaintegration points_HANDLERat a Sentry shim and stores the original value inSENTRY_ORIGINAL_HANDLER. The runtime then loads the shim instead of the user's handler; the shim resolves the original handler with the same rules as the runtime, wraps it with the existing span logic andwrapHandler, and re-exports it.sequenceDiagram participant Preload as Node.js preload<br/>(--import .../awslambda-auto) participant RIC as Lambda runtime participant Shim as Sentry shim<br/>(run-lambda-handler.mjs) participant User as User handler module Note over Preload: Sentry.init() Preload->>Preload: SENTRY_ORIGINAL_HANDLER = "index.handler"<br/>_HANDLER = ".../run-lambda-handler.handler" RIC->>Shim: reads _HANDLER, await import() Shim->>User: resolves SENTRY_ORIGINAL_HANDLER,<br/>require() for CJS / import() for ESM User-->>Shim: original handler Shim-->>RIC: exports wrapped handler<br/>(span logic + wrapHandler, streaming symbols preserved) loop every invocation RIC->>Shim: wrapped handler(event, context) Shim->>User: original handler(event, context) User-->>Shim: result Shim-->>RIC: result (span ended, events flushed) endBecause the shim wraps the handler value (whatever the export resolves to), this also covers wrapped (e.g. middy), re-exported and streaming handlers. Behavior is unchanged (same spans, attributes, origins, mechanisms), verified by the unchanged SAM e2e assertions (Node 18/20, layer and npm install methods) and against a real Lambda function. Datadog (redirect handler) and New Relic (wrapper handler) use the same approach in their layers.
Why not orchestrion
The issue proposed orchestrion, but it does not fit the Lambda case:
node_modules; the handler is an arbitrary user file resolved from_HANDLER.middy(...),awslambda.streamifyResponse(...), re-exports and bundled output.Closes: #20908