Passa intestazioni personalizzate ad Amazon AgentCore Bedrock Runtime
Le intestazioni personalizzate consentono di passare le informazioni contestuali dall'applicazione direttamente al codice dell'agente senza ingombrare il payload della richiesta principale. Puoi passare qualsiasi intestazione HTTP valida che non sia presente nell'elenco delle intestazioni con restrizioni, incluse le firme dei webhook come le chiavi APIX-Custom-Signature, il contesto di traccia o gli identificatori di sessione. X-Api-Key Puoi anche passare l'Authorizationintestazione per l' JWT-based autenticazione quando il tuo agente è configurato con un autorizzatore JWT personalizzato. Le intestazioni con prefisso da X-Amzn-Bedrock-AgentCore-Runtime-Custom- continuano a essere supportate per la compatibilità con le versioni precedenti. È possibile configurare fino a 20 intestazioni per runtime e ogni valore di intestazione è limitato a 4 KB.
Amazon Bedrock AgentCore Runtime ti consente di passare le intestazioni in una richiesta al tuo codice agente, a condizione che le intestazioni soddisfino i seguenti criteri:
-
Le intestazioni che iniziano con non
x-amz-sono consentite (sono riservate alla firma di SigV4). AWS -
Le intestazioni che iniziano con non
x-amzn-sono consentite, ad eccezione delle intestazioni con il prefisso.X-Amzn-Bedrock-AgentCore-Runtime-Custom- -
L'
Authorizationintestazione richiede che il runtime dell'agente sia configurato con uncustomJWTAuthorizerper l'accesso in entrata. OAuth-based -
Il valore dell'intestazione non ha una dimensione superiore a 4 KB.
-
È possibile configurare fino a 20 intestazioni per runtime.
-
I nomi delle intestazioni non fanno distinzione tra maiuscole e minuscole e i duplicati (per confronto senza distinzione tra maiuscole e minuscole) non sono consentiti.
Intestazioni con restrizioni
Per mantenere la sicurezza e prevenire l'esposizione di informazioni sensibili, le seguenti intestazioni sono limitate e non possono essere configurate per la propagazione:
| Categoria | Intestazioni |
|---|---|
|
Autenticazione e autorizzazione |
Proxy-Authorization, WWW-Authenticate |
|
Negoziazione di contenuto |
Accetta Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Content-Length, Content-Encoding, Content-Language, Content-Location, Content-Range |
|
Caching |
Cache-Control, eTag, Scade,,,, If-Match,, If-Modified-Since, If-None-Match If-Range, If-Unmodified-Since Pragma Last-Modified, Vary |
|
Gestione delle connessioni |
Connessione,,, Aggiornamento Keep-Alive Proxy-Connection |
|
Contesto della richiesta |
Host User-Agent, Referer, Da |
|
Intervallo/ Trasferimento |
Intervallo Accept-Ranges, Transfer-Encoding, TE, rimorchio |
|
Informazioni sul server |
Server, data, ubicazione, Retry-After |
|
Cookie |
Set-Cookie, Cookie |
|
Sicurezza |
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 |
|
NUCLEO |
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 |
|
Suggerimenti per i clienti |
Accept-CH Accept-CH-Lifetime, DPR, larghezza, downlink Viewport-Width, ECT, RTT, Save-Data |
|
Sperimentale/Proposto |
Clear-Site-Data, Feature-Policy, Expect-CT, Public-Key-Pins, Public-Key-Pins-Report-Only |
|
Proxy |
Tramite, inoltrato, X-Forwarded-For, X-Forwarded-Host,, X-Forwarded-Proto, X-Real-IP X-Requested-With X-CSRF-Token |
|
Spoofing dell'IP/Manipolazione degli 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 intestazioni |
:metodo, :percorso, :schema, :autorità, :status |
|
Spinta dal server |
Link |
|
WebSocket |
Sec-WebSocket-Key, Sec-WebSocket-Accept, Sec-WebSocket-Version, Sec-WebSocket-Protocol, Sec-WebSocket-Extensions |
Oltre alle intestazioni con restrizioni elencate sopra:
-
Tutte le intestazioni che iniziano con
x-amz-sono limitate (ad esempio,x-amz-security-tokenx-amz-date,x-amz-content-sha256). Queste sono riservate alla firma delle AWS richieste. -
Tutte le intestazioni che iniziano con
x-amzn-sono limitate, ad eccezione delle intestazioni con prefisso.X-Amzn-Bedrock-AgentCore-Runtime-Custom-
Fase 1: Crea il tuo agente
Crea un AgentCore progetto utilizzando la AgentCore CLI:
agentcore create --name MyHeaderAgent cd MyHeaderAgent
Aggiorna il file entrypoint del tuo agente per accedere alle intestazioni personalizzate dal contesto della richiesta:
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", "No prompt found in input, please guide customer to create a json payload with prompt key" ) 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()
Passaggio 2: configura e distribuisci il tuo agente con intestazioni personalizzate
Configura l'elenco degli indirizzi consentiti delle intestazioni di richiesta nel runtime dell'agente in modo che le intestazioni personalizzate vengano inoltrate al codice dell'agente al momento della chiamata.
Esempio
Passaggio 3: richiama il tuo agente con intestazioni personalizzate
Passa intestazioni personalizzate quando richiami il tuo agente in modo che il codice dell'agente possa accedervi tramite il contesto della richiesta.
Esempio
Fase 4: (Facoltativo) Configurazione dell'autenticazione JWT in entrata
Per passare il token JWT utilizzato per l'accesso OAuth-based in entrata al tuo agente, configura authorizerType e authorizerConfiguration nella configurazione dell'agente.