View a markdown version of this page

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

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 automaticamente a autorização de JWT-based entrada e a autorização de saída para você. IAM-based

nota

Se você invocar seu gateway usandoagentcore invoke, a CLI manipula a autenticação automaticamente. As etapas abaixo só são necessárias 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 o JWT — Obtenha o token de acesso da autorização do Amazon Cognito que foi configurada automaticamente para você e inclua-o no cabeçalho da 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 BedrockAgentCoreFullAccessgerenciada).

    • 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 no URL do Discovery na configuração do autorizador do gateway. Se você usa a API, pode encontrar o URL de descoberta enviando uma ListGatewayssolicitação ou uma GetGatewaysolicitaçã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 ListUserPoolssolicitação ou uma DescribeUserPoolsolicitação para o grupo de usuários associado ao seu gateway.

  • Segredo do cliente — Encontre no aplicativo do grupo de usuários do Amazon Cognito as informações do cliente. Se você usa a API, pode enviar uma DescribeUserPoolClientsolicitaçã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.

        • Endpoint do token — Selecione o link do Discovery URL 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 o ID do gateway no --gateway-identifier argumento, como no exemplo a seguir:

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

    • Armazene o ${UserPoolId} do URL. O formato deveria 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 endpoint do token. Selecione um dos seguintes métodos:

exemplo
curl
  1. Execute o comando a seguir em um terminal, substituindo os valores de endpoint do token, ID do cliente e 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 pressupõe que você armazenou client_secret os 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"]