Workflowsの組み込み環境変数について調べてみた
組み込み環境変数とは
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を活用していく上では組み込み環境変数の存在は押さえておくと引き出しが増えていいのかなと思います。
この記事がどなたかのお役に立てば幸いです。それではまた。