ある企業のDevOpsチームがBicepを使ってAzureリソースをデプロイしている。デプロイ先のリソースグループの名前・場所などのメタ情報をBicepファイル内でプログラム的に取得したい。BicepファイルのデフォルトのtargetScopeはリソースグループであり、リソースグループ自身のプロパティ(名前・リージョン)をパラメーターなしで参照する方法として正しいものはどれか。
- A. parameters('resourceGroupName') と parameters('location') を宣言してパラメーターとして受け取る必要がある
- B. resourceGroup().name と resourceGroup().location を使用して現在のリソースグループの名前とリージョンを取得する
- C. deployment().properties.resourceGroup.name で取得する
- D. subscription().resourceGroupName と subscription().location で取得する
解答と解説を見る
正解: B
BicepおよびARMテンプレートでは、resourceGroup()関数を呼び出すことで現在のデプロイ先リソースグループのメタ情報を取得できる。resourceGroup().nameはリソースグループ名、resourceGroup().locationはリソースグループのリージョン(例: japaneast)、resourceGroup().idはリソースグループの完全なリソースIDを返す。これによりlocationパラメーターをハードコードせずに「デプロイ先リソースグループと同じリージョン」を動的に指定することが一般的なパターン。選択肢Aはパラメーターで受け取ることも可能だが、「パラメーターなしで参照する方法」という問いの条件を満たさない。選択肢Dのsubscription()関数はサブスクリプションレベルの情報(サブスクリプションIDなど)を返すものであり、resourceGroupNameプロパティは存在しない。選択肢Cのdeployment()関数はデプロイ自体のメタ情報を返すが、resourceGroup名を直接取得するプロパティパスではない。