View a markdown version of this page

microVMs - Amazon Bedrock AgentCore

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

microVMs

Amazon Bedrock AgentCore ランタイムは、スケーリング、セッション管理、セキュリティ分離、インフラストラクチャ管理を処理し、運用の複雑さではなくインテリジェントなエージェントエクスペリエンスの構築に集中できます。ここで説明する機能を活用することで、エンタープライズグレードのセキュリティと信頼性を維持しながら、ユーザーに価値を提供する高度な AI エージェントを構築、デプロイ、管理できます。

主要コンポーネント

AgentCore ランタイム

AgentCore ランタイムは、AI エージェントまたはツールコードをホストする基本的なコンポーネントです。これは、ユーザー入力を処理し、コンテキストを維持し、AI 機能を使用してアクションを実行するコンテナ化されたアプリケーションを表します。エージェントを作成するときは、エージェントの動作、機能、およびエージェントがアクセスできるツールを定義します。たとえば、カスタマーサポートエージェントは製品の質問に回答し、返品を処理し、複雑な問題を人間の担当者にエスカレーションする場合があります。

AgentCore CLI または AgentCore Python SDK を使用するか、 SDK から直接 エージェントを構築して AgentCore ランタイムにデプロイできます。 AWS SDKs AgentCore Python SDK を使用すると、LangGraph、CrewAI、Strands Agents などの一般的なフレームワークを使用してエージェントを定義できます。SDK はインフラストラクチャの複雑さを処理するため、エージェントのロジックと機能に集中できます。

各 AgentCore ランタイム:

  • 一意の ID がある

  • 制御されたデプロイと更新をサポートするようにバージョン管理されています

バージョン

各 AgentCore ランタイムは、特定の時点で設定の完全なスナップショットをキャプチャするイミュータブルバージョンを維持します。

  • AgentCore ランタイムを作成すると、バージョン 1 (V1) が自動的に作成されます。

  • 設定 (コンテナイメージ、プロトコル設定、ネットワーク設定) を更新するたびに、新しいバージョンが作成されます。

  • 各バージョンには、実行に必要なすべての設定が含まれています。

このバージョニングシステムは、信頼性の高いデプロイ履歴とロールバック機能を提供します。

エンドポイント

エンドポイントは、特定のバージョンの AgentCore ランタイムにアドレス可能なアクセスポイントを提供します。各エンドポイント:

  • 呼び出し用の一意の ARN がある

  • エージェントランタイムの特定のバージョンを参照します。

  • 実装を更新しても、エージェントへの安定したアクセスを提供します。

キーエンドポイントの詳細:

  • CreateAgentRuntime を呼び出して最新バージョンを指すと、「DEFAULT」エンドポイントが自動的に作成されます。

  • AgentCore ランタイムを更新すると、新しいバージョンが作成されますが、DEFAULTエンドポイントは自動的に更新されて参照されます。

  • さまざまな環境 (開発、テスト、製品) の CreateAgentRuntimeEndpoint オペレーションを使用してカスタムエンドポイントを作成できます。

  • ユーザーがエンドポイントにリクエストを行うと、そのリクエストはそのエンドポイントによって参照される特定のエージェントバージョンに解決されます。

エンドポイントのライフサイクル状態は異なります。

  • CREATING - エンドポイント作成時の初期状態

  • CREATE_FAILED - アクセス許可やその他の問題による作成の失敗を示します

  • READY - エンドポイントが動作し、リクエストを受け入れる

  • UPDATING - エンドポイントは新しいバージョンを参照するように変更中です

  • UPDATE_FAILED - 更新オペレーションの失敗を示します

ダウンタイムなしでエンドポイントを更新できるため、シームレスなバージョン移行とロールバックが可能になります。

セッション

セッションは、ユーザーと AgentCore ランタイム間の個々のインタラクションコンテキストを表します。各セッション:

  • アプリケーションによってruntimeSessionId提供される一意の によって識別されるか、 が空のままの場合、最初の呼び出しでランタイム自体によって識別runtimeSessionIdされます。

  • CPU、メモリ、ファイルシステムリソースが完全に分離された専用のmicroVM で実行されます。

  • 同じ会話内の複数のインタラクションのコンテキストを保持します

  • 合計ランタイムの最大 8 時間保持可能

セッション状態には以下が含まれます。

  • アクティブ - 現在リクエストを処理しているか、バックグラウンドタスクを実行しています

  • アイドル - リクエストを処理しないが、次のインタラクションを待っている間にコンテキストを維持する

  • 終了 - 非アクティブ (15 分)、最大有効期間 (8 時間)、または異常と見なされたためにセッションが終了しました

重要なセッション特性:

  • セッション終了後、microVM 全体が終了し、メモリがサニタイズされます。

  • 終了runtimeSessionId後に同じ を持つ後続のリクエストは、新しい実行環境を作成します。

  • セッション分離により、セッション間のデータ汚染を防ぎ、セキュリティを確保

  • セッション状態はエフェメラルであり、長期的な耐久性のために使用しないでください (コンテキストの耐久性のために AgentCore Memory を使用)

セッション間の完全な分離は、エンタープライズセキュリティ、特に非決定的な AI プロセスを処理する場合に不可欠です。

プラットフォームバージョン

プラットフォームバージョンは、AgentCore Runtime がエージェントを起動する方法を制御します。エージェントランタイムごとに platformVersionフィールド (V1 または V2) を使用して設定します。V1 がデフォルトです。プラットフォームバージョンは、エージェントのランタイム自体に適用されます。設定履歴をキャプチャするランタイムバージョンとは別です。

Amazon Bedrock AgentCore Runtime V2 はスナップショットからエージェントを起動します。これにより、同時実行数やイメージサイズに関係なく、コールドスタートを迅速かつ一貫して維持できます。AgentCore Runtime は、環境を 1 回準備してスナップショットを作成し、起動ごとに環境を初期化するのではなく、新しいインスタンスごとにそのスナップショットを復元します。

一貫したコールドスタート

各インスタンスは環境を初期化するのではなく準備済みスナップショットを復元するため、V2 は同時実行数やイメージサイズに関係なくコールドスタートレイテンシーを一定に保ちます。これは、大きなコンテナイメージにとって最も重要です。そうしないと、コールドスタートごとにロードが遅くなります。

常時稼働エージェントまたはバーストエージェントのコスト削減

V2 は、エージェントがアクティブに使用している内容に基づいて課金されます。AgentCore Runtime は、エージェントがメモリを解放するときにメモリを再利用し、プラットフォームのオーバーヘッドを削減します。

注記

スナップショットから復元すると、エージェントコードの構造が変更されます。エージェントを最適化し、プラットフォームバージョン V2 を最大限に活用する方法については、「エージェントを AgentCore Runtime V2 用に最適化する」を参照してください。

サポート対象のリージョン

V2 は、次の AWS リージョンで使用できます。

  • 米国東部 (バージニア北部)、 us-east-1

  • 米国東部 (オハイオ)、 us-east-2

  • 米国西部 (オレゴン)、 us-west-2

  • 欧州 (アイルランド)、 eu-west-1

  • アジアパシフィック (東京)、 ap-northeast-1

V2 を有効にする

エージェントランタイムごとにプラットフォームバージョンを設定します。ランタイムを作成するときに設定するか、既存のランタイムを更新してプラットフォームバージョン間で移動します。ランタイムの作成platformVersion時に を省略すると、ランタイムは V1 を使用します。ランタイムの更新時にこれを省略すると、ランタイムは現在のプラットフォームバージョンを維持します。

例
AWS Management Console
  1. Amazon Bedrock AgentCore コンソールを開き、ランタイムを選択します。

  2. ランタイムページで、ランタイムの作成を選択します。

  3. エージェントまたはツールの名前を入力します。

  4. コンピューティングタイプで、microVMsを選択します。

  5. エージェント/ツールソースで、ソースタイプを選択し、コンテナイメージ URI やコードなどのアーティファクトを指定します。

  6. プラットフォームバージョンで、V2 を選択します。

  7. (オプション) IAM 実行ロールや KMS 暗号化キーなどのインバウンド認証、高度な設定、アクセス許可を設定します。

  8. ランタイムの作成 を選択します。AgentCore は、エージェントランタイムバージョン 1 とそれを指すDEFAULTエンドポイントを作成します。

AWS CLI
  1. create-agent-runtime コマンド--platform-version V2で を設定します。

    aws bedrock-agentcore-control create-agent-runtime \ --agent-runtime-name "my-agent" \ --role-arn "arn:aws:iam::111122223333:role/AgentExecutionRole" \ --agent-runtime-artifact '{ "containerConfiguration": { "containerUri": "111122223333.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" } }' \ --network-configuration '{"networkMode": "PUBLIC"}' \ --platform-version V2
  2. プラットフォームのバージョンを確認するには、 を呼び出しますget-agent-runtime。

    aws bedrock-agentcore-control get-agent-runtime \ --agent-runtime-id my-agent-ABCDE12345 \ --query platformVersion
AWS SDK
  1. 次の例では、boto3 を使用して V2 でエージェントランタイムを作成します。

    import boto3 client = boto3.client("bedrock-agentcore-control", region_name="us-west-2") client.create_agent_runtime( agentRuntimeName="my-agent", roleArn="arn:aws:iam::111122223333:role/AgentExecutionRole", agentRuntimeArtifact={ "containerConfiguration": { "containerUri": "111122223333.dkr.ecr.us-west-2.amazonaws.com/my-agent:latest" } }, networkConfiguration={"networkMode": "PUBLIC"}, platformVersion="V2", )
  2. create_agent_runtime レスポンスは を返しませんplatformVersion。get_agent_runtime を呼び出して確認します。

期待すること:

V2 の作成または更新オペレーションは環境を準備してスナップショットを作成するため、V1 とは動作が異なります。

作成と更新には数分かかります

V1 では、ランタイムは秒READY単位になります。V2 では、スナップショットを準備すると 1 回限りのコストが追加され、ランタイムが に達する前に数分間実行を作成および更新しますREADY。

コンテナは 120 秒以内に正常を報告する必要があります

AgentCore Runtime は、最初の正常な/pingレスポンスでスナップショットを作成します。スナップショットが完全に初期化されたエージェントをキャプチャできるように、初期化が完了した後に/pingのみ の状態を報告します。ランタイムが起動から 120 秒以内に正常を報告しない場合、作成はヘルスチェックエラーで失敗します。

ターミナルステータスのポーリング

ランタイムが CREATINGまたは の間、 create および updateオペレーションは を返しますUPDATING。ランタイムが終了状態になるdelete前に updateまたは を呼び出すと、オペレーションは を返しますConflictException。でステータスが READYになるか終了get_agent_runtimeするまでポーリングしFAILED、V2 ランタイムが に達するまでに数分かかりますREADY。

import time def wait_until_ready(client, agent_runtime_id): while True: status = client.get_agent_runtime(agentRuntimeId=agent_runtime_id)["status"] if status == "READY" or status.endswith("FAILED"): return status time.sleep(5)
注記

V2 は現在、エージェントの環境変数の合計サイズを、V1 の 4 KB と比較して、直接コードデプロイでは 1.5 KB、コンテナエージェントでは 2.5 KB に制限しています。設定がこの制限を超えると、リクエストは で失敗しますValidationException。AgentCore ランタイムはこの制限を V1 に合わせて引き上げます。

スナップショットのライフサイクル

V2 では、AgentCore Runtime はエンドポイントが指すランタイムバージョンごとにスナップショットを管理します。スナップショットを直接作成または削除することはありません。ランタイムとエンドポイントの変更に従います。

作成

AgentCore Runtime は、エンドポイントがバージョンを指すときにスナップショットを準備します。ランタイムを作成すると、AgentCore ランタイムはデフォルトのエンドポイントでバージョンをホストし、スナップショットを準備します。ランタイムは、異なるバージョンを指す複数のエンドポイントを持つことができるため、ランタイムは一度に複数のスナップショットを持つことができます。

更新

ランタイムを更新すると、AgentCore ランタイムはデフォルトのエンドポイントで新しいバージョンをホストし、新しいスナップショットを準備します。以前にホストされたバージョンは参照されなくなったため、AgentCore ランタイムはスナップショットを削除対象としてマークし、既存のセッションが終了した後に削除します。

[Deleted] (削除済み)

AgentCore Runtime は、エンドポイントがスナップショットをポイントしていない場合、スナップショットを削除します。これは、ランタイムの更新、バージョンへのエンドポイントの参照の削除、ランタイムまたはランタイムエンドポイントの削除時に発生します。スナップショットで既に実行されているセッションは終了するまで継続するため、削除には最大 8 時間かかることがあります。これはセッションの最大有効期間です。

Infrastructure as Code

AWS CloudFormation と AWS CDK は現在、 の設定をサポートしていませんplatformVersion。

認証とセキュリティ

インバウンド認証は、 AWS Identity and Access Management または OAuth 2.0 を介してエージェントにアクセスできるユーザーを制御し、リクエストの続行を許可する前に ID プロバイダーからのベアラートークンを検証します。アウトバウンド認証により、エージェントは OAuth キーまたは API キーを使用してサードパーティーのサービスに安全にアクセスできます。AgentCore Identity は、ユーザー委任モードまたは自律モードで認証情報を管理します。詳細については、「インバウンド認証とアウトバウンド認証による認証と認可」を参照してください。

インバウンド認証

AgentCore Identity を使用するインバウンド認証は、AgentCore ランタイムでエージェントまたはツールにアクセスして呼び出すことができるユーザーを制御します。

認証方法

  • AWS IAM (SigV4): ID 検証に AWS 認証情報を使用する

  • OAuth 2.0 : 外部 ID プロバイダーと統合

OAuth 設定オプション

  • 検出 URL: ID プロバイダーの OpenID Connect 検出エンドポイント

  • 許可された対象者: トークンに含める必要がある有効な対象者値のリスト

  • 許可されたクライアント: このエージェントにアクセスできるクライアント識別子のリスト

認証フロー

  1. エンドユーザーが ID プロバイダー (Amazon Cognito、Okta、Microsoft Entra ID) で認証する

  2. クライアントアプリケーションが認証に成功するとベアラートークンを受け取る

  3. クライアントは、エージェントを呼び出すときに認可ヘッダーにこのトークンを渡します。

  4. AgentCore Runtime が認可サーバーでトークンを検証する

  5. 有効の場合、リクエストは処理され、無効の場合、拒否されます。

これにより、適切な権限を持つ認証されたユーザーのみがエージェントにアクセスできます。

アウトバウンド認証

Amazon Bedrock AgentCore Identity を使用したアウトバウンド認証により、AgentCore Runtime でホストされているエージェントはサードパーティーのサービスに安全にアクセスできます。

認証方法

  • OAuth : OAuth フローをサポートするサービスの場合

  • API キー: キーベースの認証を使用するサービスの場合

認証モード

  • ユーザー委任 : 認証情報を使用してエンドユーザーに代わって行動する

  • 自動 : サービスレベルの認証情報を使用して独立して動作する

サポートされるサービス

  • Slack、Zoom、GitHub などのエンタープライズシステム

  • AWS サービス

  • カスタム APIsとデータソース

AgentCore Identity はこれらの認証情報を安全に管理し、エージェントコードまたはログでの認証情報の漏洩を防ぎます。

その他の機能

非同期処理

AgentCore Runtime は、以下を通じて長時間実行されるワークロードをサポートします。

  • リクエスト/レスポンスサイクルを超えるオペレーションのバックグラウンドタスク処理

  • /ping エンドポイントを介した自動ステータス追跡

  • 最大 8 時間のオペレーションのサポート

詳細については、「Amazon Bedrock AgentCore ランタイムで非同期エージェントと長時間実行エージェントを処理する」を参照してください。

ストリーミングレスポンス

エージェントは、完全な処理を待つのではなく、利用可能になったときに部分的な結果をストリーミングできます。これにより、特に大量のコンテンツを生成したり、完了にかなりの時間がかかるオペレーションで、より応答性の高いユーザーエクスペリエンスを提供できます。詳細については、「エージェントのレスポンスをストリーミングする」を参照してください。

WebSocket API

AgentCore ランタイムは、インタラクティブなエージェント通信のためのリアルタイムの双方向ストリーミング接続の WebSocket サポートを提供します。これにより、応答性が高くインタラクティブなエージェントエクスペリエンスが可能になります。詳細については、WebSocket を使用した双方向ストリーミングの開始方法」を参照してください。

プロトコルサポート

AgentCore Runtime は、複数の通信プロトコルをサポートしています。

実装の概要

AgentCoreランタイムの使用を開始する方法は次のとおりです。完全な例については、AgentCore CLI の開始方法」を参照してください。

エージェントまたはツールコードを準備する

  • AI フレームワークまたはカスタムコードを使用してエージェントロジックを定義する

  • AgentCore SDK またはカスタム実装を使用して必要な HTTP エンドポイントを追加する

  • requirements.txt ファイルに依存関係をパッケージ化する

エージェントまたはツールをデプロイする

  • コンテナイメージをビルドして Amazon ECR に直接、または AgentCore SDK 経由でプッシュする

  • コンテナイメージを使用して AgentCore ランタイムを作成する

  • 初期バージョン (V1) と DEFAULT エンドポイントが自動的に作成されます

エージェントまたはツールを呼び出す

  • ユーザーとの会話ごとに一意のセッション ID を生成する

  • エージェントの ARN とセッション ID を使用して InvokeAgentRuntime または InvokeAgentRuntimeWithWebSocketStream オペレーションを呼び出す

  • リクエストペイロードでユーザー入力を渡す

セッションの管理と監視、および更新

  • コンテキストを維持するために、フォローアップインタラクションに同じセッション ID を使用する

  • ログ、トレース、オブザーバビリティメトリクスを確認する

  • AgentCore ランタイムを変更して更新をデプロイする (新しいバージョンを作成します)

  • エンドポイントを更新して新しいバージョンを指すようにロールアウトを制御する