2025年Bedrock新推出了单一API Key功能,本文介绍如何使用。

一、背景
在过去Bedrock一直使用AWS自己的AKSK(Access Key/Secret Key)做身份鉴权。这要求账号管理员需要事先配置IAM User、IAM Policy,规定可调用服务范围,然后在运行环境上的特定路径保存AKSK、或者安装AWSCLI配置AKSK。

在一些嵌入式设备或者特定应用中,因为存储空间/内存空间的关系,或者因为引用使用的语言的版本关系,并不希望引用Amazon Bedrock的SDK,仅希望以HTTP协议Post的方式进行模型调用。此时,使用AWS传统AKSK认证机制还需要SignV4签名等算法,实现完成功能的代码量也较大。如果是原来基于OpenAI开发的代码,为了适配AKSK认证或者引入Bedrock SDK,也有相当的工作量。

以前为解决这些问题,可以部署Bedrock Access Gateway,提供单一API Key接口规范的Proxy。

部署Proxy意味着额外的性能开销、管理成本、安全等问题。为了简化以上问题,2025年Bedrock正式推出了单一API Key机制。下面介绍这一功能。

二、获取API Key
Bedrock上创建API Key的方法非常简单,首先进入Bedrock服务,切换到要使用的Region,例如美西2(us-west-2)。

点击左侧菜单中的API keys,点击右侧默认的Short-term API keys,点击生成按钮。如下截图。

在这里插入图片描述

立刻获得了12个小时有效期的API Key。这里提供两个复制到剪贴板的功能,一个是只复制Key本身,下边那个按钮是把设置环境变量的命令一起复制了。以MacOS和Linux为例,复制下边那个更方便,点击复制按钮。如下截图。
在这里插入图片描述

注意:短期Key的有效期仅12小时,适合临时开发、测试等。并且API Key只显示一次,一旦退出了窗口,就不再显示了。(当然可以在创建新的)

如果希望创建长期有效的Key,则切换标签页到Long-term API Key的页面,然后选择有效期。例如这里选择365 days有效期一年,点击生成按钮。如下截图。
在这里插入图片描述

生成完毕!请注意:API Key只显示一次,一旦退出了窗口,就不再显示了。如果希望长期保存,则可以点击右下角的Download API key按钮,会将现在生成的API Key通过浏览器下载到本机。如下截图。
在这里插入图片描述

至此生成Key完成,可以开始在代码中使用了。

三、在OpenAI兼容代码中使用Bedrock API Key(以Bedrock上的gpt-oss-120b为例)
注意:目前Bedrock支持OpenAI规范的chat completion方法,参考这里。截止2025年9月,还不兼容openai的sdk的response方法。

2025年起Amazon Bedrock上也提供了OpenAI模型,首批开放的模型包括gpt-oss-120b和gpt-oss-20b等。在代码中要设置正确的model_id参数,可通过如下网址查询,在点击进入后页面搜索框内输入OpenAI,即可看到。

在运行代码的系统上设置环境变量配置密钥。替换${api-key}为实际密钥。

export OPENAI_API_KEY=${api-key}

如果不希望设置环境变量,那么就需要在密码中hard-code方式写入密钥,替换代码中的$AWS_BEARER_TOKEN_BEDROCK为实际API。这是不推荐的。

from openai import OpenAI

client = OpenAI(
base_url=“https://bedrock-runtime.us-west-2.amazonaws.com/openai/v1”,
# api_key=“$AWS_BEARER_TOKEN_BEDROCK” # 这里不推荐hard-code方式,最好是设置OS环境变量
)

completion = client.chat.completions.create(
model=“openai.gpt-oss-120b-1:0”,
messages=[
{
“role”: “developer”,
“content”: “You are a helpful assistant.”
},
{
“role”: “user”,
“content”: “Hello!”
}
]
)

print(completion.choices[0].message)

在以上代码中,指定Region的方式通过设置Endpoint入口来实现。例如base_url指向了us-west-2区域。如果希望更换其他区域,请提前确认在该区域的模型可用性。另外,2025年Amazon Bedrock上也提供了OpenAI模型,因此model参数填写为Bedrock上的OpenAI模型的ID即可。

可看到调用成功。

ChatCompletionMessage(content=‘The user says “Hello!” Just a greeting. Respond politely.Hello! How can I help you today?’, refusal=None, role=‘assistant’, annotations=None, audio=None, function_call=None, tool_calls=None)

四、构建HTTP请求使用Bedrock API Key访问多种模型
模型ID可通过如下网址查询,在点击进入后页面搜索框内输入想要使用的模型供应商,查看其可用Region和ID。

https://docs.aws.amazon.com/bedrock/latest/userguide/models-supported.html

查询各AWS Region对应的Bedrock Runtime API的Endpoint,可参考如下网址。(查看Amazon Bedrock runtime APIs的地址)

https://docs.aws.amazon.com/general/latest/gr/bedrock.html#bedrock_region

以下两个代码例子,都需要在运行代码的系统上设置环境变量配置密钥,将以下命令中的${api-key}为实际密钥。如果不设置环境变量,就需要在代码中硬编码API Key,这是不推荐的方式。

export AWS_BEARER_TOKEN_BEDROCK=${api-key}

1、Python语言使用requests库构建http请求(以Bedrock上的Deepseek V3.1为例)
如果运行环境有基础python语言,那么使用Python的requests库发起http请求是轻量级、快速调用、无须引用完整boto3/bedrock库的方法之一。

安装依赖性包:

pip install requests
复制
import requests
import os

url = “https://bedrock-runtime.us-west-2.amazonaws.com/model/deepseek.v3-v1:0/converse”

api_key = os.environ.get(‘AWS_BEARER_TOKEN_BEDROCK’)

payload = {
“messages”: [
{
“role”: “user”,
“content”: [{“text”: “你是什么模型,你有内置的tool吗”}]
}
]
}

headers = {
“Content-Type”: “application/json”,
“Authorization”: "Bearer " + api_key
}

response = requests.request(“POST”, url, json=payload, headers=headers)

print(response.text)

2、Curl等shell工具请求或者其他语言构建HTTP请求的方式(以Bedrock上的Qwen3为例)
curl -X POST “https://bedrock-runtime.us-west-2.amazonaws.com/model/qwen.qwen3-235b-a22b-2507-v1:0/converse”
-H “Content-Type: application/json”
-H “Authorization: Bearer $AWS_BEARER_TOKEN_BEDROCK”
-d ‘{
“messages”: [
{
“role”: “user”,
“content”: [{“text”: “你是什么模型,你有内置的tool吗”}]
}
]
}’

返回信息如下:

{“metrics”:{“latencyMs”:3392},“output”:{“message”:{“content”:[{“text”:"
我是Qwen3,是阿里云推出的一种超大规模语言模型。
我具备强大的语言理解和生成能力,能够回答问题、创作文字,如写故事、公文、邮件、剧本等,
还能进行逻辑推理、编程,甚至表达观点和玩游戏。\n\n
关于内置工具(tool)方面,虽然我没有传统意义上的“内置工具”,但我可以通过API调用等方式与外部工具或服务集成,
实现更复杂的功能。此外,我本身支持多种功能,例如:\n\n-
代码解释器
可以执行Python代码,帮助你完成数据处理、数学计算等任务。\n-
多语言支持:支持包括中文、英文、法语、西班牙语等100多种语言。\n-
对话理解能力:经过多轮迭代和优化,我的对话理解能力得到了显著提高,能准确理解与用户交互的对话历史,为用户提供更自然、流畅的对话体验。\n\n
如果你有任何具体需求或问题,欢迎随时告诉我!我会尽力为你提供帮助。
"}],“role”:“assistant”}},“stopReason”:“end_turn”,“usage”:{“inputTokens”:18,“outputTokens”:204,“serverToolUsage”:{},“totalTokens”:222}}
复制
可看到模型调用正常。

五、Bedrock API在IAM中的体现以及通过AWS IAM控制台创建Bedrock Key
在Bedrock服务的控制台上创建API Key后,每个API Key后对应着IAM User里的一个用户,Bedrock自动为每一个API Key都创建出来一个独立的IAM User,其命名规则是BedrockAPIKey-xxxx这样的规则。这些用户可以通过IAM控制台查看。如下截图。

在这里插入图片描述

通过Bedrock控制台创建API Key时候,生成的IAM User是随机生成的,其命名规则无法修改。如果希望自己定义IAM User的命名规则,那么不能从Bedrock控制台创建API Key,需要从IAM控制台来常见API Key。

例如先创建好一个IAM User,命名规则自行指定,然后通过Security Credential标签页,在其中可找到Bedrock API Key,即可创建API Key。如下截图。

在这里插入图片描述

在Security Credential标签页中,向下滚动页面,即可看到API Key的界面。如下截图。
在这里插入图片描述

六、参考文档
Use an Amazon Bedrock API key

https://docs.aws.amazon.com/bedrock/latest/userguide/api-keys-use.html

Invoke a model with the OpenAI Chat Completions API

https://docs.aws.amazon.com/bedrock/latest/userguide/inference-chat-completions.html

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐