View a markdown version of this page

Esempio: autorizzazione per il gateway e la destinazione predefiniti creati dalla AgentCore CLI - Amazon Bedrock AgentCore

Esempio: autorizzazione per il gateway e la destinazione predefiniti creati dalla AgentCore CLI

Se hai utilizzato la AgentCore CLI per creare un gateway e una destinazione Lambda, la CLI configura automaticamente l'autorizzazione in entrata e l'autorizzazione JWT-based in uscita. IAM-based

Nota

Se richiami il gateway utilizzandoagentcore invoke, la CLI gestisce automaticamente l'autenticazione. I passaggi seguenti sono necessari solo se si desidera richiamare il gateway a livello di codice (ad esempio, utilizzando l'SDK o). AWS curl

Per l'accesso programmatico, effettuerai l'autorizzazione con quanto segue:

  • Autorizzazione in entrata tramite JWT: ottieni il token di accesso dall'autorizzazione Amazon Cognito che è stata configurata automaticamente per te e includilo nell'intestazione di autorizzazione. Guarda l'esempio seguente per scoprire come ottenere il token.

  • Autorizzazione in uscita tramite IAM: la AgentCore CLI configura automaticamente le seguenti autorizzazioni, quindi non è necessaria alcuna configurazione aggiuntiva:

    • Il ruolo del servizio gateway dispone delle autorizzazioni per richiamare tutte le funzioni in Lambda (fornite dalla policy gestita BedrockAgentCoreFullAccess).

    • La funzione Lambda creata è configurata con il ruolo del servizio gateway in modo da Principal poterla richiamare.

Puoi ottenere il token di accesso creato per il tuo gateway dalla AgentCore CLI con l'aiuto di Amazon Cognito raccogliendo le seguenti informazioni:

  • Token endpoint: trova l'URL Discovery nella configurazione dell'autorizzatore per il gateway. Se utilizzi l'API, puoi trovare l'URL di scoperta inviando una ListGatewaysrichiesta o una GetGatewayrichiesta per il tuo gateway.

  • ID cliente: trova le informazioni sul pool di utenti di Amazon Cognito. Se utilizzi l'API, puoi inviare una ListUserPoolsrichiesta o una DescribeUserPoolrichiesta per il pool di utenti associato al tuo gateway.

  • Segreto del cliente: trova le informazioni sul client dell'app del pool di utenti Amazon Cognito. Se utilizzi l'API, puoi inviare una DescribeUserPoolClientrichiesta, specificando l'ID client e l'ID del pool di utenti associati al gateway.

Innanzitutto, raccogli questi valori con uno dei seguenti metodi. Selezionate uno dei seguenti metodi:

Esempio
Console
  1. Ottieni l'endpoint del token:

    1. Apri la AgentCore console con https://console.aws.amazon.com/bedrock-agentcore/home#.

    2. Dal riquadro di navigazione a sinistra, scegli Gateways.

    3. Nella sezione Gateway, seleziona il tuo gateway.

    4. Nella sezione Inbound Identity, prendi nota dei seguenti valori:

      • Client consentiti: gli ID client che possono accedere al gateway.

      • Discovery URL: il formato dovrebbe esserehttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Memorizza i seguenti valori:

        • ${UserPoolId}— Estrai dall'URL Discovery.

        • Token endpoint: seleziona il link Discovery URL e trova il valore nel token_endpoint campo.

  2. Ottieni l'ID del cliente e il segreto del cliente:

    1. Apri la console Amazon Cognito su https://console.aws.amazon.com/cognito.

    2. Dal riquadro di navigazione a sinistra, seleziona Pool di utenti.

    3. Seleziona l'ID del pool di utenti associato al tuo gateway.

    4. Dal riquadro di navigazione a sinistra, scegli App client.

    5. Seleziona un client dell'app il cui ID client corrisponda ai client consentiti per il tuo endpoint token. Memorizza il valore dell'ID.

    6. In Client secret, seleziona Mostra client secret e memorizza quel valore.

AWS CLI
  1. Esegui il AgentCore get-gateway comando in un terminale e specifica l'ID del gateway nell'--gateway-identifierargomento, come nell'esempio seguente:

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. Dalla risposta, prendi nota discoveryUrl del authorizerConfiguration campo:

    • ${UserPoolId}Memorizza il file dall'URL. Il formato dovrebbe esserehttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.

    • Memorizza i allowedClients valori. Questi sono gli ID client che possono accedere all'endpoint del token.

    • Accedi a discoveryUrl in un browser e memorizza il token_endpoint valore.

  3. Esegui il describe-user-pool-client comando Amazon Cognito in un terminale e specifica l'ID del pool di utenti nell'--user-pool-idargomento e un ID client consentito nel --client-id campo, come nell'esempio seguente:

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. Memorizza il ClientSecret valore.

AWS Python SDK (Boto3)
  1. Esegui il seguente codice Python per memorizzare l'endpoint del token, l'ID client e il segreto del client come variabili:

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

In secondo luogo, usa i valori raccolti per accedere al token dall'endpoint del token. Seleziona uno dei seguenti metodi:

Esempio
curl
  1. Esegui il seguente comando in un terminale, sostituendo l'endpoint del token, l'ID client e i valori segreti del client.

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

    Il token si trova nel access_token campo della risposta, mentre il token_type campo deve specificareBearer.

Python requests package
  1. Esegui il seguente codice Python per ottenere il tuo token di accesso. Il codice presuppone che tu abbia memorizzato i client_secret valori token_endpointclient_id, e del passaggio precedente:

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