TL

Cloud Service

Azure Resource Manager / Bicep

Azure リソースの展開・管理を担う制御基盤と、宣言的にインフラを記述する IaC 言語 Bicep。AWS の CloudFormation に相当する。

中級運用上の優秀性信頼性
最終更新: 2026-06-14公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.ARM は Azure の全リソース操作を受け付ける統一の制御プレーンである。
  • 2.Bicep は ARM テンプレートを簡潔に書ける宣言的 IaC 言語である。
  • 3.デプロイはべき等で、スコープと依存関係に沿って差分適用される。

解決する課題

クラウド インフラを手作業のポータル操作で構築すると、環境差異・設定漏れ・再現性の欠如が避けられません。Azure Resource Manager(ARM)と Bicep は、インフラをコードとして宣言的に記述し、繰り返し同じ結果で展開できるようにします。

  • 開発・検証・本番で同一構成を再現したい(環境ドリフトの排除)
  • リソース作成を手順書ではなくコードで残し、レビュー・履歴管理したい
  • 複数リソースの依存関係と作成順序を自動で解決したい
  • 権限・タグ・ポリシーを統一の制御プレーンから一貫して適用したい

主要概念と用語

  • Azure Resource Manager(ARM): ポータル・CLI・PowerShell・SDK からのあらゆるリソース操作を受け付ける統一の制御プレーン。認証・認可・課金タグ付け・依存解決を担う(AWS の CloudFormation + コントロール プレーンに相当)
  • ARM テンプレート: リソースを宣言する JSON ファイル。ARM がネイティブに解釈する原形式
  • Bicep: ARM テンプレートを簡潔に書くためのドメイン固有言語(DSL)。デプロイ時に ARM テンプレート(JSON)へ変換(トランスパイル)される。JSON より可読性が高く、AWS の CloudFormation に対する CDK に近い立ち位置だが、命令的言語ではなく宣言的
  • リソース プロバイダー: Microsoft.Compute や Microsoft.Storage など、リソース種別ごとの操作を実装する名前空間。利用には登録が必要
  • デプロイ(Deployment): テンプレートを適用する操作。同じ入力なら結果が同じになるべき等性を持つ
  • スコープ: デプロイの適用範囲。リソース グループ/サブスクリプション/管理グループ/テナントの4階層
  • モジュール(Bicep module): 再利用可能な Bicep の部品。テンプレートを分割・共有する単位
  • パラメーター/変数/出力: 入力値・中間値・他テンプレートへ渡す戻り値を表す要素
  • What-if 操作: 適用前に変更内容(作成・変更・削除)を事前確認する機能(CloudFormation の変更セットに相当)

仕様・制限・クォータ

  • 宣言的かつべき等: テンプレートは「あるべき状態」を記述し、ARM が現状との差分を適用します。同じテンプレートを再実行しても結果は変わりません
  • デプロイ モード: **増分(Incremental)**は既存リソースを保持しテンプレート記載分を追加・更新。完全(Complete)はテンプレートに無いリソースをスコープ内から削除します。既定は増分で、完全モードは意図しない削除に注意します
  • 依存関係: ARM はリソース間参照から依存を自動推論し、可能なものは並列に展開します。明示指定も可能です
  • スコープ単位の上限: 1 回のデプロイで扱えるリソース数や、テンプレートのサイズ・パラメーター数などに上限があります。大規模構成はモジュール分割やネスト デプロイで回避します
  • Bicep は JSON のスーパーセット的役割: Bicep で書けるものは ARM テンプレートに変換可能で、既存 JSON からの逆変換(decompile)も可能です
  • 具体的な上限値は時期やリソース種別で変わり得るため、設計時は最新の公式ドキュメントで確認します

内部の仕組み

ARM は Azure のすべてのリソース操作の入口です。ポータル・az CLI・PowerShell・REST いずれの操作も、最終的に ARM の REST API を通り、ARM が認証・RBAC による認可・ポリシー評価・タグ付けを行ったうえで、各リソース プロバイダーへ処理を委譲します。

Bicep ファイルはデプロイ時にまず ARM テンプレート(JSON)へトランスパイルされ、テンプレートとパラメーターがデプロイとして ARM に投入されます。ARM はテンプレート内のリソース間参照から依存グラフを構築し、依存のないリソースは並列に、依存のあるものは順序を守って各プロバイダーに展開を指示します。各リソースの作成・更新はべき等で、既に望ましい状態にあるものは再作成されません。

Bicep と JSON の関係

Bicep は新しい実行エンジンではなく、ARM テンプレートを生成するための言語です。ランタイムは従来どおり ARM なので、Bicep を採用しても機能差はなく、可読性と保守性が上がるだけと理解すると整理しやすいです。

設計パターン / ベストプラクティス

  • モジュール化: ネットワーク・ストレージ・アプリ層などを Bicep モジュールに分割し、環境ごとにパラメーターで差し替える
  • 環境分離: 同一テンプレート+環境別パラメーター ファイル(dev/staging/prod)で構成差異をパラメーターに閉じ込める
  • What-if で事前確認: 本番適用前に必ず what-if を実行し、想定外の削除・変更を検出する
  • CI/CD 連携: テンプレートを Git で管理し、GitHub Actions や Azure Pipelines から自動デプロイ(PR レビュー → what-if → 適用)
  • 完全モードは慎重に: 既定の増分モードを基本とし、完全モードは影響範囲を理解したうえで限定的に使う
  • タグとネーミング規約を変数・モジュールで一元化し、コスト配賦と運用を容易にする

運用・監視

  • デプロイ履歴: リソース グループ単位でデプロイ履歴と各操作の成否・エラー詳細が記録され、失敗時の原因追跡に使える
  • アクティビティ ログ: ARM 経由のすべてのコントロール プレーン操作(作成・変更・削除)が証跡として残る(AWS の CloudTrail 相当)
  • 失敗の切り分け: プロバイダー未登録、クォータ超過、RBAC 権限不足、依存関係の記述漏れが典型的な失敗要因
  • ドリフト対策: ポータルでの手動変更がテンプレートと乖離する「ドリフト」を、what-if や定期的な再デプロイで検出・是正する
  • Azure Policy 連携: 命名・リージョン・SKU 制限などをポリシーで強制し、テンプレート外の逸脱も防ぐ

コスト

ARM と Bicep によるデプロイ操作自体は無償です。課金が発生するのは、テンプレートが作成した個々のリソース(仮想マシン・ストレージなど)であり、IaC レイヤーには直接の利用料金はありません。コスト最適化の観点では、テンプレートで SKU・サイズ・冗長性をパラメーター化し、環境ごとに過剰なリソースを作らないことが重要です。

項目課金有無補足
ARM のデプロイ操作無償テンプレート適用や what-if に料金は発生しない
作成されたリソース従量課金VM・ストレージ等それぞれの料金で課金される
タグ付与無償コスト配賦・集計のためにテンプレートで一元管理

セキュリティ

  • 認可は RBAC: ARM は操作ごとに Microsoft Entra ID + Azure RBAC で認可します。デプロイ実行者やパイプラインのサービス プリンシパルには最小権限を割り当てます
  • シークレットを直書きしない: 接続文字列やパスワードはテンプレートにハードコードせず、Azure Key Vault 参照でデプロイ時に注入します
  • マネージド ID をパイプラインに使い、長期資格情報の保存を避けます
  • Azure Policy で許可リージョン・SKU・命名規約などを強制し、テンプレートの逸脱や手動変更を防ぎます
  • 完全モードによる削除は権限とともに破壊的影響を持つため、誰がどのスコープに適用できるかを RBAC で厳格に制御します
完全モードの落とし穴

デプロイ モードを完全(Complete)にすると、テンプレートに記載の無いリソースがスコープ内から削除されます。意図せず本番リソースを消す事故につながるため、適用前の what-if 確認と、増分モードを既定とする運用が安全です。

Well-Architected の観点

  • 運用上の優秀性(operational): インフラをコード化し、レビュー・バージョン管理・自動デプロイの対象にできます。手作業を排し、再現性と監査性を高めます
  • 信頼性(reliability): べき等なデプロイと環境別パラメーターにより、本番と同一構成を確実に再現でき、災害復旧時の再構築も自動化できます。what-if による事前検証で変更リスクを下げます

試験で問われるポイント

頻出
  • ARM = Azure の統一制御プレーンで、ポータル・CLI・PowerShell・SDK のすべての操作がここを通る、という位置づけ
  • Bicep は ARM テンプレート(JSON)にトランスパイルされる宣言的 DSL であり、新しいランタイムではない点
  • デプロイ モードの**増分(既定・既存を保持)と完全(記載外を削除)**の違いと、完全モードの破壊性
  • デプロイ スコープはリソース グループ/サブスクリプション/管理グループ/テナントの4階層
  • ARM は依存関係を自動推論し可能な範囲で並列展開、デプロイはべき等である点
  • 適用前のwhat-ifで変更内容を事前確認できること(AWS の変更セット相当)
  • シークレットはKey Vault 参照で注入し、テンプレートに直書きしないこと
  • AWS の相当サービスは CloudFormation

関連サービス・比較

観点Azure Resource Manager / BicepAWS CloudFormation
位置づけAzure の統一制御プレーンと IaCAWS の宣言的 IaC サービス
記述言語Bicep(DSL)または ARM テンプレート(JSON)テンプレート(YAML / JSON)
展開単位デプロイスタック
事前確認what-if 操作変更セット
適用範囲リソース グループ/サブスクリプション/管理グループ/テナントリージョン内のスタック(StackSets で横断)
再利用部品Bicep モジュールネストスタック / モジュール
操作の監査アクティビティ ログCloudTrail

ハンズオン / CLI例

# リソース グループを作成
az group create --name demo-rg --location japaneast

# Bicep ファイルの適用前に変更内容を事前確認(what-if)
az deployment group what-if \
  --resource-group demo-rg \
  --template-file main.bicep \
  --parameters env=dev

# Bicep ファイルをリソース グループ スコープにデプロイ(既定は増分モード)
az deployment group create \
  --resource-group demo-rg \
  --name infra-deploy \
  --template-file main.bicep \
  --parameters @dev.parameters.json

# デプロイ結果(出力値)を確認
az deployment group show \
  --resource-group demo-rg \
  --name infra-deploy \
  --query properties.outputs

# 既存 ARM テンプレート(JSON)を Bicep へ逆変換
az bicep decompile --file azuredeploy.json

Azure Service

Azure Resource Manager / Bicepを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

管理・ガバナンス

比較で見る軸

クラウド: Azure / カテゴリ: 管理・ガバナンス / 難易度: intermediate

導入後に効く点

Bicep は ARM テンプレートを簡潔に書ける宣言的 IaC 言語である。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Azure
カテゴリ
管理・ガバナンス
難易度
intermediate
関連資格
設計柱
operational / reliability

判断チェックリスト

  • 自社の用途が「管理・ガバナンス / operational」に近いか確認する。
  • 強みである「ARM は Azure の全リソース操作を受け付ける統一の制御プレーンである。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

管理・ガバナンスoperationalreliability