長野エンジニアライフ

東京から長野に移住したエンジニアのブログです。🦒🗻⛰

【Firebase】Functionからstorageの署名付きURLを取得しようとしたらError: 7 PERMISSION_DENIED: Missing or insufficient permissions.

事象

[Firebase] Functionからstorageの署名付きURLを取得しようとしたら 以下のエラーが発生(コンソール画面からIAM APIは有効に設定済み かつ トークン作成者の権限も付与済)

Error: 7 PERMISSION_DENIED: Missing or insufficient permissions.

原因

IAM有効にすると、この辺りの認証情報の初期設定が必要になるっぽい? firebase.google.com

対応方針

  • GCPのコンソール画面からfirebase-adminsdkの鍵をJSON形式で作成
    f:id:kawakeee:20200610013009p:plain

  • functionのソース配下に鍵を配置

  • initializeAppを以下のように呼び出して初期化
const serviceAccount = require('<鍵を配置した階層>')
admin.initializeApp({
  credential: admin.credential.cert(serviceAccount),
  databaseURL: 'https://<project-name>.firebaseio.com',
  storageBucket: '<project-name>.appspot.com''
})

以上で、storageの署名付きURLを取得ができた。

参考記事

qiita.com

node.jsからサービスアカウント使ってFirebaseへ接続する時のメモ · GitHub