如何在Altostra ENV中加密存储API Key等环境变量?
在Altostra项目中加密Lambda的API Token环境变量
方法一:用Altostra内置加密(最省心)
- 打开你的Altostra项目,找到对应的Lambda函数组件
- 进入Lambda的配置面板,找到「环境变量」区域
- 给需要加密的API Token环境变量开启「加密」开关(对应你截图里的配置界面选项)
- 选择加密用的KMS密钥:可以选AWS默认的Lambda服务密钥,也可以用你自己创建的自定义KMS密钥
- 输入明文API Token,部署时Altostra会自动用选定的KMS密钥加密存储
- 部署完成后,Lambda运行时会自动解密,代码里直接用
process.env.YOUR_API_TOKEN就能拿到明文
方法二:手动配置KMS加密(适合精细权限控制)
- 先在AWS控制台创建一个自定义KMS密钥
- 在Altostra的Lambda组件配置里,给Lambda的执行角色添加权限,允许调用KMS的
Decrypt操作 - 用AWS CLI提前加密API Token:
aws kms encrypt --key-id 你的密钥ID --plaintext "你的API Token" --query CiphertextBlob --output text - 把加密后的base64字符串作为环境变量值填入Lambda配置
- 在Lambda代码里加解密逻辑(以Node.js为例):
const { KMSClient, DecryptCommand } = require("@aws-sdk/client-kms"); const kmsClient = new KMSClient({ region: "你的AWS区域" }); async function getApiToken() { const encryptedToken = process.env.ENCRYPTED_API_TOKEN; const params = { CiphertextBlob: Buffer.from(encryptedToken, 'base64') }; const command = new DecryptCommand(params); const res = await kmsClient.send(command); return res.Plaintext.toString('utf-8'); }
注意要点
- 绝对不要把明文API Token提交到代码仓库,Altostra加密后的环境变量不会被存入版本控制
- 用自定义KMS密钥时,必须确保Lambda执行角色有该密钥的解密权限,不然会报错
- 默认KMS密钥不需要手动配权限,但自定义密钥更适合多环境(开发/测试/生产)隔离
内容的提问来源于stack exchange,提问作者Sheifa
相关产品推荐
相关产品推荐

