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.
Transmettre des en-têtes personnalisés à Amazon Bedrock Runtime AgentCore
Les en-têtes personnalisés vous permettent de transmettre des informations contextuelles de votre application directement au code de votre agent sans encombrer la charge utile de la demande principale. Vous pouvez transmettre tout en-tête HTTP valide qui ne figure pas dans la liste des en-têtes restreints, y compris les signatures de webhook telles que les clés d'APIX-Custom-Signature, le contexte de trace ou les identifiants de session. X-Api-Key Vous pouvez également transmettre l'Authorizationen-tête pour l' JWT-based authentification lorsque votre agent est configuré avec un autorisateur JWT personnalisé. Les en-têtes préfixés par « X-Amzn-Bedrock-AgentCore-Runtime-Custom- continuent d'être pris en charge pour des raisons de compatibilité descendante ». Jusqu'à 20 en-têtes peuvent être configurés par exécution, et chaque valeur d'en-tête est limitée à 4 Ko.
Amazon Bedrock AgentCore Runtime vous permet de transmettre des en-têtes dans une demande au code de votre agent à condition que les en-têtes répondent aux critères suivants :
-
Le nom de l'en-tête est un en-tête HTTP valide (caractères alphanumériques, traits d'union et traits de soulignement) et ne figure pas dans la liste des en-têtes restreints.
-
Les en-têtes commençant par N ne
x-amz-sont pas autorisés (ils sont réservés à la signature AWS SIGv4). -
Les en-têtes commençant par ne
x-amzn-sont pas autorisés, à l'exception des en-têtes préfixés par.X-Amzn-Bedrock-AgentCore-Runtime-Custom- -
L'
Authorizationen-tête nécessite que l'environnement d'exécution de l'agent soit configuré avec uncustomJWTAuthorizerpour OAuth-based l'accès entrant. -
La taille de la valeur de l'en-tête n'est pas supérieure à 4 Ko.
-
Jusqu'à 20 en-têtes peuvent être configurés par exécution.
-
Les noms d'en-tête ne font pas la distinction entre majuscules et minuscules et les doublons (par comparaison sans distinction majuscules/minuscules) ne sont pas autorisés.
En-têtes restreints
Pour garantir la sécurité et empêcher l'exposition d'informations sensibles, les en-têtes suivants sont restreints et ne peuvent pas être configurés pour la propagation :
| Catégorie | En-têtes |
|---|---|
|
Authentification et autorisation |
Proxy-Authorization, WWW-Authenticate |
|
Négociation de contenu |
Acceptez Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Content-Length, Content-Encoding, Content-Language, Content-Location, Content-Range |
|
Mise en cache |
Cache-Control, ETag, Expire,, If-Match, If-Modified-Since, If-None-Match, If-Range, Pragma If-Unmodified-Since Last-Modified, Vary |
|
Gestion des connexions |
Connexion,, Keep-Alive Proxy-Connection, Mise à niveau |
|
Contexte de la demande |
Hôte User-Agent, référent, expéditeur |
|
Portée/Transfert |
Range Accept-Ranges, Transfer-Encoding, TE, Remorque |
|
Informations sur le serveur |
Serveur, date, emplacement, Retry-After |
|
Cookies |
Set-Cookie, Biscuit |
|
Sécurité |
Content-Security-Policy, Content-Security-Policy-Report-Only, Strict-Transport-Security, X-Content-Type-Options, X-Frame-Options, X-XSS-Protection, Referrer-Policy, Permissions-Policy, Cross-Origin-Embedder-Policy, Cross-Origin-Opener-Policy, Cross-Origin-Resource-Policy |
|
CORS |
Access-Control-Allow-Origin, Access-Control-Allow-Methods Access-Control-Allow-Headers, Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age Access-Control-Request-Method, Access-Control-Request-Headers, Origine |
|
Conseils aux clients |
Accept-CH, DPR Accept-CH-Lifetime, Largeur, Liaison descendante Viewport-Width, ECT, RTT, Save-Data |
|
Expérimental/Proposé |
Clear-Site-Data, Feature-Policy, Expect-CT, Public-Key-Pins, Public-Key-Pins-Report-Only |
|
Proxy |
Par, Transféré X-Forwarded-For X-Forwarded-Host, X-Forwarded-Proto, X-Real-IP, X-Requested-With, X-CSRF-Token |
|
Usurpation d'adresse IP/manipulation d'URL |
True-Client-IP, X-Client-IP, X-Cluster-Client-IP, X-Originating-IP, X-Source-IP, X-Original-URL, X-Original-Host, X-Rewrite-URL |
|
CDN/Proxy |
CF-Ray, CF-Connecting-IP, X-Amz-Cf-Id, X-Cache, X-Served-By |
|
HTTP/2 Pseudo-en-têtes |
:method, :path, :scheme, :authority, :status |
|
Serveur Push |
Lien |
|
WebSocket |
Sec-WebSocket-Key, Sec-WebSocket-Accept, Sec-WebSocket-Version, Sec-WebSocket-Protocol, Sec-WebSocket-Extensions |
Outre les en-têtes restreints répertoriés ci-dessus :
-
Tous les en-têtes commençant par
x-amz-sont restreints (par exemple,x-amz-security-token,x-amz-date,x-amz-content-sha256). Elles sont réservées à la signature des AWS demandes. -
Tous les en-têtes commençant par
x-amzn-sont restreints, à l'exception des en-têtes préfixés par.X-Amzn-Bedrock-AgentCore-Runtime-Custom-
Étape 1 : Créez votre agent
Créez un AgentCore projet vide, puis ajoutez un agent avec l'en-tête de demande Allowlist :
agentcore create --project-name MyHeaderProject --no-agent cd MyHeaderProject agentcore add agent \ --name MyHeaderAgent \ --language Python \ --framework Strands \ --model-provider Bedrock \ --memory none \ --request-header-allowlist X-Custom-Signature,X-Api-Key,X-Amzn-Bedrock-AgentCore-Runtime-Custom-UserId
Mettez à jour le fichier de point d'entrée de votre agent pour accéder aux en-têtes personnalisés depuis le contexte de la demande :
import json from bedrock_agentcore import BedrockAgentCoreApp, RequestContext from strands import Agent app = BedrockAgentCoreApp() agent = Agent() @app.entrypoint def agent_invocation(payload, context: RequestContext): """Handler for agent invocation""" user_message = payload.get("prompt", "") if not isinstance(user_message, str) or not user_message.strip(): return {"error": "Invalid input: 'prompt' must be a non-empty string"} app.logger.info("invoking agent with user message: %s", payload) response = agent(user_message) # access request headers here request_headers = context.request_headers app.logger.info("Headers: %s", json.dumps(request_headers)) return response app.run()
Étape 2 : configurer et déployer votre agent avec des en-têtes personnalisés
Configurez la liste autorisée des en-têtes de demande sur l'environnement d'exécution de votre agent afin que les en-têtes personnalisés soient transmis au code de votre agent au moment de l'invocation.
Exemple
Étape 3 : Invoquez votre agent avec des en-têtes personnalisés
Transmettez des en-têtes personnalisés lorsque vous invoquez votre agent afin que votre code d'agent puisse y accéder via le contexte de la demande.
Exemple
Étape 4 : (Facultatif) Configurer l'authentification JWT entrante
Pour transmettre le jeton JWT utilisé pour l'accès OAuth-based entrant à votre agent, configurez authorizerType et authorizerConfiguration dans la configuration de votre agent.