ある企業がARMテンプレートを使って複数のAzureリソースをデプロイしている。テンプレート内でリソース間の依存関係を正しく制御するための機能について、正しい説明を2つ選択してください。
- A. dependsOnプロパティを使用すると、指定したリソースのデプロイが完了するまで当該リソースのデプロイを待機させることができる
- B. dependsOnには最大2つのリソースしか指定できないという制限がある
- C. reference()関数を使用して別のリソースのプロパティを参照すると、ARMが自動的に暗黙の依存関係を検出してデプロイ順序を制御する
- D. dependsOnに指定したリソースが存在しない場合、デプロイは自動的にそのリソースをスキップして続行する
- E. ARMテンプレートは常にリソースをアルファベット順にデプロイするため、dependsOnは不要である
解答と解説を見る
正解: A, C
ARMテンプレートの依存関係制御には、明示的な方法と暗黙的な方法の2つがある。まず「dependsOn」プロパティは明示的な依存関係を宣言する方法で、指定したリソース名またはリソースIDが示すリソースのデプロイが正常完了するまで当該リソースのデプロイ開始を待機する。次に「reference()」や「listKeys()」などの関数で別のリソースを参照すると、ARMエンジンがその参照を検出して暗黙の依存関係として自動的にデプロイ順序を制御する。これはBicepでも同様に機能する。選択肢Eはリソースのデプロイ順序がアルファベット順という誤り(ARMは依存関係グラフに基づいて並列または順次デプロイを決定する)。選択肢BはdependsOnに指定できるリソース数に制限はなく、任意の数を配列で指定できる。選択肢DはdependsOnに指定したリソースがデプロイ失敗した場合、依存するリソースもデプロイに失敗しトランザクション全体がエラーとなる。