View a markdown version of this page

レート制限ディメンション - Amazon Bedrock AgentCore

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

レート制限ディメンション

ディメンションキーは、ゲートウェイがトラフィックをレート制限バケットにグループ化する方法を決定します。各ディメンションキーは、リクエストコンテキストの値を参照します。ゲートウェイは、実行時にこれらの値を解決して、一致するレート制限エントリを見つけます。

サポートされているディメンション

ディメンションキー 説明 値の例

targetName

呼び出されるターゲットの名前。リクエストパスから解決されました。

my-llm-target

toolName

呼び出されるツールの完全修飾名。形式は ですtargetName___toolName。MCP ツール使用リクエストで使用できます。

my-mcp-target___get_weather

qualifiedModelId

推論ターゲットの完全修飾モデル識別子。

anthropic.claude-3-sonnet-20240229-v1:0

$.context.jwt.<claim>

呼び出し元の JWT トークンから抽出されたクレーム。をクレーム名 (例: 、) $.context.jwt.sub<claim>に置き換えます$.context.jwt.team。

user-123

$.context.iam.principal

発信者の IAM プリンシパル ARN。

arn:aws:iam::123456789012:role/MyRole

$.context.iam.sourceIdentity

ロールを引き受けるときに発信者によって設定されたソース ID。

developer@example.com

デフォルト値 (*)

レート制限エントリは、ディメンションのキャッチオールデフォルト*として特別な値をサポートします。

  • ディメンション*に を含むエントリは、「このディメンションのすべての値にこのレートを適用する」ことを意味します。

  • 実際の値に対してより具体的なエントリが存在する場合、特定のエントリが優先されます (最も具体的な一致が優先されます)。

  • * はエンティティごとに独立したバケットを作成します。一致する各個別の値は、設定されたレートで独自のレートバケットを取得します。

マルチディメンションレート制限の末尾のみの制約:

レート制限に複数のディメンションキーがある場合、 は末尾の位置にのみ表示できます。位置 N で を使用する場合、それ以降のすべての位置も である必要があります*。

たとえば、 の場合dimensionKeys: ["targetName", "toolName", "$.context.jwt.sub"]:

エントリディメンション 有効です その理由

["target1", "readData", "alice"]

はい

すべての位置は特定の値です。

["target1", "readData", "*"]

はい

最後の位置のみが です*。

["target1", "*", "*"]

はい

末尾の位置は です*。

["*", "*", "*"]

はい

すべての位置は * (任意の組み合わせのデフォルト) です。

["*", "readData", "alice"]

いいえ

* 位置 1 の後に特定の値。

["*", "*", "alice"]

いいえ

* 位置 1~2 の後に特定の値。

["target1", "*", "alice"]

いいえ

* 位置 2 の後に位置 3 の特定の値。

マッチングの仕組み:

リクエストが到着すると、ゲートウェイは実際のディメンション値を解決し、最も具体的な一致するエントリを探します。たとえば、解決された値が の場合["target1", "readData", "alice"]、ゲートウェイは次の順序でエントリをチェックします。

  1. ["target1", "readData", "alice"] — 完全一致 (最も具体的)

  2. ["target1", "readData", "*"] — 最後のディメンションはデフォルトを使用します

  3. ["target1", "*", "*"] — 最後の 2 つのディメンションはデフォルトを使用します

  4. ["*", "*", "*"] — 完全デフォルト (最小固有)

最初の試合が成功します。

ヒント

既知の高値または制限されたエンティティには特定のエントリを使用し、他のすべてのエンティティにはデフォルトのレート階層として*エントリを使用します。

ディメンション解決の動作

ゲートウェイがレート制限を評価すると、リクエストコンテキストから各ディメンションキーが解決されます。

  • リクエストからディメンションキーを解決できない場合 (ツールtoolName以外のリクエストや存在しない JWT クレームなど)、ゲートウェイはそのレート制限を完全にスキップします。リクエストはそのレート制限によってスロットリングされません。

  • 解決には検証済みのコンテキストのみが使用されます。JWT クレームは、ゲートウェイの認証設定によって検証されたトークンから抽出されます。IAM コンテキストは、SigV4-authenticatedでのみ使用できます。

共有制限と個別制限

ディメンションキーとエントリ値の組み合わせにより、トラフィックが単一のレートバケットを共有するか、各エンティティが独自の独立したバケットを取得するかが決まります。

dimensionKeys エントリディメンション 動作

["targetName"]

{"targetName": "my-target"}

へのすべてのトラフィックは 1 つのバケットmy-targetを共有します (そのターゲットの共有制限)。

["targetName"]

{"targetName": "*"}

各ターゲットは、このレート (エンティティごと) で独自の独立したバケットを取得します。

["$.context.jwt.sub"]

{"$.context.jwt.sub": "*"}

各一意の発信者は、独自のバケットを取得します (個々の発信者ごとの制限)。

["targetName", "$.context.jwt.sub"]

{"targetName": "my-target", "$.context.jwt.sub": "*"}

各発信者は、 にスコープされた独自のバケットを取得しますmy-target。

["targetName", "$.context.jwt.sub"]

{"targetName": "*", "$.context.jwt.sub": "*"}

一意のtarget-and-callerの組み合わせごとに、独自のバケットを取得します。

警告

ディメンションキー (、、または リクエスト IDs など) として高カーディナリティ$.context.jwt.nonceまたは無制限の JWT $.context.jwt.jtiクレームを使用しないでください。これにより、無制限の数のレートバケットが作成され、レート制限の有効性が低下する可能性があります。tier 代わりに、、sub、 teamなどの安定した境界付き識別子を使用します。