🧬
Strands AgentsをLLM抜きでS3 KVSクライアントとして使ってみる
Strands Agentsは、AWSが公開したオープンソースのAIエージェントSDKです。数行のコードでAIエージェントが作れます。
セッション管理機能を使うと、会話履歴やAIエージェントの状態が永続化できます。組み込みの保存先はローカルファイルシステムとS3です。
今回は、Strands Agentsを単なるS3 KVSクライアントとして使ってみます。LLMは呼び出しません。そういう使い方が便利な場合もあるでしょうから。
- Strands Agentsをすでに利用中のアプリケーションで、何かしらのデータを永続化したい場合
- プロトタイピングでシンプルなKVSを使いたい場合
1. S3バケットの作成
まず、保存先となるS3バケットを作ります。
aws s3api create-bucket \
--bucket nice-bucket-name \
--region ap-northeast-1 \
--create-bucket-configuration LocationConstraint=ap-northeast-1
2. Strands Agentsのインストール
次に、Strands Agentsをインストールします。
pip install strands-agents
3. KVSへの保存
続いて、下記のコードを write.py
として保存します。
from strands import Agent
from strands.session.s3_session_manager import S3SessionManager
session_manager = S3SessionManager(
session_id="user-123",
bucket="nice-bucket-name",
prefix="optional-prefix",
region="ap-northeast-1",
)
agent = Agent(
agent_id="agent-123",
session_manager=session_manager,
)
# キーと値の設定
agent.state.set("string_value", "hello")
agent.state.set("number_value", 42)
agent.state.set("boolean_value", True)
agent.state.set("list_value", [1, 2, 3])
agent.state.set("dict_value", {"nested": "data"})
agent.state.set("null_value", None)
# S3への保存
session_manager.sync_agent(agent)
保存したら実行します。
python write.py
以上で、データがS3に保存されるはずです。
念のため、S3を見てみましょう。オブジェクトが作られているはずです。
aws s3 ls s3://nice-bucket-name --recursive
S3の保存例
2025-08-15 20:24:19 479 optional-prefix/session_user-123/agents/agent_agent-123/agent.json
2025-08-15 20:24:19 161 optional-prefix/session_user-123/session.json
4. KVSの参照
最後に、下記のコードを read.py
として保存します。
import pprint
from strands import Agent
from strands.session.s3_session_manager import S3SessionManager
session_manager = S3SessionManager(
session_id="user-123",
bucket="nice-bucket-name",
prefix="optional-prefix",
region="ap-northeast-1",
)
agent = Agent(
agent_id="agent-123",
session_manager=session_manager,
)
# 参照
string_value = agent.state.get("string_value")
pprint.pprint(string_value)
all_state = agent.state.get()
pprint.pprint(all_state)
保存したら実行します。
python read.py
write.py
で保存した内容が表示されるはずです。
実行結果
'hello'
{'boolean_value': True,
'dict_value': {'nested': 'data'},
'list_value': [1, 2, 3],
'null_value': None,
'number_value': 42,
'string_value': 'hello'}

ENECHANGEグループは、「エネルギー革命」を技術革新により推進し、より良い世界を創出することをミッションとするエネルギーベンチャー企業です。 enechange.co.jp/
Discussion