Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
Exemple : autorisation pour la passerelle et la cible par défaut créées par la AgentCore CLI
Si vous avez utilisé la AgentCore CLI pour créer une passerelle et une cible Lambda, la CLI configure automatiquement l'autorisation JWT-based entrante et l'autorisation IAM-based sortante pour vous.
Si vous appelez votre passerelle à l'aide deagentcore invoke, la CLI gère automatiquement l'authentification. Les étapes ci-dessous ne sont nécessaires que si vous souhaitez appeler la passerelle par programmation (par exemple, à l'aide du AWS SDK ou). curl
Pour l'accès par programmation, vous devez autoriser comme suit :
-
Autorisation entrante à l'aide de JWT : obtenez le jeton d'accès à partir de l'autorisation Amazon Cognito qui a été automatiquement configurée pour vous et incluez-le dans l'en-tête d'autorisation. Consultez l'exemple ci-dessous pour savoir comment obtenir le jeton.
-
Autorisation sortante à l'aide d'IAM — La AgentCore CLI configure les autorisations suivantes pour vous, vous n'avez donc pas besoin de configuration supplémentaire :
-
Votre rôle de service de passerelle est autorisé à invoquer toutes les fonctions de Lambda (fournies par la politique BedrockAgentCoreFullAccess gérée).
-
La fonction Lambda créée est configurée avec votre rôle de service de passerelle, Principal qui peut l'invoquer.
Vous pouvez obtenir le jeton d'accès créé pour votre passerelle par la AgentCore CLI à l'aide d'Amazon Cognito en collectant les informations suivantes :
-
Point de terminaison du jeton : recherchez l'URL de découverte dans la configuration de l'autorisateur pour la passerelle. Si vous utilisez l'API, vous pouvez trouver l'URL de découverte en envoyant une ListGateways requête ou une GetGateway requête pour votre passerelle.
-
ID client : recherchez les informations du groupe d'utilisateurs Amazon Cognito. Si vous utilisez l'API, vous pouvez envoyer une ListUserPools demande ou une DescribeUserPool demande pour le groupe d'utilisateurs associé à votre passerelle.
-
Secret du client : recherchez les informations sur le client de l'application du groupe d'utilisateurs Amazon Cognito. Si vous utilisez l'API, vous pouvez envoyer une DescribeUserPoolClient demande en spécifiant l'ID client et l'ID du groupe d'utilisateurs associés à votre passerelle.
Commencez par collecter ces valeurs à l'aide de l'une des méthodes suivantes. Sélectionnez l'une des méthodes suivantes :
Exemple
- Console
-
-
Obtenez le point de terminaison du jeton :
-
Ouvrez la AgentCore console à l'adresse https://console.aws.amazon.com/bedrock-agentcore/home #.
-
Dans le volet de navigation de gauche, choisissez Gateways.
-
Dans la section Passerelles, sélectionnez votre passerelle.
-
Dans la section Identité entrante, notez les valeurs suivantes :
-
Clients autorisés : ID des clients qui peuvent accéder à la passerelle.
-
URL de découverte : le format doit êtrehttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration. Stockez les valeurs suivantes :
-
Obtenez l'ID client et le code secret du client :
-
Ouvrez la console Amazon Cognito à l'adresse https://console.aws.amazon.com/cognito.
-
Dans le volet de navigation de gauche, sélectionnez Groupes d'utilisateurs.
-
Sélectionnez l'ID du groupe d'utilisateurs associé à votre passerelle.
-
Dans le volet de navigation de gauche, choisissez App clients.
-
Sélectionnez un client d'application dont l'ID client correspond aux clients autorisés pour votre point de terminaison de jeton. Enregistrez la valeur de l'ID.
-
Sous Secret client, sélectionnez Afficher le secret client et enregistrez cette valeur.
- AWS CLI
-
-
Exécutez la AgentCore get-gateway commande dans un terminal et spécifiez l'ID de votre passerelle dans l'--gateway-identifierargument, comme dans l'exemple suivant :
aws bedrock-agentcore-control get-gateway --gateway-identifier my-gateway-id
-
À partir de la réponse, notez ce qui discoveryUrl suit authorizerConfiguration dans le champ :
-
Stockez le ${UserPoolId} contenu de l'URL. Le format doit êtrehttps://cognito-idp.${Region}.amazonaws.com/${UserPoolId}/.well-known/openid-configuration.
-
Stockez les allowedClients valeurs. Il s'agit des ID clients qui peuvent accéder au point de terminaison du jeton.
-
Accédez au discoveryUrl dans un navigateur et enregistrez la token_endpoint valeur.
-
Exécutez la describe-user-pool-client commande Amazon Cognito dans un terminal et spécifiez l'ID du groupe d'utilisateurs dans l'--user-pool-idargument et un ID client autorisé dans le --client-id champ, comme dans l'exemple suivant :
aws cognito-idp describe-user-pool-client --user-pool-id my-user-pool-id --client-id my-client-id
-
Stockez la ClientSecret valeur.
- AWS Python SDK (Boto3)
-
-
Exécutez le code Python suivant pour stocker le point de terminaison du jeton, l'ID client et le secret client sous forme de 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"]
Ensuite, utilisez les valeurs que vous avez collectées pour accéder au jeton depuis le point de terminaison du jeton. Sélectionnez l'une des méthodes suivantes :
Exemple
- curl
-
-
Exécutez la commande suivante dans un terminal, en remplaçant le point de terminaison du jeton, l'ID client et les valeurs secrètes du 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}"
Le jeton se trouve dans le access_token champ de la réponse, alors que le token_type champ doit spécifierBearer.
- Python requests package
-
-
Exécutez le code Python suivant pour obtenir votre jeton d'accès. Le code part du principe que vous avez enregistré les client_secret valeurs token_endpointclient_id, et de l'étape précédente :
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"]