秘密和环境变量
如何将 Stripe 键或任何设置传递给函数而不将其写入代码中,以及平台实际保护的内容。
6分钟 读取·级别 中间·修改于 2026年10月12日
该英文文本是根据法文原文自动生成的,尚未经过审查。
该页面已自动翻译。英文版具有权威性。
#
写
1.设置变量
每个变量都属于一个函数。设置变量需要 service_role 键。
PUT /env 用您发送的列表替换 整个变量集。 aura secrets set 和 unset 读取当前值,更改您命名的键并将结果写回。
重新部署会保守您的秘密
使用 aura functions deploy 部署新代码不会影响变量。
#
阅读
2.在函数中读取
每次调用时都会读取变量:更改适用于下一次调用。
#
注入
3. 平台添加的变量
| 变量 | 价值 |
|---|---|
AURABASE_PROJECT_ID | 项目 ID。始终设置。 |
AURABASE_FUNCTION_NAME | 函数的名称。始终设置。 |
AURABASE_URL | 平台 URL,由平台运营商定义。 |
AURABASE_ANON_KEY | 平台密钥(由操作员定义)。 |
您不能覆盖这些名称。主机的环境对您的函数不可见:在实际运行中 Deno.env.get('PATH') 返回 undefined。
要从函数调用您自己的项目,请将 service_role 密钥存储为该函数的秘密,并将其发送到 HTTP 请求的 apikey 标头中。切勿转发用户的密钥,也切勿将 service_role 密钥放入浏览器中。
#
保护
4.什么是加密的
| 路径 | 静态时加密 |
|---|---|
PUT /v1/functions/{name}/env | 是的,如果服务配置了加密密钥(FN_ENV_ENCRYPTION_KEY、 AES-256-GCM)。如果没有它,值将按发送时的形式存储,并且服务会在启动时记录警告。 |
aura secrets set / unset | 否:CLI 通过 PATCH写入,它存储发送的值。 |
部署请求中的 env_vars | 不,同样的原因。 |
在我们的本地测试中,函数定义返回由 PUT /env 写入的值,未更改,因为没有配置键。
在依赖加密之前询问您的平台运营商
机密是否加密取决于部署,并且只有 PUT /env 路径可以对其进行加密。 CLI 路径按给定方式存储它们。在 CLI 使用 PUT /env之前,请使用上面的 HTTP 调用来获取生产密钥。
读回秘密也受到限制。 GET /v1/functions/{name}/env 返回解密的值,并且与 GET /v1/functions/{name}一样,需要 service_role 密钥。公钥接收 403。
#
规则
5. 遵守规则
- 切勿在
index.ts中硬编码秘密。函数的源代码存储在您的项目中并返回给任何service_role调用者。 - 切勿记录秘密。
console.log的输出最终出现在运行时的日志中。 - 每个函数使用一个变量,并使用最窄的可用密钥(来自提供商的受限密钥,而不是主密钥)。
- 通过设置新值并且不重新部署任何内容来轮换密钥:下一个调用将使用它。
最后更新· 2026年10月12日