どうもこんにちは。
今回の記事では、Bedrock AgentCore Observabilityを使用してAIエージェントのログを出力してみました。
私のAIエージェント開発環境
私は珍しいタイプで、Bedrock AgentCore スターターツールキットを使用せずにAIエージェント構築をしているので、最初にどんな構成でAIエージェントを構築しているか、説明しておきます。
AIエージェントフレームワーク: Strands Agents
言語: Python3.13
エージェントサーバ: Docker × FastAPI × unicorn
デプロイ先: Amazon Bedrock AgentCore Runtime
おそらく多くの方が、エージェントサーバでBedrockAgentCoreAppを使用しているんじゃないかなと思っています。
そのため、Dockerfileは以下のようになっています。
# Use uv's ARM64 Python base image
FROM --platform=linux/arm64 ghcr.io/astral-sh/uv:python3.13-bookworm-slim
WORKDIR /app
# Copy uv files
COPY pyproject.toml uv.lock ./
# Install dependencies (including strands-agents)
RUN uv sync --frozen --no-cache
# Copy agent file
COPY agent.py ./
# Expose port
EXPOSE 8080
# Run application with OpenTelemetry instrumentation
CMD ["uv", "run", "uvicorn", "agent:app", "--host", "0.0.0.0", "--port", "8080"]
デプロイにもスターターツールキットは使用せず、boto3でデプロイをしています。
client = boto3.client('bedrock-agentcore-control', region_name=region_name)
今回は、BedrockAgentCoreAppを使用せずにAIエージェントをデプロイしている場合に、Bedrock AgentCore Observabilityを使用する方法を紹介します。(AIエージェント構築の説明は省略します。)
AIエージェントの構築は以下の「bedrock-agentcore-starter-toolkit なしバージョン」で構築を行なっています。
手順
0. CloudWatchでの設定
予め、CloudWatchで「トランザクション検索」を有効にしておく必要があります。
1. Dockerfileに環境変数を追加する
Dockerfileに必要な環境変数を記述します。
# OpenTelemetry / CloudWatch Observability Configuration
ENV AGENT_OBSERVABILITY_ENABLED="true"
ENV OTEL_PYTHON_DISTRO="aws_distro"
ENV OTEL_PYTHON_CONFIGURATOR="aws_configurator"
ENV OTEL_EXPORTER_OTLP_PROTOCOL="http/protobuf"
# `sample_agent`の部分をエージェント名に置き換える
ENV OTEL_EXPORTER_OTLP_LOGS_HEADERS="x-aws-log-group=aws/spans,x-aws-log-stream=default,x-aws-metric-namespace=Bedrock-AgentCore/sample_agent::DEFAULT"
ENV OTEL_RESOURCE_ATTRIBUTES="service.name=sample_agent"
2. DockerfileのCMD行を編集する
最終行のCMD行を以下のように編集します。
CMD ["uv", "run", "opentelemetry-instrument", "uvicorn", "agent:app", "--host", "0.0.0.0", "--port", "8080"]
上記が完了したら、デプロイを実行するだけです。
ログストリームを確認
まず、AIエージェントをデプロイしたRuntimeの詳細画面へ遷移します。遷移したら、バージョンが最新のものになっていることを確認します。
次に、エンドポイントにDEFAULTとなっていることを確認し、「Logs」をクリックします。クリックすると、CloudWatchのロググループ画面へ遷移します。
遷移すると、以下のようなログストリームのレコードが表示されています。
オブサーバビリティダッシュボードを確認
Runtimeの詳細画面へ遷移し、エンドポイント行の「Dashboard」をクリックします。クリックすると、CloudWatchのGenAI ObservabilityのBedrock AgentCore ダッシュボードへ遷移します。
遷移したら、「セッション」タブをクリックすると、デプロイしたエージェントに存在しているセッションの一覧が表示されます。
「トレース」タブをクリックすると、デプロイしたエージェントに対して行われた処理の詳細を確認することができます。
以上



