不想再管 API Key 了?用 IAM 角色给 AI Agent 做身份认证的完整方案
配置文件里写 API Key,这事我已经受够了。Key 泄露、过期轮换、多模型多 Key——每一个都是运维负担。最近把 OpenClaw(开源 AI 助手框架,社区叫它"龙虾"🦞)部署到亚马逊云科技之后,终于甩掉了 API Key。本文记录两种部署路径和零密钥认证的配置细节。
先说痛点:API Key 到底哪里不好
如果你部署过任何需要调用大模型的应用,大概率经历过这些:
- 明文 Key 写在
.env或 JSON 里,一不小心提交到 Git 仓库(别问我怎么知道的) - Key 过期了服务静悄悄挂掉,排查半天才发现不是代码 bug
- 团队协作时 Key 在聊天记录里传来传去,安全审计形同虚设
- 不同模型供应商有不同的 Key 格式和管理方式,心智负担拉满
Amazon Bedrock 配合 IAM 角色认证可以把这些问题全部干掉。原理很简单:EC2 实例通过绑定的 IAM 角色自动获取临时凭证,每小时轮换,无需在配置文件中写入任何密钥。每次 API 调用都有 CloudTrail 审计日志。而且 Bedrock 统一接口支持 Claude、Nova、DeepSeek 等模型,切换只改一个参数。
下面分两条路径讲怎么做。
路径一:Lightsail 蓝图,开箱即用
Amazon Lightsail 是亚马逊云科技的轻量云服务器。官方已经上架了 OpenClaw 蓝图(Blueprint ID: openclaw_ls_1_0),预装好了运行环境。
操作流程
没有亚马逊云科技账号?免费注册入口,Lightsail 新用户有免费试用期。
- 进入 Lightsail 控制台 → Create instance
- 区域选
us-east-1,平台选 Linux/Unix,蓝图选 OpenClaw - 实例规格按需选:
| 规格 | vCPU | 内存 | SSD | 适合 |
|---|---|---|---|---|
| small_3_0 | 2 | 2GB | 60GB | 自己玩玩 |
| medium_3_0 | 2 | 4GB | 80GB | 日常使用推荐 |
| large_3_0 | 2 | 8GB | 160GB | 多人多渠道 |
- 创建实例,等 2-3 分钟
- 进实例 → Connect → Connect using SSH,记下控制台 URL 和令牌
- 浏览器打开 URL,粘贴令牌,SSH 终端中输入
y确认、a批准配对 - 复制 Lightsail 入门页提供的配置脚本,到 CloudShell 中运行——脚本自动创建 IAM 角色并授权 Bedrock
搞定。全程没有输入过 API Key。
📖 官方详细步骤:推出 OpenClaw on Amazon Lightsail
路径二:EC2 手动部署,掌控每一层
想用 Graviton ARM 实例省钱,或者就是想搞清楚每个组件在干嘛?手动来。
前置条件
- 亚马逊云科技账号
- 在 Bedrock 控制台 的 Model access 页面启用 Nova 系列模型
Step 1:创建 IAM 角色
这是零密钥方案的核心——用角色替代 Key。
- IAM 控制台 → Roles → Create role
- Trusted entity 选 服务 → Use case 选 EC2 → Next
- 搜索
AmazonBedrockFullAccess,勾上 → Next - Role name 填
OpenClaw→ Create role
⚠️ AmazonBedrockFullAccess 权限较大,适合快速验证。正式使用建议自定义策略,按需授权。Step 2:启动 EC2
进入 EC2 控制台 → Launch instances:
| 配置 | 值 | 备注 |
|---|---|---|
| AMI | Ubuntu Server 24.04 LTS (ARM) | ami-0f1b9964277dbd54e(us-east-1) |
| 实例类型 | t4g.medium | 2 vCPU, 4GB RAM, Graviton |
| Key pair | 你的 SSH 密钥 | 没有就新建 |
| 存储 | 20GB gp3 | 足够 |
为什么选 ARM? 同样 2C4G 配置,t4g.medium(ARM)比 t3.medium(x86)便宜约 20%。OpenClaw 是 Node.js 应用,ARM 上跑完全没问题。
启动后:选中实例 → Actions → Security → Modify IAM role → 选 OpenClaw。
Step 3:安装 OpenClaw
ssh -i "your-key.pem" ubuntu@<EC2 公网 IP>
# 装 nvm + Node.js
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.nvm/nvm.sh
nvm install 24
node -v # 确认 v24.x.x
# 装 OpenClaw
npm install -g openclaw@latest
openclaw --versionStep 4:初始化配置
openclaw onboard --install-daemon配置向导关键选项:
| 项 | 选 |
|---|---|
| Mode | Manual |
| Gateway | Local gateway |
| Model provider | amazon-bedrock |
| Default model | us.amazon.nova-2-lite-v1:0 |
| Gateway auth | token(设个密码) |
| Channels / Skills | 先跳过 |
Step 5:配置模型
编辑 ~/.openclaw/openclaw.json,在 models 部分合并(不要覆盖整个文件):
{
"models": {
"providers": {
"amazon-bedrock": {
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
"api": "bedrock-converse-stream",
"auth": "aws-sdk",
"models": [
{
"id": "us.amazon.nova-2-lite-v1:0",
"name": "Nova 2 Lite(日常对话)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0.06, "output": 0.24 },
"contextWindow": 300000,
"maxTokens": 8192
},
{
"id": "us.amazon.nova-pro-v1:0",
"name": "Nova Pro(复杂推理)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0.80, "output": 3.20 },
"contextWindow": 300000,
"maxTokens": 8192
}
]
}
}
}
}三个要点:
"auth": "aws-sdk"→ 用 IAM 角色认证,不写 Keyus.前缀模型 ID → Inference Profile,启用跨区域自动路由(CRIS),某区域繁忙时自动切到其他区域- 两个模型 → 简单任务用 Nova 2 Lite,复杂任务用 Nova Pro,按需切换
Step 6:启动验证
openclaw gateway restart
openclaw status浏览器打开 http://<EC2 IP>:18789/?token=<你的密码>,能进控制台就说明成功了。
验证 Bedrock 连通性
部署完想确认模型调用正常?在实例上跑这段:
import boto3, json
# EC2 上不需要传 credentials——IAM Role 自动生效
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
response = bedrock.invoke_model(
modelId='us.amazon.nova-2-lite-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
"messages": [{"role": "user", "content": [{"text": "你好,介绍一下你自己"}]}],
"inferenceConfig": {"maxTokens": 200}
})
)
result = json.loads(response['body'].read())
print(result['output']['message']['content'][0]['text'])验证 IAM 角色绑定:
import boto3
sts = boto3.client('sts', region_name='us-east-1')
print(sts.get_caller_identity())
# 应该看到 Account ID 和 Role ARN,不是 User ARN两种方案怎么选?
| Lightsail 蓝图 | EC2 手动 | |
|---|---|---|
| 上手时间 | ~5 分钟 | ~30 分钟 |
| 灵活度 | 固定蓝图配置 | 完全自定义 |
| 适合 | 快速体验、不想折腾 | 想用 ARM 省钱、想控制每一层 |
| 零密钥 | ✅ | ✅ |
两种方案都走 IAM 角色认证,配置文件里都不会出现 API Key。安全性一样,只是入门门槛不同。
后续
部署搞定只是起点。这个系列后面还会聊:
- 在 Mac 云实例上跑 iMessage 自动化
- 让 AI 自己开服务器部署新实例
- 多 Agent 多角色在同一个实例里协作
- 从本地迁移到云端的踩坑记录
参考资料
- OpenClaw GitHub | 官方文档
- 推出 OpenClaw on Amazon Lightsail
- 把 OpenClaw 部署到云上:一个值得认真考虑的选择
- Amazon Bedrock | Amazon Lightsail | Amazon EC2 Graviton
- IAM 角色文档
本文是「OpenClaw 云端实战」系列第 1 篇。
踩过 API Key 坑的朋友举个手?欢迎评论区分享你的经历,有问题也直接留言,看到就回 👋
OpenClaw 部署教程:Bedrock + IAM 零密钥方案,告别 API Key(附 Lightsail 一键安装)
OpenClaw(社区昵称"龙虾"🦞)是 2026 年 GitHub 上增长速度极快的开源 AI 助手框架,能 24/7 在线帮你处理消息、执行命令、管理文件。本文教你用亚马逊云科技的两种方式部署它——关键是:不需要任何 API Key。
为什么要告别 API Key?
翻一翻现有的 OpenClaw 部署教程,几乎每篇都让你把第三方大模型的 API Key 明文写进配置文件。这有几个问题:
- 安全隐患:API Key 就像密码,写在文件里容易泄露。你电脑上跑的其他软件、误上传的 Git 仓库、甚至队友帮你调试时看到——任何一个环节都可能出事
- 管理麻烦:Key 过期了要手动换、不同模型有不同的 Key、额度用完了要重新申请
- 审计困难:谁调了多少次 API?用了哪些模型?没有日志可查
亚马逊云科技的 Amazon Bedrock 搭配 IAM 角色认证,可以做到:
- ✅ 零密钥:EC2 实例通过 IAM 角色自动获取临时凭证,配置文件里不需要写任何密钥
- ✅ 自动轮换:临时凭证每小时自动刷新,不存在泄露风险
- ✅ 完整审计:每次 API 调用都有 CloudTrail 日志,谁调的、什么时候、用了什么模型
- ✅ 多模型切换:Bedrock 统一接口支持 Claude、Nova、DeepSeek 等多个模型,改一个参数就能换
下面是两种部署方式。
方案 A:Lightsail 一键部署(5 分钟上手)
Amazon Lightsail 是亚马逊云科技的轻量级云服务器,固定月费。官方已经上架了 OpenClaw 蓝图(Blueprint ID: openclaw_ls_1_0),开箱即用。
第 1 步:创建实例
还没有亚马逊云科技账号?点此免费注册,Lightsail 新用户前 3 个月可免费试用部分套餐。
- 打开 Lightsail 控制台
- 点击 Create instance
- 选择区域(推荐
us-east-1) - 平台选 Linux/Unix
- 蓝图(Blueprint,即预装好软件的系统模板)选 OpenClaw
- 选择实例规格:
| 规格 | vCPU | 内存 | SSD | 月费 | 适合场景 |
|---|---|---|---|---|---|
| small_3_0 | 2 | 2GB | 60GB | $12 | 个人体验 |
| medium_3_0 | 2 | 4GB | 80GB | $24 | 推荐,日常使用 |
| large_3_0 | 2 | 8GB | 160GB | $44 | 多人/多渠道 |
💡 个人体验 $12/月够用,多人用建议 $24 起。仅 IPv6 的版本更便宜($10/$20/$40),如果你不需要公网 IPv4。
- 点击 Create instance,等 2-3 分钟
第 2 步:配对浏览器
- 在 Lightsail 控制台进入实例 → Connect → Connect using SSH
- 终端显示的控制台 URL 和访问令牌记下来
- 浏览器新标签打开 URL,粘贴令牌
- SSH 终端中输入
y确认,a批准配对
第 3 步:启用 Bedrock
- 复制 Lightsail 入门页提供的配置脚本
- 到 CloudShell 中运行
- 脚本自动创建 IAM 角色并授权 Bedrock
完成!回到 OpenClaw 控制台就能开始聊天了。全程没有输入过任何 API Key。
📖 详细步骤参考官方博客:推出 OpenClaw on Amazon Lightsail
方案 B:EC2 手动部署(完全掌控每一步)
想深入理解每个组件,或者想用 Graviton ARM 实例省钱?手动部署更灵活。
前提
- 一个亚马逊云科技账号
- 在 Bedrock 控制台 的 Model access 中启用了 Nova 系列模型
第 1 步:创建 IAM 角色(关键的安全步骤)
这一步用 IAM 角色替代 API Key,是整个方案的核心。
- 进入 IAM 控制台 → Roles → Create role
- Trusted entity type 选 服务,Use case 选 EC2,Next
- 搜索
AmazonBedrockFullAccess,勾选,Next - Role name 填
OpenClaw,Create role
⚠️ AmazonBedrockFullAccess 适合快速上手。生产环境建议创建自定义策略,只授予你需要的模型和操作权限。第 2 步:启动 EC2 实例
进入 EC2 控制台 → Launch instances:
| 配置项 | 值 | 说明 |
|---|---|---|
| AMI | Ubuntu Server 24.04 LTS (ARM) | AMI ID: ami-0f1b9964277dbd54e(us-east-1) |
| 实例类型 | t4g.medium | 2 vCPU, 4GB RAM, Graviton ARM |
| Key pair | 你的 SSH 密钥 | 没有就 Create new |
| 存储 | 20GB gp3 | 够用 |
为什么选 t4g.medium(ARM/Graviton)?
| 类型 | 架构 | 配置 | 小时价 | 月费(估算) |
|---|---|---|---|---|
| t4g.medium | ARM | 2C 4GB | $0.0336 | ~$24 |
| t3.medium | x86 | 2C 4GB | $0.0416 | ~$30 |
同配置 ARM 比 x86 便宜约 20%。OpenClaw 是 Node.js 应用,在 ARM 上运行完全正常(本文就是在 ARM 实例上写的)。
启动后,选中实例 → Actions → Security → Modify IAM role → 选择 OpenClaw 角色。
第 3 步:SSH 登录 & 安装
ssh -i "your-key.pem" ubuntu@<EC2 公网 IP>安装 Node.js 和 OpenClaw:
# 安装 nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash
source ~/.nvm/nvm.sh
# 安装 Node.js
nvm install 24
node -v # v24.x.x
# 安装 OpenClaw
npm install -g openclaw@latest
openclaw --version第 4 步:配置向导
openclaw onboard --install-daemon关键选项:
| 配置项 | 选这个 |
|---|---|
| Mode | Manual |
| Gateway | Local gateway |
| Model provider | amazon-bedrock |
| Default model | us.amazon.nova-2-lite-v1:0 |
| Gateway auth | token(设一个密码) |
| Channels / Skills | 先 Skip |
第 5 步:配置 Bedrock 模型
编辑 ~/.openclaw/openclaw.json,在 models 部分加入(合并,不要覆盖整个文件):
{
"models": {
"providers": {
"amazon-bedrock": {
"baseUrl": "https://bedrock-runtime.us-east-1.amazonaws.com",
"api": "bedrock-converse-stream",
"auth": "aws-sdk",
"models": [
{
"id": "us.amazon.nova-2-lite-v1:0",
"name": "Nova 2 Lite(日常对话,高性价比)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0.06, "output": 0.24 },
"contextWindow": 300000,
"maxTokens": 8192
},
{
"id": "us.amazon.nova-pro-v1:0",
"name": "Nova Pro(复杂推理)",
"reasoning": false,
"input": ["text", "image"],
"cost": { "input": 0.80, "output": 3.20 },
"contextWindow": 300000,
"maxTokens": 8192
}
]
}
}
}
}三个关键点:
"auth": "aws-sdk"—— 使用 IAM 角色认证,不需要写 Keyus.前缀的模型 ID —— 这是 Inference Profile,启用了跨区域自动路由(CRIS)。某个区域繁忙时请求会自动切到其他区域,避免排队- 两个模型并存 —— 简单任务用 Nova 2 Lite($0.06/百万 token),复杂任务用 Nova Pro($0.80/百万 token),按需切换
第 6 步:启动
openclaw gateway restart
openclaw status浏览器打开 http://<EC2 IP>:18789/?token=<你的密码> 即可使用。
验证:确认 Bedrock 连通
部署完想确认 Bedrock 通了?在实例上跑这段 Python(已实测通过):
import boto3, json
# 在 EC2 上不需要传 credentials,IAM Role 自动生效
bedrock = boto3.client('bedrock-runtime', region_name='us-east-1')
response = bedrock.invoke_model(
modelId='us.amazon.nova-2-lite-v1:0',
contentType='application/json',
accept='application/json',
body=json.dumps({
"messages": [{"role": "user", "content": [{"text": "你好,用一句话介绍你自己"}]}],
"inferenceConfig": {"maxTokens": 200}
})
)
result = json.loads(response['body'].read())
print(result['output']['message']['content'][0]['text'])
# 输出: 我是一个人工智能助手,我可以帮助你回答问题、提供信息、生成文本,并支持多轮对话。如果你想验证 IAM 角色是否正确绑定:
import boto3
sts = boto3.client('sts', region_name='us-east-1')
print(sts.get_caller_identity())
# 应该看到你的 Account ID 和 Role ARN,而不是 User ARN下一步
部署完了只是起点。后续文章会讲:
- 接入苹果生态:在 Mac 云实例上跑 OpenClaw + iMessage 自动化
- AI 自主运维:让 OpenClaw 自己开服务器、部署新实例
- 多 Agent 架构:一个实例跑多个 AI 助手,按群/按人隔离
- 成本压到极限:Nova Lite + Graviton + 混合路由策略
关注亚马逊云开发者账号获取更新。
参考链接
- OpenClaw GitHub | 官方文档
- 推出 OpenClaw on Amazon Lightsail
- 把 OpenClaw 部署到云上:一个值得认真考虑的选择
- Amazon Bedrock | Amazon Lightsail | Amazon EC2 Graviton
- IAM 角色文档
本文是「OpenClaw 云上实战指南」系列第 1 篇。
作者:亚马逊云开发者 | 所有代码均在 us-east-1 区域实测通过
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。