AWS 介绍从新加坡、雅加达、泰国、马来西亚和台北通过全球跨区域推理调用 GPT-6 Sol、Luna 与 Astra。教程覆盖 Converse 与 OpenAI 兼容接口、IAM 和 SCP 权限、配额规划及源区域监控。
当需求超出本地容量时,单区域推理可能受到限流。泰国、马来西亚、新加坡、印度尼西亚和台湾的团队需要突破这一容量限制,使用最新的 OpenAI 模型。Amazon Bedrock 支持从这五个 AWS 区域通过全球跨区域推理访问 OpenAI GPT-6 Sol 和 GPT-6 Luna,并支持从亚太地区(新加坡)访问 GPT-6 Astra。本文将介绍如何配置调用、设置权限,以及从源区域监控推理。
GPT-6 Sol、GPT-6 Luna 和 GPT-6 Astra 均可通过上述区域的 bedrock-runtime 端点进行全球跨区域推理。请参阅《Amazon Bedrock 用户指南》中的“跨区域推理”。有关各推理配置文件中源区域和目标区域的完整列表,请参阅“推理配置文件支持的区域和模型”。
本文将介绍全球跨区域推理配置文件,并通过 Converse API、OpenAI 兼容 API 和编程客户端,从亚太地区(新加坡)调用这些配置文件。随后,我们将介绍 AWS Identity and Access Management(IAM)与服务控制策略(SCP)的配置、配额管理和监控。
GPT-6 系列提供三个模型,每个模型都支持全球跨区域推理。
GPT-6 Sol 具备强大的推理和编程能力,适合处理一周内各种复杂任务。
GPT-6 Luna 让专注、可重复的任务能够以较大规模高效运行。
GPT-6 Astra 可处理复杂推理、编程和长文档任务。
这三个模型均支持文本和图像输入、客户端工具调用,以及提示词缓存。它们在推理强度方面有所不同。GPT-6 Sol 和 GPT-6 Luna 支持 none、low、medium、high、xhigh 和 max。GPT-6 Astra 支持相同级别,但不支持 none。有关 GPT-6 Sol 和 GPT-6 Luna,请参阅“通过 Amazon Bedrock 上的 GPT-6 Sol 和 GPT-6 Luna 为日常工作带来更强智能”。有关 GPT-6 Astra,请参阅“通过 Amazon Bedrock 上的 GPT-6 Astra 应对最具挑战性的工作”。
全球跨区域推理会将请求路由到已部署相应模型且受支持的 AWS 商业区域,让你能够使用更广泛的 Amazon Bedrock 容量。调用时,只需用全球跨区域推理配置文件 ID 替代模型 ID。源区域是你发起 API 调用的区域。Amazon Bedrock 会选择用于处理请求的目标区域。计费、配额跟踪、AWS CloudTrail 和 Amazon CloudWatch 均保留在源区域。
下表列出了本文涉及的全球跨区域推理配置文件 ID 和源区域。
global.openai.gpt-6-sol
global.openai.gpt-6-luna
亚太地区(新加坡)ap-southeast-1
亚太地区(雅加达)ap-southeast-3
亚太地区(马来西亚)ap-southeast-5
亚太地区(泰国)ap-southeast-7
亚太地区(台北)ap-east-2
随着 AWS 增加区域和推理配置文件,推理配置文件的可用性及区域支持情况也会变化,因此在开始构建前,请在 GPT-6 Sol、GPT-6 Luna 和 GPT-6 Astra 的模型卡片中确认这两项信息。有关按 token 计费的价格,请参阅 Amazon Bedrock 定价。
先完成前置准备,再通过 Converse API、OpenAI 兼容 API 或现有编程客户端调用这三个推理配置文件中的任意一个。
一个有权调用该推理配置文件的 IAM 身份。“安全与权限”一节中的 IAM 策略仅授予这些示例所需的权限。
已启用源区域。只需启用发起调用的区域,无需启用目标区域;目标区域使用 Amazon Bedrock 托管容量运行。新加坡(ap-southeast-1)是默认启用的区域。雅加达(ap-southeast-3)、马来西亚(ap-southeast-5)、泰国(ap-southeast-7)和台北(ap-east-2)是需要手动选择启用的区域,必须先启用才能使用。有关更多信息,请参阅“在账户中启用或禁用 AWS 区域”。
最新版本的 AWS SDK 或 CLI。OpenAI 兼容示例还需要 OpenAI SDK 和 Amazon Bedrock token 生成器。使用 pip install boto3 openai aws-bedrock-token-generator 安装。
Amazon Bedrock 控制台会在系统定义的推理配置文件中列出这三个全球跨区域推理配置文件。见图 1。
图 1:Amazon Bedrock 控制台的系统定义配置文件中列出的三个全球 OpenAI GPT-6 推理配置文件
每个模型在此端点上都支持三种访问方式:Amazon Bedrock Converse API、OpenAI Responses API 和 OpenAI Chat Completions API。OpenAI 兼容 API 通过 /openai/v1 路径调用,而非通过 AWS SDK 调用;该端点接受 Signature Version 4(SigV4)或 Amazon Bedrock API 密钥进行身份验证。无论采用哪种方式,都应将全球跨区域推理配置文件 ID 作为模型传入。
Converse API。 此示例从亚太地区(新加坡)调用 GPT-6 Sol,并记录响应。将 BEDROCK_PROFILE_ID 设置为 global.openai.gpt-6-luna 或 global.openai.gpt-6-astra 即可切换模型;如需流式输出,可调用 converse_stream。
import logging
import os
import boto3
# AWS_REGION overrides this default, so set it to your source Region or unset it.
REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
PROMPT = (
"In three bullet points, explain when a workload should use "
"cross-Region inference instead of calling a model in a single Region."
)
logging.basicConfig(format="%(levelname)s %(message)s")
log = logging.getLogger("bedrock-cris")
log.setLevel(logging.INFO)
client = boto3.client("bedrock-runtime", region_name=REGION)
# AccessDeniedException points at the IAM policy. ValidationException usually
# means the model ID is not a global cross-Region inference profile.
response = client.converse(
modelId=PROFILE_ID,
messages=[{"role": "user", "content": [{"text": PROMPT}]}],
inferenceConfig={"maxTokens": 1024},
# GPT-6 Sol and Luna accept none through max. GPT-6 Astra rejects none.
additionalModelRequestFields={"reasoning": {"effort": "low"}},
)
# Any effort above none can prepend a reasoningContent block, so pick the text
# block by key rather than by position.
text = "".join(b["text"] for b in response["output"]["message"]["content"] if "text" in b)
log.info("Called %s from %s", PROFILE_ID, REGION)
log.info("Stop reason: %s", response["stopReason"])
log.info("Response:\n%s", text)
OpenAI Chat Completions API。 将 OpenAI SDK 指向区域端点,并传入相同的推理配置文件 ID。
import logging
import os
from aws_bedrock_token_generator import provide_token
from openai import OpenAI
REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
PROMPT = "List three uses for a message queue."
logging.basicConfig(format="%(levelname)s %(message)s")
log = logging.getLogger("bedrock-cris")
log.setLevel(logging.INFO)
# provide_token mints a short-term key from your AWS credentials, valid up to 12 hours.
client = OpenAI(
base_url=f"https://bedrock-runtime.{REGION}.amazonaws.com/openai/v1",
api_key=provide_token(region=REGION),
)
response = client.chat.completions.create(
model=PROFILE_ID,
messages=[{"role": "user", "content": PROMPT}],
max_completion_tokens=256,
)
log.info("Called %s from %s", PROFILE_ID, REGION)
log.info("Response:\n%s", response.choices[0].message.content)
迁移现有 OpenAI 客户端时:
model 参数,包括引用先前响应的请求。function、mcp、custom、namespace 和 tool_search。ChatGPT 桌面应用与 Codex CLI 共用 ~/.codex/config.toml,因此修改一次即可同时配置两者。在两个内置的 Amazon Bedrock 提供方中,只有 amazon-bedrock-runtime 接受推理配置文件。
model = "global.openai.gpt-6-astra"
model_provider = "amazon-bedrock-runtime"
[model_providers.amazon-bedrock-runtime.aws]
region = "ap-southeast-1"
使用 SigV4 签名意味着无需轮换密钥。如需使用非默认的 AWS 配置文件,可添加 profile = "<your-profile>";同时应明确设置 region,因为否则客户端会回退到 AWS_REGION。将 model 替换为其他推理配置文件 ID 即可切换模型。
Codex 会为这些推理配置文件报告 272,000 token 的上下文窗口;这是 Codex 自身内置的数值,并非服务限制。可通过 model_context_window 调大该值。此配置需要 Codex CLI 0.148 或更高版本。
图 2 展示了应用中的运行结果。
图 2:ChatGPT 桌面应用通过 Amazon Bedrock 运行 GPT-6 Astra
Amazon Bedrock 提供多种推理控制机制,其中有两种与这里的场景相关。AWS Identity and Access Management(IAM)策略控制哪些角色可以调用哪些推理配置文件,服务控制策略(SCP)则在整个组织范围内实施控制,包括区域范围限制。本节将介绍这两种机制,以及请求数据会落在哪个区域。
要通过全局跨区域推理配置文件调用这些模型中的任意一个,你的 IAM 策略需要包含四条声明:
arn:aws:bedrock:::foundation-model/openai.gpt-6-sol,并将 aws:RequestedRegion 设置为 unspecified,以允许跨区域路由。bedrock:CallWithBearerToken,以支持 API 密钥身份验证。以下 IAM 策略授予从 ap-southeast-1 通过全局跨区域推理调用 GPT-6 Sol 的权限。请将 <ACCOUNT> 替换为你的 AWS 账户 ID,并将 ap-southeast-1 替换为你的源区域。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "GrantGlobalCrisProfileAndProjectAccess",
"Effect": "Allow",
"Action": ["bedrock:InvokeModel"],
"Resource": [
"arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol",
"arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:project/default"
],
"Condition": {
"StringEquals": { "aws:RequestedRegion": "ap-southeast-1" }
}
},
{
"Sid": "GrantGlobalCrisInRegionModelAccess",
"Effect": "Allow",
"Action": ["bedrock:InvokeModel"],
"Resource": ["arn:aws:bedrock:ap-southeast-1::foundation-model/openai.gpt-6-sol"],
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "ap-southeast-1",
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol"
}
}
},
{
"Sid": "GrantGlobalCrisGlobalModelAccess",
"Effect": "Allow",
"Action": ["bedrock:InvokeModel"],
"Resource": ["arn:aws:bedrock:::foundation-model/openai.gpt-6-sol"],
"Condition": {
"StringEquals": {
"aws:RequestedRegion": "unspecified",
"bedrock:InferenceProfileArn": "arn:aws:bedrock:ap-southeast-1:<ACCOUNT>:inference-profile/global.openai.gpt-6-sol"
}
}
},
{
"Sid": "AllowBearerTokenAuth",
"Effect": "Allow",
"Action": ["bedrock:CallWithBearerToken"],
"Resource": "*"
}
]
}
如果使用流式输出(converse_stream 或 stream=True),请在前三条声明的 Action 中添加 bedrock:InvokeModelWithResponseStream。Converse 按 bedrock:InvokeModel 进行授权。如果你仅使用 SigV4 凭证调用 Converse,可以删除第四条声明。
要切换模型,请将所有 openai.gpt-6-sol 替换为 openai.gpt-6-luna 或 openai.gpt-6-astra。完整参考信息请参阅《全局跨区域推理的 IAM 策略要求》。
全局跨区域推理请求不携带区域名称。Amazon Bedrock 会将 aws:RequestedRegion 设置为 unspecified,因此,SCP 中的区域允许列表会拒绝该调用,而错误信息只会指出策略类型,不会指出具体是哪条策略。这是企业账户首次调用失败的常见原因。
与其扩大允许列表,不如限定例外的适用范围。Amazon Bedrock 会在授权过程中填充 bedrock:InferenceProfileArn 条件键,因此,SCP 可以放行这些推理配置文件,同时对其他所有操作保留区域限制。以下 SCP 实现了这一点。
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DenyOutsideApprovedRegionsExceptBedrockInvoke",
"Effect": "Deny",
"NotAction": [
"iam:*", "sts:*", "organizations:*", "account:*",
"route53:*", "cloudfront:*", "waf:*", "wafv2:*", "shield:*",
"support:*", "trustedadvisor:*", "health:*",
"budgets:*", "ce:*", "cur:*", "tax:*", "billing:*",
"bedrock:Invoke*"
],
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] }
}
},
{
"Sid": "DenyBedrockInferenceOutsideApprovedRegionsUnlessCris",
"Effect": "Deny",
"Action": ["bedrock:Invoke*"],
"Resource": "*",
"Condition": {
"StringNotEquals": { "aws:RequestedRegion": ["ap-southeast-1"] },
"ArnNotLike": {
"bedrock:InferenceProfileArn": [
"arn:aws:bedrock:*:*:inference-profile/global.*"
]
}
}
}
]
}
第一条声明对 Amazon Bedrock 推理之外的所有服务执行区域允许列表限制。第二条声明拒绝在这些区域之外执行推理,除非请求通过全局跨区域推理配置文件进行路由。对于按地理范围划分的推理配置文件,请将其前缀(例如 inference-profile/us.*)添加到 ArnNotLike 列表中,因为这类请求会携带实际的区域名称。请将源区域保留在允许列表中,并将组织使用的全局服务添加到 NotAction 中。
一种更粗放的替代方案是将 unspecified 添加到现有允许列表中。这种方法也能奏效,但会让其他所有服务同样享有这一例外。如需可直接使用的策略文件,请参阅 aws-samples 的 service-control-policy-examples 仓库。
为了进行自动化离线滥用检测,AWS 会将分类器标记的流量保留最多 30 天,并以程序化方式进行处理。在跨区域推理中,数据保留发生在目标区域;对于全局推理配置文件,目标区域可以是部署了该模型的任意受支持 AWS 商业区域。符合条件的客户可以通过其 AWS 客户团队申请完全零数据保留。更多信息请参阅《Amazon Bedrock 滥用检测》和《数据保留》。
如果你的组织有数据驻留要求,请尽早与风险及合规团队讨论此事。请参阅 AWS 金融服务合规中心中这五个国家和地区的对应页面。我们建议你就适用于自身业务的合规要求寻求独立的专业意见。
GPT-6 在 bedrock-runtime 上的配额以每分钟 token 数(TPM)衡量,并按调用所用的源区域进行统计。输入 token 和缓存写入 token 按 1:1 计入配额,每个输出 token 则消耗 10 个 token 的配额。例如,一个包含 2,000 个输入 token 和 1,000 个输出 token 的请求,会消耗 12,000 个 token 的配额。
Amazon Bedrock 会预先为完整的 max_tokens 值预留配额,因此,应将其设置为接近你预期的生成长度。InvokeModel、Converse、Responses 和 Chat Completions 共用同一份配额。请在源区域的 Service Quotas 控制台中查看并提高配额。投入生产之前,请尽早申请提高配额,并针对 AWS/Bedrock 命名空间中的 EstimatedTPMQuotaUsage 设置告警,阈值设为已分配配额的 70%–80%。当前数值请参阅《Amazon Bedrock 中的 token 计数方式》和《Amazon Bedrock 端点与配额》。
运维相关数据仍保留在源区域。Amazon CloudWatch 指标、AWS CloudTrail 事件、模型调用日志、配额统计和账单都保留在你发起调用的区域。你支付的是该区域的费率,而非实际处理请求的区域的费率。
CloudTrail 会记录每个请求的实际处理区域。AWS 文档将全局跨区域推理配置文件的目标区域描述为其商业区域,而不会逐一列出。GetInferenceProfile 返回的是不绑定区域的模型 ARN 和源区域模型 ARN,而不是目标区域列表。每个请求的处理区域记录在源区域 CloudTrail 中的 additionalEventData.inferenceRegion 字段里。对此端点的推理调用属于管理事件,默认记录,且不额外收费。CloudTrail 事件历史记录保留 90 天;如需保留更长时间,则需要配置跟踪或启用模型调用日志记录。使用以下命令检索 CloudTrail 事件。
aws cloudtrail lookup-events \
--region ap-southeast-1 \
--lookup-attributes AttributeKey=EventSource,AttributeValue=bedrock.amazonaws.com \
--start-time <START> \
--end-time <END> \
--max-results 1 \
--query 'Events[0].CloudTrailEvent' --output text | python3 -m json.tool
请将查询时间范围设为覆盖你刚刚发起的调用,因为 CloudTrail 的事件送达会延迟几分钟。如果最近的事件是一次失败的调用,其中会包含 errorCode,但没有 inferenceRegion。请增大 --max-results,并选择一个不含 errorCode 的事件。
{
"eventName": "Converse",
"eventSource": "bedrock.amazonaws.com",
"awsRegion": "ap-southeast-1",
"managementEvent": true,
"requestParameters": {
"modelId": "global.openai.gpt-6-sol",
"inferenceConfig": { "maxTokens": 1024 }
},
"additionalEventData": {
"inferenceRegion": "us-east-1"
}
}
指标和编码智能体的使用情况仍保留在 CloudWatch 中。对于通过编码智能体访问 GPT-6 的开发者,CloudWatch Coding Agent Insights 在 GenAI Observability 下提供开箱即用的仪表板,按用户、团队和成本中心细分 token 使用量。这些智能体原生支持输出 OpenTelemetry 指标。对于 Codex,请参阅《为 OpenAI Codex 设置 OpenTelemetry》。
本文添加了一项 IAM 策略,以及可选的 SCP 语句和日志目标。请解除附加或删除你附加的 IAM 策略;如果添加了 SCP 条目,也请将其还原。如果你在 Amazon Simple Storage Service(Amazon S3)或 Amazon CloudWatch Logs 中创建了模型调用日志目标,请将其删除,以避免产生存储费用。全局跨区域推理配置文件由系统定义,因此无需删除任何内容。
本文展示了如何通过 bedrock-runtime 上的全局跨区域推理,从五个亚太地区源区域调用 GPT-6 Sol 和 GPT-6 Luna,以及从亚太地区(新加坡)调用 GPT-6 Astra。将全局跨区域推理配置文件 ID 作为 model 参数传入,并配置本文中的 IAM 策略和 SCP 例外规则。同一端点也提供与 OpenAI 兼容的 API,因此,现有的 OpenAI 集成只需更改基础 URL 和密钥即可迁移。
要开始使用,请附加本文中的 IAM 策略,并通过 global.openai.gpt-6-sol 发送第一个请求。按 10 倍的配额消耗速率设置每分钟 token 配额,并在 CloudTrail 中确认调用记录中出现 additionalEventData.inferenceRegion。
有关更多信息,请参阅《Amazon Bedrock 用户指南》、《使用跨区域推理在 AWS 区域之间路由模型推理请求》和 Amazon Bedrock 定价。