GOOGLE_APPLICATION_CREDENTIALS ではなく、コードに値を直接渡す
GOOGLE_APPLICATION_CREDENTIALS
はファイルパスにしか対応していません。
サーバーレス環境ではファイルパスを指定したくないので、環境変数を通してコードに値を直接渡します。
具体的には、Datastore のインスタンスを作成する際に、秘密鍵などの値を渡します。
index.ts
const datastore = new Datastore({
projectId: process.env.GCLOUD_PROJECT,
credentials: {
client_email: process.env.CLIENT_EMAIL,
private_key: process.env.PRIVATE_KEY,
},
});
(環境変数名はそれぞれの環境に合わせて変更してください)
それぞれの値は、サービスアカウントのキー(json ファイル)に含まれている値をコピーするだけです。
ただし、 Invalid PEM Format 的なエラーが出る場合は
index.ts
private_key: process.env.PRIVATE_KEY.replace(/\\n/g, "\n")
が必要かもしれません。
こちらをご確認ください。
https://stackoverflow.com/a/50376092/7978612