Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Ejemplo: autorización para la puerta de enlace y el destino predeterminados creados por la AgentCore CLI
Si usó 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.
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 mediante programación, autorizarás lo siguiente:
-
Autorización entrante con 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 la 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 para ti, por lo que no necesitas ninguna configuración adicional:
-
Su función de servicio de puerta de enlace tiene permisos para invocar todas las funciones de Lambda (proporcionados por la política administrada). BedrockAgentCoreFullAccess
-
La función de Lambda creada está configurada con su rol de servicio de puerta de enlace como una función Principal que puede 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: busque la URL de descubrimiento en la configuración del autorizador de la puerta de enlace. Si usas la API, puedes encontrar la URL de detección enviando una ListGateways solicitud o una GetGateway solicitud para tu puerta de enlace.
-
ID de cliente: busque en la información del grupo de usuarios de Amazon Cognito. Si usa la API, puede enviar una ListUserPools solicitud o una DescribeUserPool solicitud 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 DescribeUserPoolClient solicitud especificando el ID de cliente y el ID del grupo de usuarios asociados a su puerta de enlace.
En primer lugar, recopila estos valores con uno de los métodos siguientes. Seleccione uno de los métodos siguientes:
ejemplo
- Console
-
-
Obtenga el punto final del token:
-
Abre la AgentCore consola en https://console.aws.amazon.com/bedrock-agentcore/home #.
-
En el panel de navegación izquierdo, selecciona Gateways.
-
En la sección Puertas de enlace, selecciona tu puerta de enlace.
-
En la sección Identidad entrante, anota los siguientes valores:
-
Clientes permitidos: los ID de cliente 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. Almacene los siguientes valores:
-
Obtenga el ID y el secreto del cliente:
-
Abra la consola de Amazon Cognito en https://console.aws.amazon.com/cognito.
-
En el panel de navegación izquierdo, selecciona Grupos de usuarios.
-
Seleccione el ID del grupo de usuarios asociado a su puerta de enlace.
-
En el panel de navegación izquierdo, selecciona Clientes de aplicaciones.
-
Seleccione un cliente de aplicación cuyo ID de cliente coincida con los clientes permitidos para su punto final de token. Guarda el valor del ID.
-
En Secreto del cliente, selecciona Mostrar el secreto del cliente y almacena ese valor.
- AWS CLI
-
-
Ejecuta el AgentCore get-gateway comando en una terminal y especifica tu ID de puerta de enlace en el --gateway-identifier argumento, como en el ejemplo siguiente:
aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
-
En la respuesta, anote lo discoveryUrl siguiente en el authorizerConfiguration campo:
-
Almacena el ${UserPoolId} de la URL. El formato debe serhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.
-
Almacene 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 guarde el token_endpoint valor.
-
Ejecute el describe-user-pool-client comando Amazon Cognito en una 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
-
Almacene el ClientSecret valor.
- AWS Python SDK (Boto3)
-
-
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. Selecciona uno de los siguientes métodos:
ejemplo
- curl
-
-
Ejecute el siguiente comando en una terminal y sustituya los valores del extremo 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
-
-
Ejecuta el siguiente código de Python para obtener tu token de acceso. El código presupone que almacenaste client_secret los 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"]