View a markdown version of this page

Ejemplo: autorización para la puerta de enlace y el destino predeterminados creados por la AgentCore CLI - Amazon Bedrock AgentCore

Ejemplo: autorización para la puerta de enlace y el destino predeterminados creados por la AgentCore CLI

Si utilizó la AgentCore CLI para crear una puerta de enlace y un destino Lambda, la CLI configura automáticamente la autorización de JWT-based entrada y la autorización de IAM-based salida.

nota

Si invoca su puerta de enlace medianteagentcore invoke, la CLI gestiona la autenticación automáticamente. Los pasos que se indican a continuación solo son necesarios si desea invocar la puerta de enlace mediante programación (por ejemplo, mediante el AWS SDK o). curl

Para el acceso programático, debes autorizarlo de la siguiente manera:

  • Autorización entrante mediante JWT: obtenga el token de acceso de la autorización de Amazon Cognito que se configuró automáticamente para usted e inclúyalo en el encabezado de autorización. Consulte el siguiente ejemplo para obtener información sobre cómo obtener el token.

  • Autorización de salida mediante IAM: la AgentCore CLI configura los siguientes permisos por usted, por lo que no necesita ninguna configuración adicional:

    • Su función de servicio de puerta de enlace tiene permisos para invocar todas las funciones de Lambda (proporcionados por BedrockAgentCoreFullAccessla política gestionada).

    • La función Lambda creada se configura con su rol de servicio de puerta de enlace para Principal poder invocarla.

Puede obtener el token de acceso creado para su puerta de enlace por la AgentCore CLI con la ayuda de Amazon Cognito recopilando la siguiente información:

  • Punto final del token: búsquelo en la URL de descubrimiento de la configuración del autorizador de la puerta de enlace. Si utilizas la API, puedes encontrar la URL de descubrimiento enviando una ListGatewayssolicitud o una GetGatewaysolicitud para tu puerta de enlace.

  • ID de cliente: búsquelo en la información del grupo de usuarios de Amazon Cognito. Si usa la API, puede enviar una ListUserPoolssolicitud o una DescribeUserPoolsolicitud para el grupo de usuarios asociado a su puerta de enlace.

  • Secreto del cliente: busque la información del cliente de la aplicación del grupo de usuarios de Amazon Cognito. Si usa la API, puede enviar una DescribeUserPoolClientsolicitud especificando el ID de cliente y el ID del grupo de usuarios asociados a su puerta de enlace.

En primer lugar, recopile estos valores con uno de los siguientes métodos. Seleccione uno de los métodos siguientes:

ejemplo
Console
  1. Obtenga el punto final del token:

    1. Abre la AgentCore consola en https://console.aws.amazon.com/bedrock-agentcore/home#.

    2. En el panel de navegación izquierdo, elija Gateways.

    3. En la sección Puertas de enlace, selecciona tu puerta de enlace.

    4. En la sección Identidad entrante, anote los siguientes valores:

      • Clientes permitidos: los ID de los clientes que pueden acceder a la puerta de enlace.

      • URL de descubrimiento: el formato debe serhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Guarde los siguientes valores:

        • ${UserPoolId}— Extraer de la URL de descubrimiento.

        • Punto final del token: seleccione el enlace URL de descubrimiento y busque el valor en el token_endpoint campo.

  2. Obtenga el ID y el secreto del cliente:

    1. Abra la consola de Amazon Cognito en https://console.aws.amazon.com/cognito.

    2. En el panel de navegación izquierdo, selecciona Grupos de usuarios.

    3. Seleccione el ID del grupo de usuarios asociado a su puerta de enlace.

    4. En el panel de navegación izquierdo, elija Clientes de aplicaciones.

    5. Seleccione un cliente de aplicaciones cuyo ID de cliente coincida con los clientes permitidos para su terminal de token. Guarde el valor del ID.

    6. En Secreto de cliente, selecciona Mostrar secreto de cliente y guarda ese valor.

AWS CLI
  1. Ejecute el AgentCore get-gateway comando en una terminal y especifique el ID de la puerta de enlace en el --gateway-identifier argumento, como en el siguiente ejemplo:

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. En la respuesta, anote lo discoveryUrl siguiente en el authorizerConfiguration campo:

    • ${UserPoolId}Guarde el origen de la URL. El formato debe serhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.

    • Guarde los allowedClients valores. Estos son los ID de cliente que pueden acceder al punto final del token.

    • Navegue hasta el discoveryUrl en un navegador y almacene el token_endpoint valor.

  3. Ejecute el describe-user-pool-client comando Amazon Cognito en un terminal y especifique el ID del grupo de usuarios en el --user-pool-id argumento y un ID de cliente permitido en el --client-id campo, como en el siguiente ejemplo:

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. Guarde el ClientSecret valor.

AWS Python SDK (Boto3)
  1. Ejecute el siguiente código de Python para almacenar el punto final del token, el ID de cliente y el secreto del cliente como variables:

    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"]

En segundo lugar, usa los valores que recopilaste para acceder al token desde el punto final del token. Seleccione uno de los siguientes métodos:

ejemplo
curl
  1. Ejecute el siguiente comando en una terminal y sustituya los valores del punto final del token, el ID de cliente y el secreto del cliente.

    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}"

    El token está en el access_token campo de la respuesta, mientras que el token_type campo debe especificarloBearer.

Python requests package
  1. Ejecuta el siguiente código de Python para obtener tu token de acceso. El código asume que has almacenado los client_secret valores token_endpointclient_id, y del paso anterior:

    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"]