🔩
Managing Environment Variables
Tips💡
Edge Functionsのチュートリアルをやっていた時に大文字で書かれているコードを修正して使っている場面があった???
環境変数なんでしょうけど気になって調べてみた。4種類あるようだ🤔
以下のコードで修正して使うことがあった
import { createClient } from "npm:@supabase/supabase-js@2.39.3"
console.log("Hello from Functions!")
const supabase = createClient(
Deno.env.get('SUPABASE_URL') ?? '',
Deno.env.get('SUPABASE_ANON_KEY') ?? '',
);
Deno.serve(async (req) => {
const {data: name, error} = await supabase.from("test_t_functions").select("name")
.limit(1).single()
if(error) console.log(error)
const data = {
message: `Hello ${name?.name}!`,
}
return new Response(
JSON.stringify(data),
{ headers: { "Content-Type": "application/json" } },
)
})
Edge Functions は、デフォルトで次のシークレットにアクセスできます。
種類 | 内容 |
---|---|
SUPABASE_URL | Supabase プロジェクトの API ゲートウェイ。 |
SUPABASE_ANON_KEY | Supabase API の anon キー。 行レベル セキュリティが有効になっている場合、これはブラウザで安全に使用できます。 |
SUPABASE_SERVICE_ROLE_KEY | Supabase API の service_role キー。 これは Edge Functions では安全に使用できますが、ブラウザーでは決して使用しないでください。 このキーは行レベルのセキュリティをバイパスします。 |
SUPABASE_DB_URL | PostgreSQL データベースの URL。 これを使用してデータベースに直接接続できます。 |
ローカルシークレット#
環境変数は次の 2 つの方法でロードできます。
supabase/functions/.env に配置された .env ファイルを介して、supabase の起動時に自動的にロードされます。
--env-file オプションを使用して、supabase 関数を提供します。例: supabase 関数は --env-file ./path/to/.env-file を提供します。
シークレットを保存するためのローカル ファイルを作成しましょう。その中にシークレット MY_NAME を保存できます。
echo "MY_NAME=Yoda" >> ./supabase/.env.local
これにより、ローカル開発シークレットを保存するための新しいファイル ./supabase/.env.local が作成されます。
.env ファイルを Git にチェックインしないでください。
これで、新しい .env.local ファイルを使用して関数をローカルで呼び出すことができます。
supabase functions serve --env-file ./supabase/.env.local
関数が開始すると、ターミナルに「Yoda」という名前が出力されるはずです。
今回はここまでにしておこう。上の部分しか試していないので。
まとめ
シークレットなるものにアクセスして、安全にSupabaseとやりとりをする仕組みを提供してくれているようです。この設定ができていないと、JWT認証のエラーが出てくるみたい???
Discussion