在 Amazon Bedrock 上通过跨区域推理从加拿大访问 OpenAI GPT 模型

AWS ML Blog 2026-10-21T00:42:53+08:00

在 Amazon Bedrock 上构建生成式 AI 应用的加拿大企业,通常需要能在加拿大 AWS 区域访问最新的基础模型(FM),例如 OpenAI GPT-6.1、OpenAI GPT-6 和 GPT-5.6。借助 Amazon Bedrock 的跨区域推理(CRIS),你现在可以在加拿大访问这些模型。OpenAI GPT-5.6 系列(Sol、Terra 和 Luna)、GPT-6 系列(Astra、Sol 和 Luna)以及 GPT-6.1 Sol 已在加拿大(中部)和加拿大西部(卡尔加里)区域上线。推理在北美境内处理,数据驻留控制措施将在后文说明。

跨区域推理是一种容量调度机制。应用调用源区域的 Amazon Bedrock Runtime 端点,Amazon Bedrock 随后把请求路由到受支持的目标区域进行处理。这样一来,你能接入更大的容量池,帮助应用在需求高峰期间维持吞吐量,同时无需在应用里管理目标区域的路由。

本文将介绍在加拿大可用的 GPT-5.6、GPT-6 和 GPT-6.1 模型,以及为它们提供服务的跨区域推理配置文件。然后演示如何设置权限,并通过 OpenAI Responses API、Chat Completions API 和 Amazon Bedrock Converse API 调用这些模型。针对 Responses API,我们会给出流式传输和工具调用的示例。最后介绍如何申请提高配额、查看源区域可用的可观测性信号,以及用完后如何清理资源。

加拿大可用的模型

通过跨区域推理,你可以在加拿大的 Amazon Bedrock 中访问三个 OpenAI 模型系列。下表汇总了每个模型及其定位。

模型 定位
GPT-6.1 Sol 推理和编码能力强,适合兼顾性能与成本的任务
GPT-6 Astra 适合复杂的端到端推理和智能体(agentic)任务
GPT-6 Sol 推理和编码能力强,经济性适合日常重复使用
GPT-6 Luna 面向大批量重复任务,推理速度快、成本低,每次请求可调节推理力度
GPT-5.6 Sol 适合高推理、编码和智能体工作负载
GPT-5.6 Terra 性能和成本均衡,适合日常生产环境
GPT-5.6 Luna 速度快、价格低,适合对延迟敏感的大批量应用

这些模型接受文本和图像输入,返回文本,支持 100 万 token 的上下文窗口、推理模式和工具调用。GPT-6.1 Sol 支持相同的上下文窗口和工具调用,其模型卡中还记录了额外的输入和输出模态(modalities)。GPT-5.6、GPT-6 和 GPT-6.1 还支持 Amazon Bedrock 上的提示缓存(prompt caching),详见提示缓存章节。

这些模型可通过 OpenAI Responses API、OpenAI Chat Completions API 以及 bedrock-runtime 端点上的 Amazon Bedrock Converse API 调用。定价信息请参阅 Amazon Bedrock 定价页面。各模型在哪些区域可用,请参阅《Amazon Bedrock 用户指南》中的模型卡。

从加拿大使用跨区域推理配置文件

Amazon Bedrock 的推理配置文件(inference profile)是一种逻辑标识符,用来替代原始模型 ID 传入。每个配置文件定义一个模型,以及 Amazon Bedrock 可以将请求路由到的一组区域。从加拿大可以使用两种配置文件类型:

各模型和源区域的端点可用性有所不同,如下表所示。

模型 美国地理配置文件 全球配置文件
GPT-6.1 Sol ca-central-1, ca-west-1 ca-central-1, ca-west-1
GPT-6 Astra / Sol / Luna ca-central-1, ca-west-1 ca-central-1, ca-west-1
GPT-5.6 Sol / Terra / Luna ca-central-1, ca-west-1 ca-central-1

配置文件包含的模型和可用性可能会变化。GPT-5.6 系列的全球配置文件目前只能从 ca-central-1 使用。如果从 ca-west-1 发起请求,请使用 GPT-5.6 的美国地理配置文件。部署之前,请先确认源区域中可用的配置文件,可以通过 AWS 命令行界面(AWS CLI)或控制台查看(见下一节),也可以查阅跨区域推理支持文档。

入门

以下步骤介绍如何从加拿大源区域调用这些模型,包括环境配置和代码示例。

前提条件

开始之前,请确认已满足以下条件:

设置权限

如果只是快速试用,可以附加 AWS 托管策略 AmazonBedrockLimitedAccess。如果是正式部署且对访问控制要求更严格,建议使用最小权限的自定义策略。下面的示例授予从 ca-central-1 访问 GPT-6 Astra 全球配置文件的权限:

如果通过 API 密钥方式认证(即 OpenAI SDK 使用的 bearer token),还需要额外授予 bedrock:CallWithBearerToken 权限。使用 Responses API 时,要在 arn:aws:bedrock:ca-central-1:*:project/default 上添加 bedrock:InvokeModel 权限。

SCP 注意事项

如果组织通过 SCP(服务控制策略)限制可用区域,可以使用 bedrock:InferenceProfileArn 条件键,让 CRIS 流量通过,同时拦截对未批准区域的直接调用。下面的 SCP 会拒绝在已批准源区域之外调用 Amazon Bedrock 推理,除非请求使用的是 CRIS 推理配置文件:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DenyBedrockOutsideCanadaUnlessCris",
      "Effect": "Deny",
      "Action": ["bedrock:InvokeModel*"],
      "Resource": "*"
      "Condition": {
        "StringNotEquals": {
          "aws:RequestedRegion": ["ca-central-1", "ca-west-1"]
        },
        "ArnNotLike": {
          "bedrock:InferenceProfileArn": [
            "arn:aws:bedrock:*:*:inference-profile/us.openai.*",
            "arn:aws:bedrock:*:*:inference-profile/global.openai.*"
          ]
        }
  ]
}

有了这个条件,即使某些目标区域本身被 SCP 拒绝,Amazon Bedrock 仍可路由到配置文件指定的目标区域。要让请求成功,所选配置文件中的每个目标区域都必须处于允许状态。更多细节参见「在多账户环境中设置跨区域推理」。

验证已激活的推理配置文件

调用模型之前,可以用 AWS CLI 查看源区域中哪些配置文件处于激活状态。下面这条命令会列出 ca-central-1 中已激活的 OpenAI 配置文件。如果要从 Calgary 区域检查,把 ca-central-1 换成 ca-west-1 即可。

aws bedrock list-inference-profiles \
    --region ca-central-1 \
    --type-equals SYSTEM_DEFINED \
    --query "inferenceProfileSummaries[?contains(inferenceProfileId, 'openai')].[inferenceProfileId,status]" \
    --output table

Amazon Bedrock 控制台也能看到同样的信息。打开控制台,把区域选为 Canada (Central) 或 Canada West (Calgary),在 Inference 下选择 Cross-Region inference,然后查看可用的配置文件。

下面的截图展示了 Canada (Central) 区域在 Amazon Bedrock 控制台中列出的、处于激活状态的 OpenAI 推理配置文件。

图 1:Amazon Bedrock 控制台(Canada (Central))中处于激活状态的 OpenAI 跨区域推理配置文件

通过 Amazon Bedrock Runtime 调用模型

在 bedrock-runtime 端点上,GPT-5.6、GPT-6 和 GPT-6.1 支持三种访问方式:OpenAI Responses API、OpenAI Chat Completions API,以及 Amazon Bedrock Converse API。兼容 OpenAI 的 API 通过端点的 /openai/v1 路径调用。该端点接受两种鉴权方式:AWS Signature Version 4(SigV4)签名,或 Amazon Bedrock API 密钥。

下面的示例使用 Amazon Bedrock token generator for Python,根据你当前的 AWS 凭证生成一个短期 Amazon Bedrock API 密钥,这样应用就不必保存静态密钥。

OpenAI Responses API

如果应用已经在用 OpenAI SDK 的 Responses API,只需把客户端指向区域性的 Amazon Bedrock Runtime 端点,并把推理配置文件 ID 作为模型传入即可。

from aws_bedrock_token_generator import provide_token
from openai import OpenAI

region = "ca-central-1"  # Use "ca-west-1" for Calgary
client = OpenAI(
    base_url=f"https://bedrock-runtime.{region}.amazonaws.com/openai/v1",
    api_key=provide_token(region=region),
)

response = client.responses.create(
    model="global.openai.gpt-6-astra",
    input="What are the key considerations for AI```python
response = client.responses.create(
    model="global.openai.gpt-6-astra",
    input="What are the key considerations for AI governance in Canadian financial services?",
    max_output_tokens=1024,
)

print(response.output_text)

流式输出时,把 stream=True 设上,然后遍历响应事件,文本一到就打印出来:

stream = client.responses.create(
    model="global.openai.gpt-6-luna",
    input="List five generative AI use cases for Canadian healthcare.",
    max_output_tokens=512,
    stream=True,
)

for event in stream:
    if event.type == "response.output_text.delta":
        print(event.delta, end="", flush=True)

OpenAI Chat Completions API

OpenAI Chat Completions 格式走的是同一个端点。

response = client.chat.completions.create(
    model="global.openai.gpt-5.6-terra",
    messages=[{"role": "user", "content": "Summarize recent AI regulatory trends in Canada."}],
    max_completion_tokens=1024,
    reasoning_effort="low",
)

print(response.choices[0].message.content)

支持的完整参数列表(包括推理强度等级)见 Amazon Bedrock 用户指南 中的模型卡。

Amazon Bedrock Converse API

如果应用通过 AWS SDK 调用 Amazon Bedrock,就用 Converse API。Boto3 会按标准 AWS 凭证链解析凭证。

import boto3

bedrock = boto3.client("bedrock-runtime", region_name="ca-central-1")

response = bedrock.converse(
    modelId="us.openai.gpt-5.6-terra",
    messages=[{"role": "user", "content": [{"text": "Summarize recent AI regulatory trends in Canada."}]}],
    inferenceConfig={"maxTokens": 1024},
)

# GPT-5.6 and GPT-6 may return a reasoningContent block alongside the text.
# Select the block that contains the text output.
text_output = next(
    block["text"]
    for block in response["output"]["message"]["content"]
    if "text" in block
)

print(text_output)

GPT-6 Sol、GPT-6 Luna 和 GPT-6.1 Sol 的调用方式相同,只需更换推理配置文件 ID。下面的例子中,GPT-6 Sol 使用美国地理配置文件,GPT-6 Luna 使用全局配置文件。两者都在 ca-central-1 区域验证通过。

# GPT-6 Sol, GPT-6 Luna, and GPT-6.1 Sol are called the same way. Swap the inference
# profile ID, and choose a "us." (US geographic) or "global." profile to match your
# data boundary.

# For example, GPT-6.1 Sol via the US geographic profile: modelId="us.openai.gpt-6.1-sol"

# GPT-6 Sol via the US geographic profile: strong reasoning and coding for complex work.
response = bedrock.converse(
    modelId="us.openai.gpt-6-sol",
    messages=[{"role": "user", "content": [{"text": "Summarize recent AI regulatory trends in Canada."}]}],
    inferenceConfig={"maxTokens": 512},
)
# 通过 global 配置档案调用 GPT-6 Luna:适合分类等大批量任务的低成本高速推理
response = bedrock.converse(
    modelId="global.openai.gpt-6-luna",
    messages=[{"role": "user", "content": [{"text": "Classify this ticket as BILLING, TECHNICAL, or OTHER: ..."}]}],
    inferenceConfig={"maxTokens": 256},
)

工具调用

这些模型支持客户端工具调用(函数调用)。在 tools 参数中定义工具,模型会返回结构化的工具调用请求,由你的应用执行。

response = client.responses.create(
    model="global.openai.gpt-6-astra",
    input="What's the current exchange rate from CAD to USD?",
    tools=[{
        "type": "function",
        "name": "get_exchange_rate",
        "parameters": {
            "type": "object",
            "properties": {
                "from_currency": {"type": "string"},
                "to_currency": {"type": "string"}
            }
    }],
)

# 模型返回的是工具调用请求,

……而不是文本。

for item in response.output:
    if item.type == "function_call":
        print(f"Tool: {item.name}, Args: {item.arguments}")

提示词缓存

GPT-5.6、GPT-6 和 GPT-6.1 在 Amazon Bedrock 上支持提示词缓存(prompt caching),可以降低重复提示词前缀的成本和延迟。隐式缓存无需改动代码:Amazon Bedrock 会自动缓存长度在 1,024 个 token 及以上的合格前缀。后续请求读取缓存 token 时按折扣价计费,并且不占用每分钟 token 配额。缓存 token 会出现在响应的 usage 对象和 Amazon CloudWatch 指标中,方便追踪用量。缓存写入的定价、最小前缀长度,以及显式缓存断点的支持情况,请参阅提示词缓存文档和各模型卡片。

配额管理

bedrock-runtime 端点上的跨区域推理配额按模型以每分钟 token 数(TPM)计量。每个配额把输入和输出 token 合并计入同一个上限。美国地理配置档案和 global 配置档案有各自独立的配额分配,切换配置档案就会切换到不同的配额池。

token 消耗合并计算输入 token、缓存写入输入 token 和输出 token。输出 token 会乘以模型的消耗速率(burndown rate),所以输出密集的任务消耗配额的速度会比原始 token 数看起来更快。

正式上线前,应尽早申请配额提升,并监控配额使用率。用有代表性的提示词、输出长度、流式行为、并发量和峰值流量做测试。

申请配额提升的步骤如下:

  1. 在 ca-central-1 或 ca-west-1 区域打开 Service Quotas 控制台。
  2. 选择 Amazon Bedrock,然后为目标模型选择名为 "Cross-Region InvokeModel tokens per minute" 的配额。
  3. 选择 Request increase at account level,输入目标值并提交申请。

token 用量和成本的追踪细节,请参阅在 Amazon Bedrock 中追踪用量和成本。

可观测性

这些模型通过 Amazon Bedrock Runtime API 运行,因此通过推理配置档案发出的请求,在可观测性工具中的呈现方式与按需请求相同。调用日志和 Amazon CloudWatch 指标记录在你的源区域,无论请求实际在哪个区域处理都是如此。可观测性数据集中在一处。

AWS CloudTrail 会记录每个请求,并在 additionalEventData.inferenceRegion 字段中记录由哪个目标区域提供服务。例如:

"additionalEventData": {
  "inferenceProfileArn": "arn:aws:bedrock:ca-central-1:111122223333:inference-profile/global.openai.gpt-6-astra",
  "inferenceRegion": "us-west-2"
}

Amazon CloudWatch 指标按推理配置档案发布,涵盖调用次数、token 数、延迟、限流和错误。模型调用日志会把完整的请求和响应负载投递到 Amazon Simple Storage Service(Amazon S3)或 Amazon CloudWatch Logs。要在 Amazon Bedrock 控制台上启用它,选择 Settings,然后选择 Model invocation logging;也可以调用 PutModelInvocationLoggingConfiguration API。该功能默认关闭。AWS Data Exports 可以按模型和配置档案细分支出。

查看原文