0
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?

Claude Code を AWS AgentCore で動かしてみた

Last updated at Posted at 2025-11-23

Claude Code を AWS の AgentCore 上で動かすという AWSによるサンプル を自分で実装してみました。デプロイ時のつまづきポイントや、AgentCoreの良さ、実装のポイントなどに気づいたので備忘のために記録します。

agentcore_architecture.png

リージョンの設定

東京リージョン (ap-northeast-1) が利用可能でした。私の実装例 には東京リージョンに改変したコードを提示していますので参考にしてください。

モデルの選択

費用を抑えるために sonnet ではなく haiku を使用することにしました。

bedrockのモデルで

global.anthropic.claude-haiku-4-5-20251001-v1:0 のように global. プレフィックスをつけるとリージョンをまたいで推論することができますが、今回のように東京リージョンに限定して使用するなら、

jp.anthropic.claude-haiku-4-5-20251001-v1:0

jp. プレフィックスを使うのが反応速度も早くおすすめです。

なお、東京リージョンで使用可能なプロファイルを確認する aws-cli のコマンドは下記です。

aws bedrock list-inference-profiles --region ap-northeast-1

権限の追加

下記の権限が必要でした

  1. aws-marketplace:ViewSubscriptions
  2. aws-marketplace:Subscribe

AWS CLI のIAMユーザーに AWSMarketplaceFullAccess をアタッチするとともに infrastructure.yamlAgentCore に下記を付与しました

# infrastructure.yaml lines 92-97
- Sid: MarketplaceAccess
  Effect: Allow
  Action:
    - "aws-marketplace:ViewSubscriptions"
    - "aws-marketplace:Subscribe"
  Resource: "*"

AWS CLI のバージョンに注意

bedrock-agentcoreコマンドはv2.32.1以降でサポートされています。AWS CLIのバージョンに注意してください。

タイムアウト

例では実行時のタイムアウトが60秒になっていましたが、これはエージェントにはあまりにも短いです。私は10分にしてみました。

aws bedrock-agentcore invoke-agent-runtime \
    --agent-runtime-arn "$RUNTIME_ARN" \
    --region "$REGION" \
    --payload "$PAYLOAD" \
    --cli-read-timeout 600 \
    "$OUTPUT_FILE"

API Gateway からのアクセス

AgentCoreをAWS CLI から使う方法はAWSのサンプルで理解できましたが、「普通に使うときはどうしたらいいん?」 という疑問がわきました。AgentCoreには Gateway という機能が備わっていますが、これは AgentCoreが外部ツールを使用するときのインターフェース のようです。AgentCore を呼び出すときには API Gateway + Lambda を使うのが素直なアプローチではないでしょうか。私の実装例では API キーを設定した API Gateway を使っています。

⚠️ 重要:API Gateway のタイムアウト制限

Gemini 3 Pro (gemini-3-pro-preview) の指摘で気づいたのですが

API Gateway (REST/HTTP) には 29秒のハードリミット があります。エージェントの処理が29秒を超えた場合、504 Gateway Timeout エラーが発生します。

上記の「タイムアウト」セクションで CLI のタイムアウトを10分(600秒)に設定しましたが、API Gateway経由でアクセスする場合、この設定だけでは不十分です。

Gemini 3 Pro が提案する長時間実行するタスクへの対応策:

  1. 非同期呼び出し: Lambda を非同期で実行し、結果を S3 や DynamoDB に保存してポーリング
  2. WebSocket API: API Gateway WebSocket API を使用(タイムアウト制限なし)
  3. AWS AppSync: GraphQL サブスクリプションでリアルタイム応答
  4. 直接SDK呼び出し: API Gateway を経由せず、AWS SDK から直接 AgentCore を呼び出す

私の実装例も Issue #3 で後ほど対応しようと考えています。

AgentCoreの良さ

まだAgentCoreの全容を理解したわけではないですが、AgentCoreの利点としては、ブラウザ使用や外部ツールの使用など、エージェントに求められる機能が一式備わっていること、またBedrockを使用することでLLMのAPIキーを別途管理する必要がないことがあると感じました。さらにAIエージェントに最適化されたCloudWatchは最も魅力に感じました。LLMの使用などをしっかり監視することができるので、組織で共有のエージェントを作成するなどの用途にはかなり向いていると思います。「サブエージェント」として、比較的軽量で、定型業務に近いエージェントの必要性がこれから増すと考えていますが、そのような用途にはうってつけではないでしょうか。

まとめ

AWS AgentCore 上で Claude Code を動かす実装を通じて、重要だと思ったポイントをまとめます:

  • AWS CLI のバージョン確認: v2.32.1以降が必須
  • リージョンプレフィックスの活用: 東京リージョンでは jp. プレフィックスで高速化
  • 適切な権限設定: AWS Marketplace の Subscribe 権限が必要
  • タイムアウトの調整: エージェントにはある程度長いタイムアウトが必要
  • API Gateway の制限に注意: 29秒制限があるため、長時間タスクには別の方式を検討

AgentCore は、エージェント機能が一式揃った強力なプラットフォームです。特に組織で共有するサブエージェントの構築に向いているのではないでしょうか。

参考文献

謝辞

図中のAgentCoreのアイコンは mauliksoniさん によるものを使わせていただきました。

0
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
0
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?