View a markdown version of this page

例: AgentCore CLI によって作成されたデフォルトゲートウェイとターゲットの承認 - Amazon Bedrock AgentCore

例: AgentCore CLI によって作成されたデフォルトゲートウェイとターゲットの承認

AgentCore CLI を使用してゲートウェイと Lambda ターゲットを作成した場合、CLI は JWT ベースのインバウンド認可と IAM ベースのアウトバウンド認可を自動的に設定します。

注記

を使用してゲートウェイを呼び出すとagentcore invoke、CLI は自動的に認証を処理します。以下のステップは、プログラムでゲートウェイを呼び出す ( AWS SDK や を使用するなど) curl 場合にのみ必要です。

プログラムによるアクセスの場合は、以下を使用して を承認します。

  • JWT を使用したインバウンド認可 – 自動的にセットアップされた Amazon Cognito 認可からアクセストークンを取得し、認可ヘッダーに含めます。トークンを取得する方法については、以下の例を参照してください。

  • IAM を使用したアウトバウンド認可 – AgentCore CLI は、次のアクセス許可を設定するため、追加のセットアップは必要ありません。

    • ゲートウェイサービスロールには、Lambda のすべての関数を呼び出すアクセス許可があります (BedrockAgentCoreFullAccess 管理ポリシーで提供)。

    • 作成された Lambda 関数は、ゲートウェイサービスロールを呼び出すPrincipalことができる として設定されます。

次の情報を収集することで、Amazon Cognito の助けを借りて AgentCore CLI によってゲートウェイ用に作成されたアクセストークンを取得できます。

  • トークンエンドポイント – ゲートウェイのオーソライザー設定の Discovery URL で検索します。API を使用する場合は、ゲートウェイの ListGateways リクエストまたは GetGateway リクエストを送信することで、検出 URL を見つけることができます。

  • クライアント ID – Amazon Cognito ユーザープール情報で検索します。API を使用する場合は、ゲートウェイに関連付けられたユーザープールに対して ListUserPools リクエストまたは DescribeUserPool リクエストを送信できます。

  • クライアントシークレット – Amazon Cognito ユーザープールアプリのクライアント情報で検索します。API を使用する場合は、DescribeUserPoolClient リクエストを送信して、ゲートウェイに関連付けられたクライアント ID とユーザープール ID を指定できます。

まず、次のいずれかの方法を使用してこれらの値を収集します。次のいずれかの方法を選択します。

Console
  1. トークンエンドポイント を取得します。

    1. https://console.aws.amazon.com/bedrock-agentcore/home# で AgentCore コンソールを開きます。

    2. 左側のナビゲーションペインで、ゲートウェイを選択します。

    3. ゲートウェイ セクションで、ゲートウェイを選択します。

    4. インバウンド ID セクションで、次の値を書き留めます。

      • 許可されたクライアント – ゲートウェイにアクセスできるクライアント IDs。

      • 検出 URL – 形式は https://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration である必要があります。次の値を保存します。

        • ${UserPoolId} – 検出 URL から抽出します。

        • トークンエンドポイント – 検出 URL リンクを選択し、 token_endpointフィールドの値を見つけます。

  2. クライアント IDクライアントシークレット を取得します。

    1. Amazon Cognito コンソール (https://console.aws.amazon.com/cognito) を開きます。

    2. 左側のナビゲーションペインで、ユーザープールを選択します。

    3. ゲートウェイに関連付けられたユーザープール ID を選択します。

    4. 左側のナビゲーションペインから、アプリクライアントを選択します。

    5. クライアント ID がトークンエンドポイントの許可されたクライアントと一致するアプリケーションクライアントを選択します。ID 値を保存します。

    6. クライアントシークレット で、クライアントシークレットを表示 を選択し、その値を保存します。

AWS CLI
  1. ターミナルで AgentCore get-gateway コマンドを実行し、次の例のように --gateway-identifier引数でゲートウェイ ID を指定します。

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. レスポンスから、 authorizerConfigurationフィールドdiscoveryUrlの を書き留めます。

    • URL ${UserPoolId}から を保存します。形式は である必要がありますhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration

    • allowedClients 値を保存します。これらは、トークンエンドポイントにアクセスできるクライアント IDs です。

    • ブラウザdiscoveryUrlで に移動し、token_endpoint値を保存します。

  3. ターミナルで Amazon Cognito describe-user-pool-client コマンドを実行し、次の例のように、 --user-pool-id引数にユーザープール ID、 --client-idフィールドに許可されたクライアント ID を指定します。

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. ClientSecret 値を保存します。

AWS Python SDK (Boto3)
  1. 次の Python コードを実行して、トークンエンドポイント、クライアント ID、クライアントシークレットを変数として保存します。

    import requests import boto3 # Initialize AWS clients agentcore_client = boto3.client("bedrock-agentcore-control") cognito_client = boto3.client("cognito-idp") # Replace with your actual gateway ID gateway_id = "my-gateway-id" # Get discovery URL and first allowed client auth_config = agentcore_client.get_gateway(gatewayIdentifier=gateway_id)["authorizerConfiguration"]["customJWTAuthorizer"] discovery_url, client_id = auth_config["discoveryUrl"], auth_config["allowedClients"][0] # Get token endpoint from discovery URL discovery_url_json = requests.get(discovery_url).json() token_endpoint, user_pool_id = discovery_url_json["token_endpoint"], discovery_url_json["issuer"].split("/")[-1] # Get client secret client_secret = cognito_client.describe_user_pool_client( UserPoolId=user_pool_id, ClientId=client_id )["UserPoolClient"]["ClientSecret"]

次に、収集した値を使用して、トークンエンドポイントからトークンにアクセスします。次のいずれかの方法を選択します。

curl
  1. ターミナルで次のコマンドを実行し、トークンエンドポイント、クライアント ID、クライアントシークレット値を置き換えます。

    curl --http1.1 -X POST ${TokenEndpoint} \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=client_credentials&client_id=${ClientId}&client_secret=${ClientSecret}"

    トークンはレスポンスの access_tokenフィールドにありますが、 token_typeフィールドは を指定する必要がありますBearer

Python requests package
  1. 次の Python コードを実行して、アクセストークンを取得します。このコードは、前のステップの token_endpoint 、、および client_id client_secret値を保存したことを前提としています。

    import requests import json def get_access_token(token_endpoint, client_id, client_secret): headers={ "Content-Type": "application/x-www-form-urlencoded" } payload={ "grant_type": "client_credentials", "client_id": client_id, "client_secret": client_secret } response = requests.post(token_endpoint, headers=headers, data=payload) return response.json() # Replace the argument values as necessary, if you didn't previously store them as these variables access_token_response = get_access_token( token_endpoint=token_endpoint, client_id=client_id, client_secret=client_secret ) access_token = access_token_response["access_token"]