View a markdown version of this page

Exemplo: Autorização para o gateway e o destino padrão criados pela AgentCore CLI - Base da Amazônia AgentCore

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Exemplo: Autorização para o gateway e o destino padrão criados pela AgentCore CLI

Se você usou a AgentCore CLI para criar um gateway e um destino Lambda, a CLI configura a autorização de JWT-based entrada e IAM-based a autorização de saída para você automaticamente.

nota

Se você invocar seu gateway usandoagentcore invoke, a CLI tratará a autenticação automaticamente. As etapas abaixo são necessárias somente se você quiser invocar o gateway programaticamente (por exemplo, usando o AWS SDK ou). curl

Para acesso programático, você autorizará com o seguinte:

  • Autorização de entrada usando JWT — Obtenha o token de acesso da autorização do Amazon Cognito que foi configurada automaticamente para você e inclua-o no cabeçalho de autorização. Veja o exemplo abaixo para saber como obter o token.

  • Autorização de saída usando IAM — A AgentCore CLI configura as seguintes permissões para você, então você não precisa de nenhuma configuração adicional:

    • Sua função de serviço de gateway tem permissões para invocar todas as funções no Lambda (fornecidas pela política BedrockAgentCoreFullAccess gerenciada).

    • A função Lambda criada é configurada com sua função de serviço de gateway como uma Principal que pode invocá-la.

Você pode obter o token de acesso criado para seu gateway pela AgentCore CLI com a ajuda do Amazon Cognito coletando as seguintes informações:

  • Ponto final do token — Encontre o URL de descoberta na configuração do autorizador para o gateway. Se você usa a API, pode encontrar o URL de descoberta enviando uma ListGateways solicitação ou uma GetGateway solicitação para seu gateway.

  • ID do cliente — Encontre as informações do grupo de usuários do Amazon Cognito. Se você usa a API, pode enviar uma ListUserPools solicitação ou uma DescribeUserPool solicitação para o grupo de usuários associado ao seu gateway.

  • Segredo do cliente — Encontre no pool de usuários do Amazon Cognito as informações do cliente do aplicativo. Se você usar a API, poderá enviar uma DescribeUserPoolClient solicitação especificando o ID do cliente e o ID do grupo de usuários associados ao seu gateway.

Primeiro, colete esses valores com um dos métodos a seguir. Selecione um dos seguintes métodos:

exemplo
Console
  1. Obtenha o endpoint do token:

    1. Abra o AgentCore console em https://console.aws.amazon.com/bedrock-agentcore/home #.

    2. No painel de navegação esquerdo, escolha Gateways.

    3. Na seção Gateways, selecione seu gateway.

    4. Na seção Identidade de entrada, observe os seguintes valores:

      • Clientes permitidos — Os IDs de clientes que podem acessar o gateway.

      • URL de descoberta — O formato deve serhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Armazene os seguintes valores:

        • ${UserPoolId}— Extraia do URL do Discovery.

        • Ponto final do token — Selecione o link do URL de descoberta e encontre o valor no token_endpoint campo.

  2. Obtenha o ID do cliente e o segredo do cliente:

    1. Abra o console do Amazon Cognito em https://console.aws.amazon.com/cognito.

    2. No painel de navegação esquerdo, selecione Grupos de usuários.

    3. Selecione o ID do grupo de usuários associado ao seu gateway.

    4. No painel de navegação esquerdo, escolha Clientes de aplicativos.

    5. Selecione um cliente de aplicativo cujo ID do cliente corresponda aos clientes permitidos para seu endpoint de token. Armazene o valor do ID.

    6. Em Segredo do cliente, selecione Mostrar segredo do cliente e armazene esse valor.

AWS CLI
  1. Execute o AgentCore get-gateway comando em um terminal e especifique seu ID de gateway no --gateway-identifier argumento, como no exemplo a seguir:

    aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
  2. Na resposta, observe o discoveryUrl do authorizerConfiguration campo:

    • Armazene o ${UserPoolId} do URL. O formato deve serhttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.

    • Armazene os allowedClients valores. Esses são os IDs do cliente que podem acessar o endpoint do token.

    • Navegue até o discoveryUrl em um navegador e armazene o token_endpoint valor.

  3. Execute o describe-user-pool-client comando Amazon Cognito em um terminal e especifique o ID do grupo de usuários no --user-pool-id argumento e um ID de cliente permitido no --client-id campo, como no exemplo a seguir:

    aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
  4. Armazene o ClientSecret valor.

AWS Python SDK (Boto3)
  1. Execute o código Python a seguir para armazenar o endpoint do token, o ID do cliente e o segredo do cliente como variáveis:

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

Em segundo lugar, use os valores que você coletou para acessar o token a partir do terminal do token. Selecione um dos seguintes métodos:

exemplo
curl
  1. Execute o comando a seguir em um terminal, substituindo os valores do terminal do token, do ID do cliente e do segredo do 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}"

    O token está no access_token campo da resposta, enquanto o token_type campo deve especificarBearer.

Python requests package
  1. Execute o código Python a seguir para obter seu token de acesso. O código presume que você armazenou os client_secret valores token_endpointclient_id, e da etapa 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"]