🗃️
firebase-admin を使って Cloud Storage for Firebase のファイル一覧を取得する
firebase-admin
を利用して、 Cloud Storage for Firebase の任意のディレクトリに存在するファイルの一覧を取得したかったのですが、
公式のAdmin Cloud Storage API の概要を読んでも、 admin.storage().bucket()
から先の使い方がさっぱり分からなくて困り、調べた結果を記録します。
getFiles を使う
例えば、 gs://xxxxx.appspot.com/users/${uid}/photos/*.png
の画像一覧が欲しいようなケースでは、initializeApp
の storageBucket
に xxxxx.appspot.com
を指定し、
bucket#getFiles を使って、 directory を directory: users/${uid}/photos/
と指定すれば取得できます。
そこから、ファイルのURLが欲しい場合は、bucket#getSignedUrl を使いましょう。
const admin = require('firebase-admin');
admin.initializeApp({
credential: admin.credential.cert(require(certFilePath)),
storageBucket: "xxxxx.appspot.com"
});
const bucket = admin.storage().bucket();
const files = await bucket.getFiles({
directory: `users/${uid}/photos/`
});
for (const item of files[0]) {
const url = await item.getSignedUrl({
action: 'read',
expires: '01-01-2021'
});
console.log(url);
}
Discussion