オーラベースのロゴ
オーラベースドキュメント
ドキュメント›ガイド›Upgrade to SDK 0.6

SDK 0.6 へのアップグレードと新しい関数ルール

JavaScript SDK から Edge Functions を呼び出すプロジェクトのチェックリストと、ローテーションが必要なシークレットを示します。

6 分 読み取り·レベル 中間·2026/10/12 に改訂
この英語のテキストはフランス語のオリジナルから自動的に生成されたもので、まだレビューされていません。
このページは自動翻訳されました。英語版が正式です。
#
概要

1. 何が変わったのか

新しいバージョンをインストールします。

terminalbash
npm install @aurabase/aurabase-js@0.6.0

このリリースには、1 つのセキュリティ変更と、エラーと応答の報告方法に関するいくつかの修正が含まれています。セキュリティの変更は関数サービスにも適用されます。使用している SDK バージョンに関係なく、サービスが更新されるとすぐにプロジェクトに適用されます。

#
ブレーキング

2. 重大な変更

管理呼び出しには service_role キーが必要になりました

functions.list()、 get()、 listJobs()、 getJob()、 enqueueJob()、 listCronJobs()、 createCronJob() および deleteCronJob() は、公開キーまたはサインインしているユーザーに 403 を返します。以前は、list() と get() は、公開キーを保持している人にすべての関数のソース コードと変数を返していました。 セキュリティ モデルを参照してください。

before.ts (ブラウザ)typescript
const { data } = await aura.functions.list() // 公開鍵を操作しました
後: サーバーに移動しますtypescript
// サーバー/API/functions.ts
const admin = createClient(process.env.AURA_URL!, process.env.AURA_SERVICE_ROLE_KEY!)
export const GET = async () => Response.json((await admin.functions.list()).data?.map((f) => f.name))

フロントエンドが必要とするもの (名前など) のみを返し、定義全体を返すことはありません。

JSONにできないボディは拒否される

invoke(name, { body: new Blob(…) })、および ArrayBufferと同様に、型付き配列、 FormData、 URLSearchParams または ReadableStreamは、エラー コード invalid_bodyを返すようになりました。以前は、関数は {} を受け取りましたが、エラーは報告されませんでした。バイナリ データ (base64) をエンコードするか、ストレージにアップロードしてそのパスを送信します。

関数自体の 502、 503 、または 504 は FunctionsHttpError です

以前は、コードがステータスを返した場合でも、これらのステータスは常に FunctionsRelayErrorとして分類されていました。ここで、FunctionsRelayError は、プラットフォーム が失敗したことを意味します。 FunctionsRelayErrorで再試行した場合は、再試行ロジックがまだ一致していることを確認してください。 エラー、タイムアウト、および再試行を参照してください。

FunctionDef の方が正確です

env_vars は Record<string, string> (以前は Record<string, unknown>でした) に permissions が追加されています。これらのフィールドを読み取るコードは動作し続けます。別の型の値を割り当てたコードはコンパイルされなくなりました。

#
修正

3. 動作の修正

以前今
テキスト付きの 500 を返す関数により、メッセージ "null" が生成されましたメッセージは関数が返したテキストです
{ data: null, error: null } を生成したテキストを含む 200 を返す関数data はテキストです
デフォルトモードでのバイナリ応答は { data: null, error: null } を生成しましたerror.code は invalid_response であり、メッセージは responseType を示唆しています
responseType: 'text' とエラー JSON { "error": "…" } は HTTP 503 を示しましたメッセージはデフォルト モードと同様に JSON から読み取られます。
'text'、 'blob' 、 'arrayBuffer' にはデフォルトのタイムアウトがありませんでしたクライアントタイムアウト(30秒)が適用されます
関数名がエンコードされずに URL に挿入されましたエンコードされています: a/../b はパス内に留まります
ジョブの delaySecs は無視されました: ジョブはすぐに実行されましたジョブは日付を待機します

新しいエクスポート: FunctionsHttpError、 FunctionsRelayError、 isRelayStatus および FunctionsResponseType は、 @aurabase/aurabase-js および @aurabase/functionsからのものです。 @aurabase/functionsからインポートした場合は、引き続き機能します。 pnpm を使用すると、そのパッケージを直接の依存関係として必要なくなります。

@aurabase/authでは、 getClaims() の結果の email の型は string | nullになり、これは電子メール アドレスを持たないユーザーに対してサービスが返すものです。

CLI。 aura functions deploy は、既存の関数のシークレットを消去しなくなりました。 aura functions invoke --data は、 {}を送信する代わりに、無効な JSON を拒否します。 aura functions download は Deno 関数に対して機能します。 aura functions serve は、アナウンスしたポートをリッスンします。 aura studio はポート 3000 で Studio を開きます。

#
セキュリティ

4. 公開された秘密をローテーションする

この変更より前のサービス バージョンでプロジェクトが実行されていた場合、公開キーの所有者は誰でも関数のコードと変数を読み取ることができます。それらが読み取られたと仮定します。

  1. service_role キーを使用して関数をリストし、それぞれの変数を開きます。
  2. 支払いキー、Webhook シークレット、サードパーティ トークンなど、含まれるすべてのシークレットをローテーションします。
  3. index.ts に直接書き込まれたシークレットを削除し、変数に移動します。
  4. プロジェクトのジョブとアラート ルールを確認して、作成していないエントリがないか確認してください。
#
チェックリスト

5. チェックリスト

  • ブラウザー内または公開キーを使用して実行されるコード内で、 functions.list(、 functions.get(、 listJobs(、 getJob(、 enqueueJob(、 createCronJob(、 deleteCronJob( 、および listCronJobs( を検索します。
  • プレーン JSON ではない body: 値を検索します。
  • FunctionsRelayErrorに依存する再試行ロジックを確認してください。
  • 上で説明したようにシークレットをローテーションします。
  • CLIを更新します。