GoogleのAPIを使うのに必要なサービスアカウントを環境変数で管理する
サービスアカウント=jsonファイル
jsonファイルの中身を環境変数に設定する(str型)
jsonファイルを持ち歩かなくて済む(デプロイしやすい)
使うときにstrかdictかは、合わせて使うライブラリによる
base64 encodeも合わせて実施する
k8sでも使われている(鍵の証明書をbase64でencodeして使っている)
ref: CIの環境変数にいれたいときなどはBase64にしたりしますね(hoboroさん)
https://docs.python.org/ja/3/library/base64.html
b64encode: bytes -> エンコードされたbytes
b64decode: エンコードされたbytes -> デコードされたbytes
strのencodeやbytesのdecode、encoding引数のデフォルト値は"utf-8"
https://docs.python.org/ja/3/library/stdtypes.html#str.encode
https://docs.python.org/ja/3/library/stdtypes.html#bytes.decode
(今回の)手順
1. サービスアカウントのファイルを1行にまとめたファイルを作る(まとめていて気付いたが、不要だった)
https://github.com/ftnext/python-as-pyconjp-staff/blob/b660f7184dd651823c41814058901eca248d6461/tools/oneliner_credential.py を使う
2. サービスアカウントのjsonを読み込む(辞書型)
3. 文字列として出力し、bytesに変換する
4. base64でencode
code:python
with open("path/to/service_account.json", encoding="utf8") as f:
credentials_json = json.load(f)
base64.b64encode(json.dumps(credentials_json).encode())
base64 encodeしてできた文字列を環境変数に設定する
情報の取り出し方
環境変数を読み込む
base64でdecode(bytes型になる)
str型にdecode
(jsonでdict型にする場合もある)