š[private user] thank you I am using Typescript in my lambda here is the code: tracing.ts
import { Metadata } from '@grpc/grpc-js'
import { trace } from '@opentelemetry/api'
import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-grpc'
import { Resource } from '@opentelemetry/resources'
import { SimpleSpanProcessor } from '@opentelemetry/sdk-trace-base'
import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'
console.log('š„ tracing.js loaded')
const globalAny = globalThis as any
if (!globalAny.tracingProviderSingleton) {
const metadata = new Metadata()
metadata.set('x-arize-space-id', process.env.ARIZE_SPACE_ID!)
metadata.set('x-arize-api-key', process.env.ARIZE_API_KEY!)
const provider = new NodeTracerProvider({
resource: new Resource({
'service.name': 'conversationMessageHandler',
'openinference.project.name': 'test-project',
}),
})
provider.addSpanProcessor(
new SimpleSpanProcessor(
new OTLPTraceExporter({
url: 'https://otlp.arize.com:443',
metadata, // ā
THIS IS THE KEY
})
)
)
provider.register()
// sanity span
const tracer = trace.getTracer('startup')
const span = tracer.startSpan('startup-span')
span.end()
globalAny.tracingProviderSingleton = provider
}
export async function flushTracing() {
await globalAny.tracingProviderSingleton.forceFlush()
}
lambda index.ts
import './tracing' // š this is the key
import { trace } from '@opentelemetry/api'
// eslint-disable-next-line import/no-duplicates
import { flushTracing } from './tracing'
export const handler = async () => {
const tracer = trace.getTracer('debug')
const span = tracer.startSpan('manual-test-span')
span.end()
await flushTracing()
return { statusCode: 200 }
}My dependencies:
"dependencies": {
"openai": "^5.10.2",
"@arizeai/openinference-instrumentation-openai": "^4.0.5",
"@opentelemetry/api": "1.9.0",
"@opentelemetry/resources": "1.9.0",
"@opentelemetry/sdk-trace-base": "1.9.0",
"@opentelemetry/sdk-trace-node": "1.9.0",
"@opentelemetry/instrumentation": "0.43.0",
"@opentelemetry/exporter-trace-otlp-grpc": "0.43.0"
}As you can see it is a simple example, and even this is not working At this point, I am trying to send a span from my lambda to Arize
I followed your comments and it still does not work
Hello @channel, Iām having trouble integrating Arize AX into an AWS Lambda function and would appreciate some guidance. Context: I have an AWS Lambda function that receives user input.
The Lambda sends this input to OpenAI and streams the response back to the user.
The streaming works correctly on its own.
Goal: I want to integrate Arize AX tracing/observability into this flow so that:
Each OpenAI request and streamed response is properly traced.
Relevant metadata (session, user, model, etc.) is captured in Arize AX.
The integration works reliably in a streaming (async) Lambda execution model.
Issue: Despite following the documentation, Iām unable to get consistent or visible traces in Arize AX when the Lambda streams responses. Has anyone successfully integrated Arize AX with:
AWS Lambda
OpenAI streaming responses
If so, what is the recommended or minimal setup for this use case? Thanks in advance for any help or examples.
