オーラベースのロゴ
オーラベースドキュメント
ドキュメント›ガイド›Store and serve files (SDK)

JavaScript SDK を使用してファイルを保存および提供する

aura.storageの日常的なフローと、実行中のスタックに対して観察されるアクセス ルール。

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

1.バケツ

バケットはファイルをグループ化し、それらが公開されるかどうかを決定します。バケットの作成と削除には service_role キーが必要です。それらをリストするには、サインインしたユーザーまたは service_role キーが必要です。公開キーのみが 403を取得します。

server/buckets.tstypescript
await admin.storage.createBucket('avatars', { public: true })   // 誰でもファイルを読むことができます
await admin.storage.createBucket('invoices', { public: false })  // 所有者だけができる
const { data: buckets } = await admin.storage.listBuckets()

バケットは fileSizeLimit (バイト単位) および allowedMimeTypesも受け入れます。大きすぎるアップロードの場合は 413が返され、許可されていないタイプの場合は 400が返されます。

#
ファイル

2. アップロード、ダウンロード、リスト、削除

files.tstypescript
const bucket = aura.storage.from('invoices')

// アップロード: BLOB、ファイル、または ArrayBuffer
const { data, error } = await bucket.upload(`${user.id}/2026-10.pdf`, file, {
  contentType: 'application/pdf',
})
// → { キー、バケット、URL、サイズ、content_type、etag }

// 既存のファイルを置き換える
await bucket.upload(`${user.id}/2026-10.pdf`, newFile, { upsert: true })

// フォルダーの一覧表示、ダウンロード、削除
const { data: files } = await bucket.list(user.id)
const { data: blob } = await bucket.download(`${user.id}/2026-10.pdf`)
await bucket.remove([`${user.id}/2026-10.pdf`])

期待されること:

  • 既存のパスをアップロードすると、 upsert: trueを渡さない限り、 409 が返されます。
  • アップロードには、サインインしたユーザーまたは service_role キーが必要です。 公開バケットの場合でも、公開キーのみが 403を取得します。
  • .. を含むパスは、 を 400とすると拒否されます。
  • パスはバケット内で共有されます。 別のユーザーがすでにパスを持っている場合は、 409が返されます。各ユーザーのファイルを独自のフォルダー ( ${user.id}/…など) に置きます。
#
シェアする

3. ファイルを共有する

share.tstypescript
// パブリックバケット内のファイル: リクエストなしで構築された永続的な URL
const { data } = aura.storage.from('avatars').getPublicUrl('ada.png')
// → { publicUrl: 'https://my-app.aurabase.cloud/v1/storage/avatars/ada.png' }

// プライベート ファイル: 一時リンク
const { data: signed } = await aura.storage.from('invoices').createSignedUrl(`${user.id}/2026-10.pdf`, 60)
// → { URL、有効期限: 60 }

どちらのリンクもキーなしで取得され、ファイルが返されました。署名されたリンクは、expires_in 秒後に動作を停止します。ブラウザーがキーなしでアップロードできるようにするために、サーバーは createSignedUploadUrl(path) (service_role 呼び出し) を作成します。

#
アクセス

4. 誰が何をできるのか

アクション公開鍵サインインしたユーザーservice_role
パブリックバケット内のファイルを読み取るはいはいはい
プライベートバケット内のファイルを読み取り、リストするいいえその所有者のみはい
アップロードいいえはいはい
ファイルを置換または削除するいいえその所有者のみはい
バケットをリストするいいえはいはい
バケットの作成、削除いいえいいえはい

所有者は、ファイルをアップロードしたユーザーです。実際の実行では、2 番目のユーザーはプライベート バケット内の最初のユーザーのファイルを一覧表示、ダウンロード、削除することはできず、ファイルを置き換えることもできませんでした。

#
サーバー

5. サーバーからの移動とコピー

server/organise.tstypescript
await admin.storage.copy('invoices', 'a/hello.txt', 'a/copy.txt')
await admin.storage.move('invoices', 'a/copy.txt', 'a/moved.txt')
const { data: meta } = await admin.storage.getMetadata('invoices', 'a/hello.txt')

画像のサイズ変更については、 ストレージ リファレンスで説明されています。