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.
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
-
-
Obtenha o endpoint do token:
-
Abra o AgentCore console em https://console.aws.amazon.com/bedrock-agentcore/home #.
-
No painel de navegação esquerdo, escolha Gateways.
-
Na seção Gateways, selecione seu gateway.
-
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:
-
Obtenha o ID do cliente e o segredo do cliente:
-
Abra o console do Amazon Cognito em https://console.aws.amazon.com/cognito.
-
No painel de navegação esquerdo, selecione Grupos de usuários.
-
Selecione o ID do grupo de usuários associado ao seu gateway.
-
No painel de navegação esquerdo, escolha Clientes de aplicativos.
-
Selecione um cliente de aplicativo cujo ID do cliente corresponda aos clientes permitidos para seu endpoint de token. Armazene o valor do ID.
-
Em Segredo do cliente, selecione Mostrar segredo do cliente e armazene esse valor.
- AWS CLI
-
-
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
-
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.
-
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
-
Armazene o ClientSecret valor.
- AWS Python SDK (Boto3)
-
-
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
-
-
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
-
-
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"]