Accessing OpenAI GPT models on Amazon Bedrock with global cross-Region inference in Thailand, Malaysia, Singapore, Indonesia, and Taiwan

TL;DR · AI 摘要
Accessing OpenAI GPT models on Amazon Bedrock with global cross-Region inference in Thailand, Malaysia, Singapore, Indon...
核心要点
- 主题聚焦:Accessing OpenAI GPT models on Amazon Bedrock wi
- 来源:AWS Machine Learning Blog,建议结合原文判断细节。
- AI 分析暂不可用,本条为保底评分与摘要。
在泰国、马来西亚、新加坡、印尼和台湾地区通过 Amazon Bedrock 使用 OpenAI GPT 模型进行全球跨区域推理 | 人工智能
在泰国、马来西亚、新加坡、印尼和台湾地区通过 Amazon Bedrock 使用 OpenAI GPT 模型进行全球跨区域推理
当需求超过本地容量时,单区域推理可能会出现限流。泰国、马来西亚、新加坡、印尼和台湾地区的团队需要访问超出本地容量的最新 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 用户指南》中的跨区域推理部分。如需查看每个配置文件的完整源区域和目标区域列表,请参阅《推理配置文件支持的区域和模型》。
本文将介绍 OpenAI GPT-6 的全球跨区域推理配置文件,并使用 Converse API、OpenAI 兼容 API 和代码客户端从亚太(新加坡)区域调用这些配置文件。随后将涵盖 AWS 身份和访问管理(IAM)和服务控制策略(SCP)配置、配额管理和监控。
OpenAI GPT-6 的全球跨区域推理配置文件
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 区域
global.openai.gpt-6-astra
推理配置文件可用性和区域支持会随着 AWS 新增区域和配置文件而变化,因此在构建模型前请务必在模型卡片中确认以下内容:GPT-6 Sol、GPT-6 Luna 和 GPT-6 Astra。关于每 token 计费标准,请参阅 Amazon Bedrock 定价。
在 Amazon Bedrock 上使用 OpenAI 模型入门
从前提条件开始,然后通过 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 令牌生成器。使用以下命令安装:
pip install boto3 openai aws-bedrock-token-generator。
Amazon Bedrock 控制台在系统定义的推理配置文件下列出了这三个全局跨区域推理配置文件。参见图 1。
图 1:Amazon Bedrock 控制台系统定义配置文件中包含的三个全局 OpenAI GPT-6 推理配置文件
通过 Amazon Bedrock Runtime 调用 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 覆盖此默认值,因此设置为您的源区域或取消设置。
REGION = os.environ.get("AWS_REGION", "ap-southeast-1")
PROFILE_ID = os.environ.get("BEDROCK_PROFILE_ID", "global.openai.gpt-6-sol")
PROMPT = (
"用三个要点解释何时应使用跨区域推理而非单区域模型调用。"
)
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 指向 IAM 策略。ValidationException 通常
# 表示模型 ID 不是全局跨区域推理配置文件。
response = client.converse(
modelId=PROFILE_ID,
messages=[{"role": "user", "content": [{"text": PROMPT}]}],
inferenceConfig={"maxTokens": 1024},
# GPT-6 Sol 和 Luna 接受 0 到最大值,GPT-6 Astra 拒绝 0。
additionalModelRequestFields={"reasoning": {"effort": "low"}},
)任何高于零的努力都可以前置一个 reasoningContent 块,因此应通过键选择文本块,而不是通过位置。
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 会从您的 AWS 凭证生成一个有效期长达 12 小时的短期密钥。
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 客户端时:
- 每个请求都必须设置模型参数,包括引用先前响应的请求。
- 使用受支持的工具类型:function、mcp、custom、namespace 和 tool_search。
- 在客户端中直接配置推理配置文件 ID,而不是查询模型端点。
### 设置 ChatGPT 桌面应用和 Codex CLI
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 签名机制意味着无需轮换密钥。如需使用非默认配置文件,请添加 profile = "<your-profile>",并显式设置 region,因为客户端否则会回退到 AWS_REGION。通过替换 model 的配置文件 ID 可更改模型。
Codex 报告这些配置文件的上下文窗口为 272,000 个标记,这是其自身的捆绑统计数字,而非服务限制。可通过 model_context_window 提高该数值。此配置需要 Codex CLI 0.148 或更高版本。
图 2 显示了应用中的结果。
图 2:ChatGPT 桌面应用在 Amazon Bedrock 上运行 GPT-6 Astra
## 安全与权限
Amazon Bedrock 提供多种推理控制选项。其中两个在此处相关:AWS 身份和访问管理 (IAM) 策略控制哪些角色可以调用哪些配置文件,而服务控制策略 (SCPs) 适用于整个组织的控制,包括区域范围。本节将涵盖这两方面,并说明请求数据的存储位置。
### 全局跨区域推理的 IAM 权限
通过全局跨区域推理配置文件调用任何模型时,您的 IAM 策略需要包含四个声明:
- 访问源区域中的推理配置文件和项目/默认资源的权限。
- 访问源区域中的基础模型权限,且范围限定于推理配置文件。
- 与区域无关的Amazon资源名称(ARN)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 服务控制策略示例仓库。
### 数据保留与滥用检测
对于自动化离线滥用检测,AWS 会保留分类器标记的流量最多30天并进行程序化处理。在跨区域推理时,数据保留会在目标区域进行,对于全局配置文件而言,目标区域是模型部署的任何受支持的商业AWS区域。符合条件的客户可通过其AWS账户团队申请零数据保留。有关详细信息,请参阅 Amazon Bedrock 滥用检测和数据保留。
如果您的组织有数据驻留要求,请尽早与风险合规团队沟通。请参阅AWS金融服务合规中心的国家页面,了解这五个国家的相关信息。我们建议您自行获取与业务相关的合规要求建议。
## 额度管理
bedrock-runtime 上的GPT-6额度以每分钟令牌数(TPM)为单位进行计量,并根据您调用的源区域进行跟踪。输入和缓存写入令牌按1:1计算,每个输出令牌消耗10个额度令牌。例如,一个包含2000个输入令牌和1000个输出令牌的请求将消耗12000个额度令牌。
Amazon Bedrock 会预先保留完整的最大令牌数,因此请将其设置为接近预期的完成结果。一个额度涵盖 InvokeModel、Converse、Responses 和 Chat Completions。请从源区域的 服务配额 控制台查看并调整额度。在生产之前,尽早申请额度提升,并在AWS/Bedrock命名空间中对 EstimatedTPMQuotaUsage 指标在分配额度的70%-80%时设置告警。有关当前值,请参阅 Amazon Bedrock 中令牌计数方式 和 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 编码代理洞察功能会在 GenAI 可观测性下添加现成的仪表板,按用户、团队和成本中心分解令牌使用情况。代理原生发出 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 作为模型参数传递,并根据本文配置 IAM 策略和 SCP 异常。相同的端点支持 OpenAI 兼容 API,因此现有 OpenAI 集成只需更改基础 URL 和密钥即可迁移。
要开始使用,请附加本文提供的 IAM 策略,并通过 global.openai.gpt-6-sol 发送第一个请求。将每分钟令牌配额设置为 10 倍消耗速率,并在 CloudTrail 中确认 additionalEventData.inferenceRegion 是否出现在你的调用记录中。
更多信息请参阅《Amazon Bedrock 用户指南》、《使用跨区域推理在 AWS 区域间路由模型推理请求》和《Amazon Bedrock 定价》。
## 作者简介
'"`