ユーザーアイコン

mizuko

2日前

0
0

Vercel環境でのGCS認証設定(Base64エンコード方式)

Next.js
Vercel
Google Cloud Storage

Vercel環境でGoogle Cloud Storageを使用する際、サービスアカウント認証情報を環境変数に設定する必要がある。

問題点

  • JSON文字列を直接環境変数に設定すると、\n(改行文字)のエスケープエラーが発生
  • SyntaxError: Bad escaped character in JSONが発生する

解決方法

  1. サービスアカウントキーをBase64エンコード
  2. 環境変数に設定
  3. コード側でBase64デコード後にJSON.parseで復元
// Base64エンコードされた認証情報をデコード const storage = process.env.GCP_SERVICE_ACCOUNT_KEY ? new Storage({ credentials: JSON.parse( Buffer.from(process.env.GCP_SERVICE_ACCOUNT_KEY, 'base64').toString(), ), }) : new Storage(); // Cloud Run環境用(デフォルト認証)

Base64エンコード手順

cat service-account-key.json | base64

この方法により、改行文字やエスケープ文字の問題を回避できる。