OpenAI 的前沿模型(GPT-4o、o3、o4-mini 等)和代码执行代理 Codex 终于在 AWS 上正式可用(GA)。这意味着企业不再需要绕开现有的 AWS 账户体系、安全策略和采购流程去单独对接 OpenAI——直接在熟悉的 AWS 环境里调用即可,从评估到上线的路径大幅缩短。
为什么这件事值得关注
过去一年,不少企业在用 OpenAI 模型时遇到一个尴尬局面:模型能力很强,但采购要走独立合同,网络要单独打通,合规审计要另建一套。AWS 上已有 Bedrock 托管多家模型,但 OpenAI 的前沿模型和 Codex 一直是缺口。现在这个缺口补上了,企业可以在同一个 AWS 账户下统一管理 Anthropic、Meta、OpenAI 等多家模型,采购、计费、权限控制全走 AWS 原有通道。
核心变化有三点:
- 采购归一:通过 AWS Marketplace 或现有 Enterprise Agreement 获取 OpenAI 模型,不再需要单独与 OpenAI 签约。
- 网络与合规内嵌:模型调用走 AWS VPC/PrivateLink,数据不出企业控制的网络边界,审计日志留在 CloudTrail。
- Codex 代码执行代理可用:Codex 不只是模型调用,它是一个能读代码、写代码、跑测试的异步代理,现在也能在 AWS 上直接触发。
模型调用:从 Bedrock 到 OpenAI 的衔接
OpenAI on AWS 的调用方式与 Bedrock 其他模型保持一致——通过 Bedrock 的统一 API 入口,切换 modelId 即可。这降低了集成成本:已有的 Bedrock 调用代码只需改一行模型 ID。
下面是一个用 Python SDK 调用 OpenAI GPT-4o 的最小示例:
import boto3
import json
bedrock = boto3.client("bedrock-runtime", region_name="us-east-1")
model_id = "openai.gpt-4o" # OpenAI on Bedrock 的模型 ID
body = {
"messages": [
{"role": "system", "content": "你是一个资深后端工程师,用中文回答。"},
{"role": "user", "content": "用 Python 写一个读取 S3 文件列表的函数,要求处理分页。"}
],
"max_tokens": 2048,
"temperature": 0.2
}
response = bedrock.invoke_model(
modelId=model_id,
body=json.dumps(body),
contentType="application/json",
accept="application/json"
)
result = json.loads(response["body"].read())
print(result["choices"][0]["message"]["content"])
注意:
model_id的实际值以 AWS 官方文档为准,发布初期可能带有版本后缀(如openai.gpt-4o-2025-05-13)。运行前请确认你所在 Region 已开放该模型,并在 Bedrock 控制台中启用了模型访问权限。
Codex 代理:让模型动手写代码
Codex 和普通聊天模型的关键区别在于——它是一个异步任务代理。你提交一个任务("给这个仓库加单元测试"),Codex 会拉取代码、分析结构、编写测试文件、运行测试、返回结果。这种模式适合 CI/CD 流程中的自动化代码审查、补丁生成、文档更新等场景。
通过 AWS 调用 Codex 的流程大致如下:
# 1. 确认 Bedrock 中 Codex 模型已启用
aws bedrock list-available-models \
--region us-east-1 \
--query "modelSummaries[?contains(modelId, 'codex')].modelId"
# 2. 提交一个 Codex 任务(伪命令,实际 API 以官方文档为准)
aws bedrock-agent invoke-model \
--model-id openai.codex-latest \
--input '{"task": "为 src/utils.py 生成 pytest 单元测试", "repo_url": "https://github.com/your-org/your-repo"}' \
--region us-east-1
Codex 返回的结果包含生成的代码文件、执行日志和测试通过状态。你可以把它接入 GitHub Actions 或 CodePipeline,实现"提交 PR → Codex 自动补测试 → 人工审核"的半自动化流程。
网络与权限:企业合规的关键配置
模型能力再强,如果数据路径不合规,企业也无法上线。OpenAI on AWS 在这方面做了几件事:
- VPC Endpoint:通过 AWS PrivateLink 访问 Bedrock Runtime,模型请求不经过公网。
- 数据留存承诺:OpenAI 声明通过 AWS 调用的 prompt 和 output 不用于训练其模型。
- CloudTrail 审计:每次
InvokeModel调用都会记录在 CloudTrail,可追溯谁在何时调用了哪个模型。
一个典型的 VPC Endpoint 配置:
# CloudFormation 片段:为 Bedrock Runtime 创建 VPC Endpoint
AWSTemplateFormatVersion: "2010-09-09"
Resources:
BedrockRuntimeEndpoint:
Type: AWS::EC2::VPCEndpoint
Properties:
ServiceName: com.amazonaws.us-east-1.bedrock-runtime
VpcId: vpc-0abc123def456789
VpcEndpointType: Interface
PrivateDnsEnabled: true
SubnetIds:
- subnet-0aaa111bb222
- subnet-0ccc333dd444
SecurityGroupIds:
- sg-0eee555ff666
启用 PrivateDnsEnabled 后,VPC 内的 bedrock-runtime.us-east-1.amazonaws.com 解析会自动指向 Endpoint,你的应用代码无需修改任何 URL。
上线前的检查清单
在把 OpenAI on AWS 推向生产之前,建议逐项确认:
| 检查项 | 说明 |
|---|---|
| Region 可用性 | 目前首批开放 Region 有限,确认你的工作 Region 在列表内 |
| 模型访问启用 | Bedrock 控制台中需手动勾选 OpenAI 模型的"Enable access" |
| 配额与限速 | 前沿模型的 TPM/RPM 默认配额可能低于 Bedrock 其他模型,提前申请提升 |
| VPC Endpoint | 生产环境务必走 PrivateLink,避免公网暴露 |
| 计费归属 | 通过 AWS Marketplace 订阅的 OpenAI 模型费用会出现在 Bedrock 费用行下,确认成本标签(Cost Tags)已绑定 |
| Codex 任务超时 | Codex 代理任务可能运行数分钟,设置合理的超时和重试策略 |
| 输出过滤 | 即使模型声明不用于训练,敏感数据仍应在应用层做脱敏后再发送 |
OpenAI 前沿模型进入 AWS,本质上不是"又多了一个模型供应商",而是让企业用一套已有的合规骨架去承载最强的模型能力。骨架已经搭好,剩下的工作是确认配额、打通网络、在业务场景里跑起来。