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 の画像一覧が欲しいようなケースでは、initializeAppstorageBucketxxxxx.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);
}