管理密钥(环境变量)
管理密钥和环境变量。
在边缘函数中使用环境变量或其他敏感信息是很常见的需求。您可以通过CLI或仪表板来管理这些密钥。
您可以使用Deno的内置处理器来访问这些密钥:
1..('MY_SECRET_NAME')
默认密钥
边缘函数默认可以访问以下密钥:
SUPABASE_URL
: 您Supabase项目的API网关地址。SUPABASE_ANON_KEY
: Supabase API的anon
密钥。当启用行级安全时,可在浏览器中安全使用。SUPABASE_SERVICE_ROLE_KEY
: Supabase API的service_role
密钥。可在边缘函数中安全使用,但绝对不能在浏览器中使用。该密钥会绕过行级安全。SUPABASE_DB_URL
: Postgres数据库的连接URL。您可以用它直接连接数据库。
本地密钥管理
您可以通过两种方式加载环境变量:
- 通过放置在
supabase/functions/.env
的.env
文件,该文件会在supabase start
时自动加载 - 通过
supabase functions serve
的--env-file
选项,例如:supabase functions serve --env-file ./path/to/.env-file
让我们创建一个本地文件来存储密钥,并在其中保存一个名为 MY_NAME
的密钥:
1echo "MY_NAME=Yoda" >> ./supabase/.env.local
这将创建一个新文件 ./supabase/.env.local
用于存储本地开发环境密钥。
切勿将您的 .env 文件提交到 Git 仓库!
现在让我们在函数中访问这个环境变量 MY_NAME
。在函数任意位置添加这行代码:
1console.log(Deno.env.get('MY_NAME'))
现在我们可以通过指定新的 .env.local
文件来本地调用函数:
1supabase functions serve --env-file ./supabase/.env.local
当函数启动时,您应该会在终端看到输出名称"Yoda"。
生产环境密钥
您还需要为生产环境的边缘函数设置密钥。可以通过仪表板或 CLI 完成此操作。
使用仪表板
- 访问仪表板中的边缘函数密钥管理页面
- 添加密钥名称和值,然后点击保存
- 注意您可以一次性粘贴多个密钥
使用 CLI
让我们创建一个 .env
文件来帮助我们将密钥部署到生产环境。这里我们直接使用与本地相同的密钥:
1cp ./supabase/.env.local ./supabase/.env
这将创建一个新文件 ./supabase/.env
用于存储您的生产环境密钥。
切勿将您的 .env
文件提交到 Git!.env
文件仅用于帮助将密钥部署到生产环境,请不要将其提交到代码仓库。
让我们使用 supabase secrets set
命令将 .env
文件中的所有密钥推送到远程项目:
12345supabase secrets set --env-file ./supabase/.env# 您也可以单独设置每个密钥:supabase secrets set MY_NAME=Chewbacca
设置密钥后无需重新部署。
要查看所有已设置的远程密钥,请使用 supabase secrets list
命令:
1supabase secrets list