内容
従来はコンテナイメージを ECR に push して Amazon Bedrock AgentCore Runtime が pull してデプロイしたいたものを、zip ファイルを直接アップロードしてデプロイできるようになったとのこと。
ただし、bedrock-agentcore-starter-toolkit を利用すれば簡単にコンテナのデプロイはできるので使い道としては「まず直接アップロードで試して、うまくいったらコンテナ化して本番環境へといったところでしょうか。
bedrock-agentcore-starter-toolkit を使ってのデプロイは過去に以下の記事で書いていますのでよければ参考までに。
実際に動かしてみてメリットを見つけたてみたいと思います。
動かしてみる
S3 configuration は、以下の 3 つから選択可能なようです。
- Start with a template: 事前構築済みのサンプルコード
- Upload to S3: エージェントの zip ファイルをローカルから S3 バケットに直接アップロード
-
Choose from an existing S3 bucket
: S3 バケットに既に保存されているエージェントの zip ファイルを選択
Select a template は、以下の 3 つから選択可能なようです。
- Strands Agent
- Otel Agent
- Streaming Agent
今回は、
「Start with a template」
「Strands Agent」
を選択し、作成し、後はデフォルトでデプロイします。
※ちなみに、AWS コンソール上だけの話かもしれませんが、Source Type で 「S3 Source」が左にきているので、個人的に S3 が推奨な気がしました。

クライアントからエージェントを呼び出してみます。
import boto3
import json
client = boto3.client('bedrock-agentcore', region_name='us-west-2')
payload = json.dumps({"prompt": "こんにちは、世界!"}).encode('utf-8')
response = client.invoke_agent_runtime(
agentRuntimeArn='arn:aws:bedrock-agentcore:us-west-2:123456789012:runtime/hosted_agent_3o9tx-ZLxifwC19N',
runtimeSessionId='dfmeoagmreaklgmrkleafremoigrmtesogmtrskhmtkrlshmt', # Must be 33+ chars
payload=payload,
qualifier="DEFAULT" # Optional
)
response_body = response['response'].read()
response_data = json.loads(response_body)
print("Agent Response:", response_data)
次に編集したコードをアップロードして呼び出してみたいと思います。
今回の template は S3 にあるので S3 からダウンロードして開き少し修正後、zip 化し再度 S3 にアップロードしておきます。

Amazon Bedrock AgentCore Runtime の画面へいき「ホスティングをアップデート」をクリック。

「Choose from an existing S3 bucket」が選択されているので、そのままデプロイします。

再度先程と同じ、client.py でエージェントを呼び出してみます。

結論
動かしていたら AWS ブログが出ていた。
Direct Code Deployment でも、starter toolkit によるデプロイは可能なようですね。
ざっくりと読んでいくと、Python で標準的な依存関係のエージェントなら、Direct Code Deployment(ZIP + S3)が推奨で、開発者の生産性向上とデプロイ時間の大幅短縮を実現し、複雑な要件や大規模パッケージの場合のみ、Container-based 方式を選択する形といったところに見受けられます。

