python-lambda-openai-demo

python-lambda-openai-demo

Monitor OpenAI API calls inside AWS Lambda with Datadog — including PII awareness.

🎯Purpose

This demo shows how to instrument AWS Lambda functions that call OpenAI, using Datadog's Lambda Extension for tracing and metrics collection — without a traditional sidecar agent.

The core problem: Serverless functions run in ephemeral containers managed by AWS. You can't install a persistent Datadog Agent alongside them. Datadog solves this with a Lambda Extension — a lightweight process that runs in the same Lambda execution environment, collecting traces and metrics without needing a separate container.

🏗️How It Works — Architecture

AWS API Gateway
invoke
Lambda Function
Python
API call
OpenAI API
GPT model
Datadog Lambda
Extension
same env
HTTPS
Datadog Backend

The Lambda Extension is included as a Lambda Layer. It starts alongside your function handler and intercepts telemetry before the execution environment shuts down. The @tracer.wrap() decorator creates APM spans around any Python function automatically.

💡Key Concepts

  • Lambda Extension: A sidecar process running in the Lambda execution environment — collects traces and metrics without a separate container.
  • Lambda Layer: A ZIP package containing the Datadog tracer library + extension binary, attached to your function.
  • @tracer.wrap(): A Python decorator that automatically creates an APM span for any function — start time, end time, errors, all captured.
  • PII (Personally Identifiable Information): Data like emails or names that must not appear in traces unmasked. This demo shows how to handle it.
  • MockPIIAPI vs MockPIIAPI_Tracer: Two versions — one uses UDP metrics without the SDK, the other uses the full tracer SDK with @tracer.wrap.

🚀Quick Start

  1. Package the function:
    zip function.zip MockPIIAPI_Tracer.py
  2. Deploy to Lambda:
    aws lambda update-function-code --function-name your-fn --zip-file fileb://function.zip
  3. Add the Datadog Lambda Layer to your function in the AWS console.
  4. Set environment variables: DD_API_KEY, DD_SITE, DD_TRACE_ENABLED=true
  5. Invoke the function and check Datadog APM.

📊What You'll See in Datadog

Go to APM → Traces and filter:

service:lambda-demo

You'll see spans for the Lambda invocation and child spans for each OpenAI API call wrapped with @tracer.wrap().

python-lambda-openai-demo

DatadogのLambda Extensionを使ってAWS LambdaのOpenAI呼び出しを監視します(PII対応含む)。

🎯目的

このデモは、Datadog Lambda ExtensionでOpenAIを呼び出すAWS Lambda関数を計装する方法を示します。従来のサイドカーエージェントは不要です。

核心的な問題: サーバーレス関数はAWSが管理するエフェメラルコンテナで動作します。永続的なDatadogエージェントをインストールできません。Lambda Extensionは同じLambda実行環境内で動作する軽量プロセスで、別コンテナなしでトレースとメトリクスを収集します。

🏗️仕組み — アーキテクチャ

AWS API Gateway
invoke
Lambda Function
Python
API call
OpenAI API
GPT model
Datadog Lambda
Extension
same env
HTTPS
Datadog Backend

Lambda ExtensionはLambda Layerとして含まれています。関数ハンドラーと同時に起動し、実行環境がシャットダウンする前にテレメトリをインターセプトします。@tracer.wrap()デコレーターで任意のPython関数にAPMスパンを自動生成できます。

💡重要な概念

  • Lambda Extension: Lambda実行環境内で動くサイドカープロセス。別コンテナなしでトレースとメトリクスを収集します。
  • Lambda Layer: DatadogトレーサーライブラリとExtensionバイナリを含むZIPパッケージ。
  • @tracer.wrap(): 任意の関数のAPMスパンを自動生成するPythonデコレーター。
  • PII(個人識別情報): メールや名前など、マスクせずにトレースに含めてはいけないデータ。
  • MockPIIAPI vs MockPIIAPI_Tracer: 2つのバージョン — UDPメトリクスのみとフルSDK(@tracer.wrap)。

🚀クイックスタート

  1. 関数をパッケージ:
    zip function.zip MockPIIAPI_Tracer.py
  2. Lambdaにデプロイ:
    aws lambda update-function-code --function-name your-fn --zip-file fileb://function.zip
  3. AWSコンソールでDatadog Lambda Layerを追加します。
  4. 環境変数を設定: DD_API_KEYDD_SITEDD_TRACE_ENABLED=true
  5. 関数を呼び出してDatadog APMを確認します。

📊Datadogで確認できること

APM → トレースでフィルタリング:

service:lambda-demo

Lambda呼び出しのスパンと、@tracer.wrap()でラップされた各OpenAI API呼び出しの子スパンが表示されます。

python-lambda-openai-demo

使用 Datadog Lambda Extension 監控 AWS Lambda 中的 OpenAI API 呼叫,包括 PII 處理。

🎯目的

本示範展示如何使用 Datadog Lambda Extension 對呼叫 OpenAI 的 AWS Lambda 函數進行追蹤和指標收集,無需傳統的 sidecar agent。

核心問題:無伺服器函數在 AWS 管理的短暫容器中運行,無法安裝持久的 Datadog Agent。Lambda Extension 是在同一 Lambda 執行環境中運行的輕量程序,無需獨立容器即可收集追蹤和指標。

🏗️運作方式 — 架構

AWS API Gateway
invoke
Lambda Function
Python
API call
OpenAI API
GPT model
Datadog Lambda
Extension
same env
HTTPS
Datadog Backend

Lambda Extension 作為 Lambda Layer 包含在函數中。它與函數處理程序同時啟動,在執行環境關閉前攔截遙測資料。@tracer.wrap() 裝飾器自動為任何 Python 函數建立 APM span。

💡核心概念

  • Lambda Extension:在 Lambda 執行環境中運行的 sidecar 程序,無需獨立容器即可收集追蹤和指標。
  • Lambda Layer:包含 Datadog tracer 函式庫和 Extension 二進位的 ZIP 套件,附加到您的函數。
  • @tracer.wrap():自動為任何函數建立 APM span 的 Python 裝飾器。
  • PII(個人識別資訊):電子郵件或姓名等不應在追蹤中以明文出現的資料。
  • MockPIIAPI vs MockPIIAPI_Tracer:兩個版本——僅 UDP 指標與完整 SDK(包含 @tracer.wrap)。

🚀快速開始

  1. 打包函數:
    zip function.zip MockPIIAPI_Tracer.py
  2. 部署到 Lambda:
    aws lambda update-function-code --function-name your-fn --zip-file fileb://function.zip
  3. 在 AWS 主控台將 Datadog Lambda Layer 新增到您的函數。
  4. 設定環境變數:DD_API_KEYDD_SITEDD_TRACE_ENABLED=true
  5. 呼叫函數並查看 Datadog APM。

📊在 Datadog 中會看到什麼

前往 APM → Traces 並篩選:

service:lambda-demo

您將看到 Lambda 呼叫的 span 以及每個用 @tracer.wrap() 包裝的 OpenAI API 呼叫的子 span。