仍在将 API Key 生硬编码于 AI Agent 的配置文件之中吗?密钥出现泄露情况,轮换面临困难,权限难以实施有效控制,这些问题完全能够令任何一位开发者为之头疼不已。当下,借助亚马逊云科技的 IAM 角色来为 AI Agent 开展身份认证,可彻底地与这种陈旧且具备高风险的做法说再见。
凭借传统的 API Key 认证方式,存在着诸多安全方面的隐患,用明文进行储存的密钥,极其容易在代码库或者配置文件里出现泄露的情况,一旦被怀有恶意的人获取到,攻击者便能够滥用你的账户资源,进而造成经济方面的损失,除此之外,API Key 一般具有长期有效的特性,按时进行轮换的操作既繁杂又容易被遗忘,这无疑增加了管理的负担,对于那些需要调用多个大模型的应用而言,管理多组 API Key 的情况更是复杂。
ssh -i "your-key.pem" ubuntu@
# 装 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 --version
IAM角色认证,为云上的资源,给出了一种相较更为安全的访问途径。它的核心要点在于,给计算资源,像是EC2实例,赋予一个IAM角色。当实例上面的应用程序,有需求去访问别的云服务,比如Bedrock时,AWS SDK会自行向内部服务,申请获得一个临时的安全凭证。此凭证的有效期限特别短,默认情况下,每一小时就会进行一次轮换,极大程度地降低了凭证泄露所带来的风险。
{
"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
}
]
}
}
}
}
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'])
对那些追求效率的开发者而言,Lightsail给出了一键部署的方案。亚马逊云科技官方把OpenClaw蓝图上架了(Blueprint ID: openclaw_ls_1_0),且预装了运行所需要的环境。你只要登录Lightsail控制台,挑选区域(像us-east-1),在“蓝图”里选择OpenClaw,接着依据需求选择实例规格就能完成部署,整个进程不需要手动输入任何API Key。
import boto3
sts = boto3.client('sts', region_name='us-east-1')
print(sts.get_caller_identity())
# 应该看到 Account ID 和 Role ARN,不是 User ARN
能让你对每个环节拥有更深入理解的是手动部署,首先要在IAM控制台创建一回角色,选“AWS服务”作为信任实体,把使用场景选定成EC2,接着给角色加入权限,像快速验证时能够选择AmazonBedrockFullAccess,在创建好角色之后,把它关联到你的EC2实例,如此一来,实例里的OpenClaw应用就能够借助SDK自动得到访问Bedrock的权限。
部署结束之后,要针对OpenClaw的配置文件作出改造。去编辑~/.openclaw/openclaw.json这个文件,在models配置部分开展合并。重要的是在认证方式里指定"auth":"aws-sdk",这会指示应用运用IAM角色来进行认证。而模型ID能够采用带有us.前缀的Inference Profile,它可以启用跨区域自动路由,提高模型调用的稳定性以及容错能力。
拿OpenClaw于亚马逊云科技那儿的部署当作例子,从Lightsail进行一键创建开始,再到EC2展开精细配置,整个流程全然绕开了API Key。不管是在x86实例上,还是在Graviton ARM实例上,Node.js应用都能够正常运行。这样的模式不但提升了安全性,还借由Bedrock的统一接口,使得你于切换Claude、Nova、DeepSeek等模型之际,仅仅只需修改一个参数。
你有没有曾经由于 API 密钥泄露而承受过代价呢?在评论区域分享你的经历,点赞并且转发这篇文章,使得更多开发者摆脱 API 密钥的困扰。
ssh -i "your-key.pem" ubuntu@