GCP Cloud Functions内からサービスアカウントのtoken取る

Cloud Functionsからサービスアカウントのアクセストークンをどうやって取るの?と疑問に思ったので調べた

Google Compute Engineと同じ取り方でOK

"use strict";
const fetch = require("node-fetch");
exports.handler = async (req, res) => {
  const url =
    "http://metadata.google.internal/computeMetadata/v1/instance/service-accounts/" +
    "[サービスアカウント名]/token";
  const result = await fetch(url, {
    method: "GET",
    headers: {
      "Metadata-Flavor": "Google"
    }
  });
  const token = await result.text();
  console.log(token);
  res.status(200).send("OK");
};

なんでドキュメントにも書いてある今更な事を書くかというと日本語ドキュメントには見出しが無いんですよね。。。。

token-in-function

まだ翻訳終わってないならまだしも(本当は英文のままで良いからタイトルくらいは残してほしいが) “Function Identity"とかクリックするとちゃんと日本語版あるんですよね
なんかメニューがバグってるのかな・・・
とりあえず英語版から探すのをオススメします…

参考リンク