ものづくりのブログ

うちのネコを題材にしたものづくりができたらいいなと思っていろいろ奮闘してます。

【Google Cloud Platform】Secret Manager を使ってみました

Secret Manager に登録した情報を呼び出す処理を調べてみました。

コード

from google.cloud import secretmanager

class SecretManagerUtil:

    def get_secret(self, project_id: str, secret_id: str) -> str:
        client = secretmanager.SecretManagerServiceClient()
        name = f"projects/{project_id}/secrets/{secret_id}/versions/latest"
        response = client.access_secret_version(request={"name": name})
        return response.payload.data.decode("UTF-8")

if __name__ == '__main__':
    SecretManagerUtil().get_secret(PROJECT_ID, SECRET_ID)

注意点

開発環境などの docker コンテナから処理しようとすると以下のエラーが出力します。

前提条件

クライアントライブラリが実行環境から認証情報を解決していることが前提のようです。
「gcloud auth application-default login」を行っているとシークレット情報が読めるようです。

回避策

「GOOGLE_APPLICATION_CREDENTIALS」という環境変数にクレデンシャルファイルのパスを指定するといいらしいです。
結局クレデンシャルファイルは必要になるのかなぁ...