やります。人力で書いてるので、短く、端的に行きます。
手順
マネコンでいきます。
-
Lambdaを新規作成する
- ランタイムはPython 3.13(3.14はだめ)
- ARM64アーキテクチャを選ぶ(好み)
-
Lambdaレイヤーを追加する
なんと、Strands AgentsとADOT(AWS Distro for OpenTelemetry)はどちらもLambdaレイヤーがあります。pip不要です。東京リージョンの場合のARNはこちら。- arn:aws:lambda:ap-northeast-1:615299751070:layer:AWSOpenTelemetryDistroPython:25
- arn:aws:lambda:ap-northeast-1:856699698935:layer:strands-agents-py3_13-aarch64:2
注意点ですが、 Lambdaレイヤーの順番が重要です。 ADOTが先(上)で、Strands Agentsが後(下)です。逆にするとエラーです。
参考
https://aws-otel.github.io/docs/getting-started/lambda
https://strandsagents.com/docs/user-guide/deploy/deploy_to_aws_lambda/#using-the-strands-agents-lambda-layer -
設定->アクセス権限から、ロールに適切な権限を追加する
-
一般設定->一般設定からタイムアウトを伸ばす
-
コードを書く
from strands import Agent import json def lambda_handler(event, context): # TODO implement agent = Agent(model="global.anthropic.claude-haiku-4-5-20251001-v1:0") response = agent("Hello") return { 'statusCode': 200, 'body': json.dumps(response.message['content'][0]["text"], ensure_ascii=False) } -
CloudWatchでロググループを作成する。名前は何でもいいと思いますが、OTELの送り先のロググループを作ります。AgentCoreをまねるとこんな感じ
/aws/bedrock-agentcore/runtimes/strands-agentsついでに有効化してなかったら「CloudWatch Transaction Search」を有効化します。
-
Lambdaの環境変数をセットする。
AWS_LAMBDA_EXEC_WRAPPERはADOTの設定、それ以外はAgentCoreのドキュメントを参考にしました。環境変数 値 AWS_LAMBDA_EXEC_WRAPPER /opt/otel-instrument AGENT_OBSERVABILITY_ENABLED true OTEL_PYTHON_DISTRO aws_distro OTEL_PYTHON_CONFIGURATOR aws_configurator OTEL_RESOURCE_ATTRIBUTES service.name=strands-agents,aws.log.group.names=/aws/bedrock-agentcore/runtimes/strands-agents OTEL_EXPORTER_OTLP_LOGS_HEADERS x-aws-log-group=/aws/bedrock-agentcore/runtimes/strands-agents,x-aws-log-stream=runtime-logs,x-aws-metric-namespace=bedrock-agentcore OTEL_EXPORTER_OTLP_PROTOCOL http/protobuf OTEL_TRACES_EXPORTER otlp
これで行けるはず!?
