Cloud Functionでランタイムのサービスアカウントとは別のサービスアカウントをコード上で利用する

環境

Cloud Functions 第2世代 リージョン:asia-northeast1 ランタイム:PHP 8.1

利用方法

デプロイしたソースは /workspace 配下に置かれるため*1

サービスアカウントのキーファイルも一緒にデプロイし、

環境変数 GOOGLE_APPLICATION_CREDENTIALS/workspace/デプロイしたキーファイルパス を設定する。

もしくは各種クライアントの keyFilePath などのコンフィグに、 /workspace/デプロイしたキーファイルパス を設定する。

# デプロイ例
gcloud functions deploy myFunction  \
--gen2 \
--region=asia-northeast1 \
--runtime=php81 \
--source=. \
--entry-point=myFunction \
--env-vars-file .env.yaml
# .env.yml
GOOGLE_APPLICATION_CREDENTIALS: /workspace/config/service-account.json

注意

キーファイルは暗号化しておき、デプロイ時に複合するなど、扱いに注意すること。

*1:2023/03/03現在 上記の環境なら