本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
向亚马逊 Bedrock R AgentCore untime 传递自定义标
自定义标头使您可以将上下文信息从应用程序直接传递到代理代码,而不会使主请求负载混乱。您可以传递任何不在受限标头列表中的有效 HTTP 标头,包括 webhook 签名X-Custom-Signature,例如 API 密钥X-Api-Key,跟踪上下文或会话标识符。当您的代理配置为自定义 JWT 授权器时,您也可以传递Authorization标头进行 JWT-based 身份验证。为了向后兼容,X-Amzn-Bedrock-AgentCore-Runtime-Custom-将继续支持前缀为的标头。每个运行时最多可以配置 20 个标头,并且每个标头值限制为 4KB。
Amazon Bedrock AgentCore Runtime 允许您在请求中将标头传递给代理代码,前提是标头符合以下标准:
-
标头名称是有效的 HTTP 标头(字母数字字符、连字符和下划线),不在受限标头列表中。受限标题
-
不允许使用以
x-amz-开头的标头(这些标头保留给 S AWS igV4 签名)。 -
不允许使用以开头
x-amzn-的标头,前缀为的标题除外。X-Amzn-Bedrock-AgentCore-Runtime-Custom- -
标
Authorization头要求将代理运行时配置为customJWTAuthorizer用于 OAuth-based 入站访问。 -
标头值的大小不超过 4KB。
-
每个运行时最多可以配置 20 个标头。
-
标头名称不区分大小写,不允许重复(通过不区分大小写的比较)。
受限标题
为了维护安全并防止敏感信息泄露,以下标头受到限制,无法配置为传播:
| 类别 | 标头 |
|---|---|
|
身份验证和授权 |
Proxy-Authorization, WWW-Authenticate |
|
内容协商 |
接受, Accept-Charset, Accept-Encoding, Accept-Language, Content-Type, Content-Length,, Content-Encoding, Content-Language, Content-Location, Content-Range |
|
缓存 |
Cache-Control, ETag, Expires,, If-Match,, If-Modified-Since,, If-None-Match, If-Range, Pragma If-Unmodified-Since Last-Modified, Vary |
|
连接管理 |
连接、 Keep-Alive Proxy-Connection、升级 |
|
请求上下文 |
主持人、推荐人 User-Agent、发件人 |
|
范围/传输 |
Range, Accept-Ranges, Transfer-Encoding, TE, 预告片 |
|
服务器信息 |
服务器,日期,位置, Retry-After |
|
Cookie |
Set-Cookie,饼干 |
|
安全性 |
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, 起源 |
|
客户提示 |
Accept-CH, Accept-CH-Lifetime, DPR, 宽度,, 下行链路 Viewport-Width, ECT, RTT, Save-Data |
|
实验/已提议 |
Clear-Site-Data, Feature-Policy, Expect-CT, Public-Key-Pins, Public-Key-Pins-Report-Only |
|
代理 |
通过、转发 X-Forwarded-For、 X-Forwarded-Host、 X-Forwarded-Proto、 X-Real-IP、 X-Requested-With、 X-CSRF-Token |
|
IP 欺骗/网址操纵 |
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 /代理 |
CF-Ray, CF-Connecting-IP, X-Amz-Cf-Id, X-Cache, X-Served-By |
|
HTTP/2 伪标头 |
:方法、:路径、:方案、:权限、:状态 |
|
服务器推送 |
Link |
|
WebSocket |
Sec-WebSocket-Key, Sec-WebSocket-Accept, Sec-WebSocket-Version, Sec-WebSocket-Protocol, Sec-WebSocket-Extensions |
除了上面列出的受限标题外:
-
所有以开头的标题
x-amz-都受到限制(例如x-amz-security-token,、x-amz-date、x-amz-content-sha256)。它们是为 AWS 请求签名保留的。 -
所有以开头的标头
x-amzn-都受到限制,前缀X-Amzn-Bedrock-AgentCore-Runtime-Custom-为的标题除外。
第 1 步:创建您的代理
创建一个空 AgentCore 项目,然后使用请求标头许可列表添加代理:
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
更新代理的入口点文件以访问请求上下文中的自定义标头:
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()
第 2 步:使用自定义标头配置和部署代理
在代理运行时配置请求标头允许列表,以便在调用时将自定义标头转发到您的代理代码。
例
第 3 步:使用自定义标头调用您的代理
调用代理时传递自定义标头,以便您的代理代码可以通过请求上下文访问它们。
例
第 4 步:(可选)配置入站 JWT 身份验证
要将用于 OAuth-based 入站访问的 JWT 令牌传递给代理,请在代理配置authorizerConfiguration中配置authorizerType和。