UGA Boxxx

つぶやきの延長のつもりで、知ったこと思ったこと書いてます

【JavaScript】GCSからjsonファイルをダウンロードする

node.jsでつくったアプリで、GCSからファイルをダウンロードしたい

@google-cloud/storageを使う

www.npmjs.com

APIドキュメントは以下
https://googleapis.dev/nodejs/storage/latest/File.html#download

サンプル実装

import { Storage } from "@google-cloud/storage";
import configs from "../configs";

const storage = new Storage({ 'keyFilename': configs.keyFilename });
const bucket = storage.bucket(configs.bucketName); 
const file = bucket.file(configs.fileName);
const data = await file.download();
const result = JSON.parse(data[0].toString("UTF-8"));

ローカルで実行する

ローカルで実行するにはこのままではできないので、事前にGCPの管理コンソールでストレージ管理者権限をつけたサービスアカウントを作成しておく

そして、アプリのルートディレクトで以下を実行し、キーファイルをダウンロードする

$ gcloud iam service-accounts keys create my-service-account.json --iam-account my-service-account@my-gcp-project-id.iam.gserviceaccount.com

最後に、上のサンプルコードのconfigsを以下のように設定するとローカルで実行することができる

{
    projectId: "my-gcp-project-id",
    keyFilename: "my-service-account.json"
}