シークレットと環境変数
コードに記述せずに Stripe キーや設定を関数に渡す方法と、プラットフォームが実際に保護するもの。
1. 変数を設定する
すべての変数は 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の出力は、ランタイムのログに記録されます。 - 関数ごとに 1 つの変数を使用し、機能する最も狭いキー (マスター キーではなく、プロバイダーからの制限されたキー) を使用します。
- 新しい値を設定し、何も再デプロイせずにキーをローテーションします。次の呼び出しでその値が使用されます。