Workflowsの組み込み環境変数について調べてみた

2024.06.28

組み込み環境変数とは

Workflowsには変数名がGOOGLE_CLOUDから始まるいくつかの環境変数が定義されています。(英文のリファレンスでは[Built-in environment variables]と書かれていますね。
この組み込み環境変数は特に宣言する必要もなく、宣言を必要とせず、すべてのワークフロー実行で利用可能です。

使用できる組み込み環境変数は以下となっています。

環境変数名 内容
GOOGLE_CLOUD_LOCATION ワークフローが存在するLocation
GOOGLE_CLOUD_PROJECT_ID プロジェクトID
GOOGLE_CLOUD_PROJECT_NUMBER プロジェクト番号
GOOGLE_CLOUD_SERVICE_ACCOUNT_NAME ワークフロー実行サービスアカウント名
GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID ワークフロー実行ID
GOOGLE_CLOUD_WORKFLOW_ID ワークフローのID
GOOGLE_CLOUD_WORKFLOW_REVISION_ID ワークフローのリビジョンの識別子

使い方・確認方法・メリットなど

どうやって使うの?

通常の環境変数を取得する時と同様に${sys.get_env("変数名")}で取得することができます。 例えばGOOGLE_CLOUD_PROJECT_IDを取得する場合であれば以下の実装になります。

${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}

環境変数名は文字として渡す必要があるので、ダブルクォーテーションで囲う点に注意してください。これは組み込み環境変数だけでなく通常の環境変数も同様です。

To access an environment variable, make a call to the sys.get_env() function in an expression, passing the name of the environment variable as a parameter. The name of the environment variable must be passed as a string.
環境変数にアクセスするには、式の中でsys.get_env()関数を呼び出し、パラメータとして環境変数名を渡す。環境変数名は文字列として渡さなければならない。(DeepL翻訳)

※引用:https://cloud.google.com/workflows/docs/reference/environment-variables#access_built-in_environment_variables

組み込み環境変数を確認する

以下のワークフローを実行すると、組み込み環境変数がログ出力されます。

main:
    steps:
    - init:
        assign:
          - workflowVariables: 
            - ${sys.get_env("GOOGLE_CLOUD_LOCATION")}
            - ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")}
            - ${sys.get_env("GOOGLE_CLOUD_PROJECT_NUMBER")}
            - ${sys.get_env("GOOGLE_CLOUD_SERVICE_ACCOUNT_NAME")}
            - ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_EXECUTION_ID")}
            - ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_ID")}
            - ${sys.get_env("GOOGLE_CLOUD_WORKFLOW_REVISION_ID")}    
    - logPrint:
        call: sys.log
        args:
          text: ${workflowVariables}
          severity: "INFO"

何がメリットなの?

プロジェクトIDや番号で本番・検証環境を出し分ける、障害発生時などに調査が楽なようにサービスアカウント名やワークフロー実行IDなどをログや通知メッセージに載せる、などでしょうか。補助的な用途に使うものと考えます。

まとめ

組み込み環境変数は大活躍するような存在ではなく、縁の下の力持ちのようなみんなを確かに支えてくれる優しい存在だと考えます。
なのでWorkflowsを活用していく上では組み込み環境変数の存在は押さえておくと引き出しが増えていいのかなと思います。
この記事がどなたかのお役に立てば幸いです。それではまた。

参考

Built-in environment variables