Strands Agents SDK デプロイ — AgentCore CLI でマネージドデプロイする
目次
はじめに
前回の記事では Lambda にサーバーレスデプロイした。Lambda は手軽だが、ステートレスなのでリクエスト間で会話を継続できない。実践第 2 回では FileSessionManager で会話を手動で永続化したが、本番環境ではインフラ側でセッションを管理したい。
Amazon Bedrock AgentCore Runtime は、AI エージェント向けに設計されたマネージドランタイムだ。セッション分離(専用 microVM)、オートスケーリング、オブザーバビリティが組み込まれている。AgentCore CLI を使えば、create + deploy の 2 コマンドで CDK の知識なしにデプロイが完了する。
この記事では以下を試す。
- プロジェクト作成とデプロイ —
agentcore create+agentcore deployの最短パス - セッション継続の検証 — 同じセッション ID で会話が継続し、別セッションでは忘れることを確認する
AgentCore CLI の詳細(ローカル開発、Memory、Gateway、Evaluations)は AgentCore CLI シリーズで扱っている。本記事ではデプロイとセッション分離に絞る。
公式ドキュメントは AgentCore CLI GitHub を参照。
セットアップ
前提条件:
- Node.js 20+(AgentCore CLI のインストールに必要)
- uv(Python エージェントのビルドに使用)
- AWS CLI が設定済みで、Bedrock AgentCore の権限があること
npm install -g @aws/agentcore
agentcore --version0.4.0プロジェクト作成とデプロイ
プロジェクト作成
agentcore create --defaults で、Python + Strands Agents + Bedrock のデフォルト構成でプロジェクトを生成する。--defaults を省略すると対話ウィザードが起動し、フレームワーク(Strands / LangChain / OpenAI Agents 等)やモデルプロバイダーを選択できる。
agentcore create --name MyAgent --defaults
cd MyAgent[done] Create MyAgent/ project directory
[done] Prepare agentcore/ directory
[done] Initialize git repository
[done] Add agent to project
[done] Set up Python environment
Project created successfully!エージェントコード(app/MyAgent/main.py)、CDK インフラコード(agentcore/cdk/)、プロジェクト設定(agentcore/agentcore.json)がすべて自動生成される。第 1 回では FastAPI のコードを手動で書き、第 2 回では Lambda ハンドラーを手動で書いたが、AgentCore CLI ではコードの記述が不要だ。
デプロイ
agentcore deployAgentCore Deploy
Project: MyAgent
Target: ap-northeast-1:123456789012
[done] Validate project
[done] Check dependencies
[done] Build CDK project
[done] Synthesize CloudFormation
[done] Check stack status
[done] Publish assets
╭────────────────────────────────────────────────╮
│ ✓ Deploy to AWS Complete │
│ [████████████████████] 5/5 │
╰────────────────────────────────────────────────╯
Deployed 1 stack(s): AgentCore-MyAgent-default内部では CDK が CloudFormation スタックを作成し、IAM ロール、ポリシー、AgentCore Runtime がすべて自動でプロビジョニングされる。CDK Bootstrap が未実施のアカウント/リージョンでも、CLI が自動で Bootstrap を実行する。第 2 回の Lambda では IAM ロールを手動で作成したが、AgentCore CLI はこれを自動化する。
動作確認
agentcore invoke --prompt "What is 2+2? Answer in one word."Fourセッション継続の検証
AgentCore の最大の特徴は、セッション分離だ。同じセッション ID で呼び出すと、前の会話を覚えている。別のセッション ID で呼び出すと、忘れている。Lambda ではこの仕組みを自分で実装する必要があったが、AgentCore では組み込みで動く。
同じセッションで会話が継続する
# 1回目: 名前を伝える
agentcore invoke \
--prompt "My name is Taro. Remember it." \
--session-id "session-taro-deploy-test-1234567890-pad"Hello Taro! Nice to meet you. I'll remember your name.# 2回目: 名前を聞く(同じセッション ID)
agentcore invoke \
--prompt "What is my name?" \
--session-id "session-taro-deploy-test-1234567890-pad"Your name is Taro!同じセッション ID で呼び出すと、1 回目で伝えた名前を 2 回目で覚えている。AgentCore は同じセッション内のリクエストを同じ microVM(セッション専用の隔離された実行環境)で処理する。microVM 内でエージェントプロセスが維持されるため、入門第 4 回で学んだ agent.messages の会話履歴がメモリ上に残り、会話が自動的に継続する。
別セッションでは忘れる
# 3回目: 名前を聞く(別のセッション ID)
agentcore invoke \
--prompt "What is my name?" \
--session-id "different-session-id-for-testing-12345"I don't know your name - you haven't told me yet!別のセッション ID では、前のセッションの情報にアクセスできない。これがセッション分離だ。各セッションは専用の microVM で実行されるため、異なるユーザーの会話が混ざることはない。
実践第 2 回では FileSessionManager で session_id を指定して会話を永続化した。AgentCore ではこの仕組みがインフラレベルで組み込まれており、コードの変更は不要だ。
なお、セッション ID は 33 文字以上である必要がある。短いセッション ID を指定するとバリデーションエラーになる。
まとめ
agentcore create+agentcore deployの 2 コマンドでデプロイが完了する — エージェントコード、IAM ロール、CloudFormation スタックがすべて自動生成される。CDK の知識は不要。- セッション分離が組み込まれている — 同じセッション ID で呼び出すと会話が継続し、別セッション ID では分離される。実践第 2 回の
FileSessionManagerが不要になる。 - セッション ID は 33 文字以上 — 短いセッション ID はバリデーションエラーになる。UUID 形式が推奨。
- 詳細は AgentCore CLI シリーズを参照 — ローカル開発(
agentcore dev)、Memory、Gateway、Evaluations については AgentCore CLI シリーズで詳しく扱っている。
クリーンアップ
# プロジェクト内のリソース定義をすべて削除
agentcore remove all -y
# AWS リソースを削除(空の状態をデプロイして CloudFormation スタックを削除)
agentcore deploy -y