JavaScript SDK:関数
aura.functionsのすべてのメソッド、そのシグネチャ、必要な役割、およびそれが返すもの。
1. クライアントを取得する
aura.functions は FunctionsServiceです。自分で構築することはほとんどありません。
パッケージ @aurabase/functions は @aurabase/aurabase-jsとともにインストールされます。 @aurabase/coreから独自のクライアントを作成する場合にのみ、単独でインストールしてください。 Node.js 20 以降が必要で、ES モジュールと CommonJS が型宣言とともに同梱されます。
すべてのメソッドは Promise<AuraResponse<T>>を返します。これは、決してスローされないオブジェクト { data, error } です。
| ケース | data | error |
|---|---|---|
| 成功 | 値 | null |
| コンテンツなしの成功 (204、空のボディ) | null | null |
| 失敗 | null | AuraError |
値が必要な場合は、 error ではなく data をテストします。そのとき初めて、 TypeScript は、それが nullではないことを認識します。
| 方法 | 必要な役割 |
|---|---|
invoke | 公開鍵 (anon)、ユーザー、または service_role |
| 他のすべての方法 | service_role (サーバーのみ) |
2. 呼び出す
| オプション | デフォルト | |
|---|---|---|
body | なし | JSON シリアル化可能。 Blob、 ArrayBuffer、型付き配列、 FormData、 URLSearchParams または ReadableStream は、リクエストがなくてもエラー invalid_body を返します。 |
method | 'POST' | 関数が認識するメソッド |
path | '/' | 関数が認識するパス |
headers | なし | 関数に与えられるヘッダー。 authorization、 apikey、 x-request-id 、および x-aura-* はプラットフォームによって破棄されます。 |
timeout | クライアントのデフォルト、30 秒 | ミリ秒。呼び出しをキャンセルし、コード timeoutを返します。 |
signal | なし | あなた自身の AbortSignal。キャンセルされた呼び出しはコード timeoutを返します。 |
responseType | 'json' | data のデコード方法: 解析された値、文字列、Blob または ArrayBuffer |
name は URL 内でエンコードされているため、 /、 ? または # を含む値はその位置を離れることはできません。そのような文字を含む名前は単純に見つかりません。
invoke は、最初に期限切れのユーザー セッションを更新し、ユーザーの JWT があればそれを送信し、呼び出しを再試行しません。
使用方法: 関数を呼び出します。失敗の仕組み: エラー、タイムアウト、および再試行。
3. リストして取得する
どちらも service_role キーが必要です。 get は名前または ID を受け入れます。関数に ID のような名前が付けられている場合は、名前が優先されます。 FunctionDef には、関数のソース コードと変数が含まれているため、公開キーは 403を受け取ります。
関数をデプロイ、更新、削除したり、シークレットを書き込んだりする方法はありません。 HTTP API または CLIを使用します。
4. 仕事
enqueueJobは、functionNameが空またはスペースのみの場合はリクエストなしで{ code: 'bad_request', status: 400 }を返し、それ以外の場合は名前をトリミングします。listJobsはstatus(pending、running、completed、failed、dead) でフィルターし、1 ~ 500 のジョブ (デフォルトでは 50) を返します。- デッド ジョブを再試行する方法はありません。 デッドレター キューを参照してください。
5.クロン
schedule には、UTC で 5 つまたは 6 つのフィールドがあります。 deleteCronJob は名前を受け取り、不明な名前の場合は 404 を返します。 getCronJob または updateCronJobはありません。
6. 種類とエラー
@aurabase/aurabase-js および @aurabase/functionsによってエクスポート:
| エクスポート | それは何ですか |
|---|---|
FunctionsHttpError | 関数 (または管理ルート) がエラーで応答しました。 error.context は、返された本体を保持します。 |
FunctionsRelayError | プラットフォームが失敗しました: ネットワーク (status 0) または 502、 503、 504 がゲートウェイまたはランタイムによって生成されました。 |
isRelayStatus(status) | true ( 0、 502、 503、 504)。 |
FunctionsResponseType | `'json' \ |
どちらのエラー クラスも AuraErrorを拡張しているため、 isAuraError(error) は true です。 AuraError には、 status、 code、 message、 details、 retryAfter、およびゲッター isNotFound、 isUnauthorized、 isForbidden 、 isRateLimitedがあります。
@aurabase/aurabase-jsによってエクスポートされるデータ型:
| タイプ | フィールド |
|---|---|
FunctionDef | id、 project_id、 name、 runtime、 code、 code_hash、 env_vars、 permissions、 is_active、 created_at、 updated_at |
FunctionPermissions | allow_net: string[]、 memory_mb: number、 timeout_secs: number |
Job | id、 project_id、 function_name、 status、 payload、 attempts、 max_attempts、 error?、 scheduled_at、 started_at?、 created_at、 completed_at? |
CronJob | id、 project_id、 name、 schedule、 function_name、 payload、 is_active、 last_run?、 next_run?、 created_at |
AuraResponse<T> | { data, error, meta? } |
関数が JSON オブジェクトを返す場合、 data は、古いバージョンに対して作成されたコード用に保持されている 2 つの列挙不可能なプロパティ body と statusも保持します。新しいコードではそれらに依存しないでください。