ARMテンプレートのデプロイにおいてARMテンプレート上で記載されているリソースと既にAzure上にデプロイされているリソースはどのように紐づくのか
特定の情報によって自動的に紐づく
ARM テンプレートのデプロイ時に、下記情報を指定することによって、Azure 上の既存のリソースを特定でき、ARM テンプレートに記載されているリソースと自動的に紐づけられます。
・デプロイ先のスコープ情報:「サブスクリプション ID」、「リソース グループ名」
・ARM テンプレートの “Resource” セクションに含まれる情報:「リソース タイプ」、「リソース名」、「API バージョン」などのリソース情報
上記情報によって Azure リソースの「リソース ID」を判断でき、その「リソース ID」によって Azure 上の既存のリソースを特定できます(デプロイごとにリソース ID と対応する既存リソースが存在するかどうかを自動的に確認しているということです)。
Azureの「リソースID」
Azure の「リソース ID」は、Azure Resource Manager におけるリソースの一意な識別子を示しており、以下のフォーマットで表記されます。
/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderName}/ {resourceType}/{resourceName}
仕組み詳細
ARM テンプレートに含まれているリソースと既にデプロイされているリソースを紐づけている仕組みについて下記に説明します。
まず、ARM テンプレートのデプロイには「スコープ」という概念があります。
「リソース グループ」、「サブスクリプション」、「管理グループ」または「テナント」といった「スコープ」をターゲットにして ARM テンプレートをデプロイすることができます。
詳細については、下記ドキュメントを参照ください。
REST API とテンプレートを使用してリソースをデプロイする – Azure Resource Manager | Microsoft Learn
例えば、「リソース グループ」スコープで ARM テンプレートをデプロイする場合、下記 API によってデプロイが実行されます。
Deployments – Create Or Update – REST API (Azure Resource Management) | Microsoft Learn
===== 抜粋はここから =====
リソース グループにリソースをデプロイします。
テンプレートとパラメーターは、要求または JSON ファイルへのリンクで直接指定できます。
===== 抜粋はここまで =====
上記サンプルの通り、リクエスト時には「サブスクリプション ID」、「リソース グループ名」および「デプロイメント名(対象の ARM テンプレート)」が指定されます。
また、ARM テンプレートの “Resource” セクションには対象リソースの「リソース タイプ」、「リソース名」、「API バージョン」などのリソース情報が記載されております。
例:
“resources": [
{
“type": “Microsoft.Storage/storageAccounts",
“apiVersion": “2021-04-01",
“name": “storageAccountA",
“location": “[resourceGroup().location]",
“sku": {
“name": “Standard_LRS"
},
“kind": “StorageV2",
“properties": {}
},
]
結果、「サブスクリプション ID」、「リソース グループ名」といったデプロイ先の情報および「リソース タイプ」、「リソース名」などのリソース情報を指定することによって、Azure 上の既存のリソースを特定できて自動的に紐づけられます。
ディスカッション
コメント一覧
まだ、コメントがありません