1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

[失敗談]AWS Bedrock × Strands でLLMを動かそうとしたらダメだった話(全工程&ハマりポイントまとめ)

Last updated at Posted at 2025-05-18

はじめに

AWSの「Bedrock」× OSSエージェントフレームワーク「Strands」で、
LLM(大規模言語モデル)をローカルCLIから対話的に動かそう!
――そう意気込んでチャレンジしたエンジニアの体験記です。

結論:「権限周り、想像以上に沼で諦めました」
でも、同じところでハマる人がきっといるはず。
そのための**「備忘録+ハマりポイント共有」**として残します。


ゴール

  • AWS BedrockのClaudeやTitanなどのモデルをStrands CLIから動かしたい
  • Mac(Apple Silicon)+ AWS個人アカウント利用
  • 最低限「何かが動く」体験をしたい!

やったこと全まとめ

1. IAMユーザーとポリシーの設定

  • 会社用と個人用のAWSアカウントを明確に分離(今回は個人用のみ利用)
  • 個人用IAMユーザーを新規作成し、必要なBedrockポリシーをアタッチ
  • aws configure で新しいプロファイル(例: personal)を追加
aws configure --profile personal

2. 利用可能なモデル一覧の取得

aws bedrock list-foundation-models --region us-east-1 --profile personal \
  | jq '.modelSummaries[] | select(.providerName=="Anthropic" or .providerName=="Amazon") | {modelId, modelName, status: .modelLifecycle.status}'
  • Anthropic(Claude)系LEGACY or ACTIVEだが、「利用不可」なものもある
  • Amazon Titan/Nova系は ACTIVE だが、動く保証はない

3. CLI単体でBedrockモデルAPIを叩くテスト

(準備)input.json を用意

{"inputText": "Hello"}

(実行)

aws bedrock-runtime invoke-model \
  --region us-east-1 \
  --model-id amazon.titan-text-lite-v1 \
  --body fileb://input.json \
  --content-type 'application/json' \
  --accept 'application/json' \
  --profile personal \
  outfile.txt

(結果)

{"inputTextTokenCount":3,"results":[{"tokenCount":13,"outputText":"\nBot: Hello! How can I help you today?","completionReason":"FINISH"}]}

👉 CLI単体なら "動作OK"。


4. Strands からBedrock経由でモデル実行

AWS_PROFILE=personal strands --model-provider bedrock --model-config '{"region": "us-east-1", "model_id": "amazon.titan-text-lite-v1"}'

(結果)

  • 何度試しても**AccessDeniedException**(権限エラー)
  • モデルIDを ACTIVEなものに変えても状況変わらず
  • 「CLI単体では動作する」のに、Strands経由では常にエラー

ハマりポイント・得られた知見

1. Bedrockモデルの「アクセス権」は本当に厳しい

  • IAMで**「Bedrockフル権限」**を明示的に付与してもダメな場合あり
  • アカウント/リージョン/モデルの状態が絡む
  • **「モデルはACTIVEでもアクセス権自体は付与されていない」**というケースに注意

2. Strandsは「推論API」のラッパーであり、AWS SDKの権限エラーは内部的に伝播してくる

  • 権限エラーがそのまま出てデバッグがつらい
  • SDKレイヤーの動作確認はまずaws CLI単体で

3. 公式サポート状況・実装依存に要注意

  • Strands側のBedrock対応実装に制約やバグがある可能性
  • **(執筆時点2025年5月)Claude/Haikuなど最新モデルは「表示はされるが、実際には権限エラー」**が出る状況

最後に(これから挑戦する人へ)

  • IAM・Bedrock・モデルID・API実行権限の4点セットは絶対チェック
  • 「CLIで動く → SDK/OSSツールで動かない」の場合はOSS側の実装やバグも疑う
  • 権限沼にハマっても**「あなただけじゃない」ので安心して!**

参考コマンド集

# プロファイル確認
aws sts get-caller-identity --profile personal

# 利用可能なモデル一覧
aws bedrock list-foundation-models --region us-east-1 --profile personal | jq '.modelSummaries[] | {providerName, modelId, modelName, status: .modelLifecycle.status}'

# Bedrock推論API動作テスト
aws bedrock-runtime invoke-model \
  --region us-east-1 \
  --model-id amazon.titan-text-lite-v1 \
  --body fileb://input.json \
  --content-type 'application/json' \
  --accept 'application/json' \
  --profile personal \
  outfile.txt

おまけ

「OSSフレームワーク×クラウドLLM」 は今後どんどん発展する分野!
今回は苦戦したけど、「沼った知見」もいつか誰かの役に立つはず。
この記事が誰かの参考になれば嬉しいです。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?