はじめに
Azureのドキュメントには、下記のような形でAzure Container Apps JobsのジョブをCLIから起動できることが説明されています。
az containerapp job start [--args]
[--command]
[--container-name]
[--cpu]
[--env-vars]
[--ids]
[--image]
[--memory]
[--name]
[--no-wait]
[--registry-identity]
[--resource-group]
[--subscription]
[--yaml]
実際に、下記のような形でジョブを実行することができます。
az containerapp job start -g $RG_NAME -n $JOB_NAME
また、ドキュメントには--env-vars
パラメータについて下記のような記載があるため、このパラメータを指定することで実行時の環境変数を指定できるように見えます。
A list of environment variable(s) for the container. Space-separated values in 'key=value' format. Empty string to clear existing values. Prefix value with 'secretref:' to reference a secret.
しかし、実際には下記の内容を実行しても意図通りの挙動にはならず、環境変数の指定が無視されて実行されてしまいます。
az containerapp job start -g $RG_NAME -n $JOB_NAME --env-vars FOO=BAR
環境変数を正しく指定する方法
ドキュメントには一切の記載がありませんが、--env-vars
パラメータは--image
パラメータを指定した場合にのみ有効になるという隠れた仕様があります。
つまり、正しく環境変数を指定するには下記のようにします。
az containerapp job start -g $RG_NAME -n $JOB_NAME --image $IMAGE_NAME --env-vars FOO=BAR
複数の環境変数を正しく指定する方法
ドキュメントにも「Space-separated values」と記載されている通り、空白で区切ることで複数の環境変数を指定することができます。ただし、ここでの空白区切りとは「複数の引数として指定する」という意味であり、「空白を含んだ単一の引数を指定する」という意味ではありません。
つまり、下記のような形は正しくありません。
az containerapp job start \
-g $RG_NAME \
-n $JOB_NAME \
--image $IMAGE_NAME \
--env-vars "FOO=BAR BAZ=QUX"
正しくは下記のようにします。
az containerapp job start \
-g $RG_NAME \
-n $JOB_NAME \
--image $IMAGE_NAME \
--env-vars "FOO=BAR" "BAZ=QUX"