Azure認定資格 WEB問題集&徹底解説

AZ-104:Microsoft Azure Administrator

正解 B問題
分野3:Azure コンピューティングリソースのデプロイと管理 タスクステートメント3.1:ARM テンプレートまたは Bicep ファイルによるリソースデプロイの自動化
合格に向けて、もっと深く学習する
豊富な問題と詳細なAzureサービス解説を、1 時間無料でお試しいただけます
プレミアム会員機能を無料で試す ❯
問題文と選択肢
物流会社の六甲物流株式会社の Azure サブスクリプションには、次のリソースグループが既に存在します。
・RG-Sales: リージョン 日本西部 (Japan West)
・RG-HR: リージョン 日本東部 (Japan East)

情報システム部門は、新規プロジェクト用のリソースグループを一括作成するため、サブスクリプションスコープの ARM テンプレート deploy.json を次のとおり作成しました。
{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "location": "japaneast",
      "name": "[concat('proj-inv-', copyIndex())]",
      "copy": { "name": "rgCopy", "count": 3 }
    }
  ],
  "outputs": {}
}
このテンプレートは、次の PowerShell コマンドでデプロイします。
New-AzSubscriptionDeployment -Location japanwest -TemplateFile deploy.json
次の記述は正しいですか。
「このテンプレートは、proj-inv-0 という名前のリソースグループを日本西部 (Japan West) リージョンに作成する」
  • 正しい
  • 誤り
解説 頻出度★★★★★
この問題は、サブスクリプションスコープのデプロイで指定する -Location はデプロイのメタデータの保存先であり、作成されるリソースグループの場所はテンプレート内の location プロパティで決まる、という切り分けができるかがポイントです。

A. 正しい

「正しい」を選ぶと、-Location japanwest がリソースグループの作成先を決めると解釈したことになります。
サブスクリプションスコープのデプロイで指定する -Location は、そのデプロイ自体のメタデータ(デプロイ履歴)を格納するリージョンにすぎません。テンプレートの resources には location プロパティとして japaneast が明示されている以上、作成されるリソースグループは日本東部になります。
名前が proj-inv-0 である点は正しいものの、リージョンの記述が誤っているため、記述全体としては成立しません。

正解

B. 誤り

copy の count が 3 で、copyIndex() は 0 から始まるため、作成されるリソースグループは proj-inv-0 / proj-inv-1 / proj-inv-2 の 3 つです。名前 proj-inv-0 自体は確かに作成されます。
しかし、それぞれの場所はテンプレートの location プロパティ(japaneast)に従い、日本東部 (Japan East) に作成されます。日本西部に作成されるという記述は誤りであり、この選択肢が正解です。
New-AzSubscriptionDeployment の -Location は必須パラメーターですが、これはサブスクリプションスコープのデプロイ リソース(デプロイ履歴)をどのリージョンに保存するかを指定するものです。

これだけ覚える(記憶フック)
RG の場所はテンプレートの location。-Location はデプロイ履歴の置き場所であって、リソースの場所ではない。
正解への思考ルート 問題文から要件を抽出し、選択肢の適否を判断するのがポイントです。
要件 判断ポイント
New-AzSubscriptionDeployment -Location japanwest サブスクリプションスコープのデプロイのメタデータを保存するリージョン。作成されるリソースの場所とは無関係
→選択肢(A)を消す
テンプレートの resources にある location プロパティ(値は japaneast) リソースグループの場所はこの location プロパティで決まる。したがって作成先は日本東部
→選択肢(B)が正解
name が [concat('proj-inv-', copyIndex())] で copy.count が 3 copyIndex() は 0 起点なので proj-inv-0 / 1 / 2 が作成される。名前の部分は記述どおり
→選択肢(B)が正解(名前は合っているが場所が違う)
既存の RG-Sales(日本西部)・RG-HR(日本東部) 新規作成されるリソースグループの場所には一切影響しないノイズ情報
→選択肢(A)を消す
ひっかけポイント
  • -Location japanwest がコマンドラインの最後に置かれているため「デプロイ先リージョン」と読みたくなりますが、サブスクリプションスコープのデプロイではデプロイ リソースの保存先を指すだけです
  • 記述の前半(proj-inv-0 という名前)は正しいのが罠。Yes/No 形式では一部でも誤りがあれば全体として「誤り」になります。名前が正しいことに安心して「正しい」を選ばないようにします
  • copyIndex() を 1 起点と誤解すると proj-inv-1〜3 が作られると考え、名前の側が誤りだと判断してしまいます(結論は同じ「誤り」でも理由が違うため、類題で外します)
  • リソースグループの場所と、その中に作るリソースの場所は独立です。日本東部のリソースグループに日本西部の仮想マシンを置くこともできます
出題バリエーション 同じ知識が本番では条件を変えて出題されます。
問題文がこう変わったら 正解はこう変わる
「テンプレートの location を japanwest に変更したら」 リソースグループは日本西部に作成されるため、記述は正しいになる。
「resources から location を省略したら」 リソースグループ リソースでは location が必須のため、デプロイが検証エラーで失敗する。
「作成されたリソースグループの中に仮想マシンを作る」 VM の場所は VM 側の location で決まる。リソースグループの場所とは一致しなくてよい。
「リソースグループではなくポリシーの割り当てをデプロイする」 場所を持たないリソースもあるが、サブスクリプションスコープのデプロイでは -Location 指定自体は必須のまま。
関連サービスの解説 Azure Resource Manager
リソースグループ
+ 質問 / コメント
解答・解説に疑問がある場合や、よりよい解説がある場合など、お気軽にコメントください。ただし、短文コメントは表示されません。また、中傷などコメントの内容によっては、会員機能を停止させて頂きます。教え学び合える場になれば嬉しいです。(コメント投稿にはログインが必要です)
正答率 0%
No.17 解説
物流会社の六甲物流株式会社の Azure サブスクリプションには、次のリソースグループが既に存在します。
・RG-Sales: リージョン 日本西部 (Japan West)
・RG-HR: リージョン 日本東部 (Japan East)

情報システム部門は、新規プロジェクト用のリソースグループを一括作成するため、サブスクリプションスコープの ARM テンプレート deploy.json を次のとおり作成しました。
{
  "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Resources/resourceGroups",
      "apiVersion": "2021-04-01",
      "location": "japaneast",
      "name": "[concat('proj-inv-', copyIndex())]",
      "copy": { "name": "rgCopy", "count": 3 }
    }
  ],
  "outputs": {}
}
このテンプレートは、次の PowerShell コマンドでデプロイします。
New-AzSubscriptionDeployment -Location japanwest -TemplateFile deploy.json
次の記述は正しいですか。
「このテンプレートは、proj-inv-0 という名前のリソースグループを日本西部 (Japan West) リージョンに作成する」
  • 正しい
  • 誤り

(会員限定)当問題の評価をお願いします。改善に活用します。