Hızlı Başlangıç: REST API ile Azure şeması tanımlama ve atama

Önemli

11 Temmuz 2026'da Blueprints (Önizleme) kullanım dışı bırakılacaktır. Mevcut şema tanımlarınızı ve atamalarınızı Şablon Özellikleri ve Dağıtım Yığınları'na geçirin. Şema yapıtları ARM JSON şablonlarına veya dağıtım yığınlarını tanımlamak için kullanılan Bicep dosyalarına dönüştürülecek. Bir yapıtı ARM kaynağı olarak yazmayı öğrenmek için bkz:

Bu öğreticide, kuruluşunuzda şema oluşturma, yayımlama ve atamayla ilgili bazı yaygın görevleri gerçekleştirmek için Azure Blueprints'i kullanmayı öğreneceksiniz. Bu beceri, Azure Resource Manager (ARM) şablonları, ilkesi ve güvenliği temelinde yeniden kullanılabilir ve hızla dağıtılabilir yapılandırmalar geliştirmek için ortak desenler tanımlamanıza yardımcı olur.

Önkoşullar

Azure Cloud Shell

Azure, tarayıcınız aracılığıyla kullanabileceğiniz etkileşimli bir kabuk ortamı olan Azure Cloud Shell'i barındırıyor. Azure hizmetleriyle çalışmak için Cloud Shell ile Bash veya PowerShell kullanabilirsiniz. Yerel ortamınıza herhangi bir şey yüklemek zorunda kalmadan bu makaledeki kodu çalıştırmak için Cloud Shell önceden yüklenmiş komutlarını kullanabilirsiniz.

Azure Cloud Shell'i başlatmak için:

Seçenek Örnek/Bağlantı
Kodun veya komut bloğunun sağ üst köşesindeki Deneyin'i seçin. Deneyin seçildiğinde kod veya komut otomatik olarak Cloud Shell'e kopyalanmaz. Screenshot that shows an example of Try It for Azure Cloud Shell.
https://shell.azure.comadresine gidin veya Cloud Shell'i tarayıcınızda açmak için Cloud Shell'i Başlat düğmesini seçin. Button to launch Azure Cloud Shell.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Screenshot that shows the Cloud Shell button in the Azure portal

Azure Cloud Shell'i kullanmak için:

  1. Cloud Shell'i başlatın.

  2. Kodu veya komutu kopyalamak için kod bloğundaki (veya komut bloğundaki) Kopyala düğmesini seçin.

  3. Windows ve Linux'ta Ctrl+Shift V'yi seçerek veya macOS üzerinde Cmd+Shift++V'yi seçerek kodu veya komutu Cloud Shell oturumuna yapıştırın.

  4. Kodu veya komutu çalıştırmak için Enter'ı seçin.

REST API'sini kullanmaya başlama

REST API'yi bilmiyorsanız, başta istek URI'si ve istek gövdesi hakkındaki bölümler olan Azure REST API Başvurusu'na göz atarak başlayın. Bu hızlı başlangıçta, Azure Blueprints ile çalışmaya yönelik yönergeler sağlamak için bu kavramlar kullanılır ve bunlar hakkında çalışan bir bilgi olduğu varsayılır. ARMClient gibi araçlar yetkilendirmeyi otomatik olarak işleyebilir ve yeni başlayanlar için önerilir.

Azure Blueprints belirtimleri için bkz . Azure Blueprints REST API.

REST API ve PowerShell

REST API çağrısı yapmak için bir aracınız yoksa bu yönergeleri PowerShell kullanarak gerçekleştirebilirsiniz. Aşağıda Azure ile kimlik doğrulaması için örnek bir üst bilgi verilmiştir. Bazen taşıyıcı belirteci olarak da adlandırılan bir kimlik doğrulama üst bilgisi oluşturun ve herhangi bir parametre veya Request Bodyile bağlanmak için REST API URI'sini sağlayın:

# Log in first with Connect-AzAccount if not using Cloud Shell

$azContext = Get-AzContext
$azProfile = [Microsoft.Azure.Commands.Common.Authentication.Abstractions.AzureRmProfileProvider]::Instance.Profile
$profileClient = New-Object -TypeName Microsoft.Azure.Commands.ResourceManager.Common.RMProfileClient -ArgumentList ($azProfile)
$token = $profileClient.AcquireAccessToken($azContext.Subscription.TenantId)
$authHeader = @{
    'Content-Type'='application/json'
    'Authorization'='Bearer ' + $token.AccessToken
}

# Invoke the REST API
$restUri = 'https://management.azure.com/subscriptions/{subscriptionId}?api-version=2020-01-01'
$response = Invoke-RestMethod -Uri $restUri -Method Get -Headers $authHeader

Aboneliğiniz hakkında bilgi almak için önceki $restUri değişkende değerini değiştirin{subscriptionId}. $response değişkeni, ConvertFrom-Json gibi cmdlet'lerle ayrıştırabileceğiniz cmdlet'in sonucunu Invoke-RestMethod tutar. REST API hizmet uç noktası bir Request Bodybekliyorsa parametresine -BodyInvoke-RestMethodJSON biçimli bir değişken sağlayın.

Şema oluşturma

Uyumluluk için standart desen tanımlamanın ilk adımı kullanılabilir durumdaki kaynaklardan bir şema oluşturmaktır. Şimdi aboneliğin rol ve ilke atamalarını yapılandırmak için MyBlueprint adlı bir şema oluşturalım. Ardından kaynak grubuna bir kaynak grubu, ARM şablonu ve rol ataması eklersiniz.

Not

REST API'yi kullanırken önce şema nesnesi oluşturulur. Parametreleri olan eklenecek her yapıt için, parametreleri ilk şemada önceden tanımlarsınız.

Her REST API URI'sinde aşağıdaki değişkenleri kendi değerlerinizle değiştirin:

  • {YourMG} - değerini yönetim grubunuzun kimliğiyle değiştirin.
  • {subscriptionId} - değerini abonelik kimliğiniz ile değiştirin.

Not

Ayrıca abonelik düzeyinde şemalar da oluşturabilirsiniz. Daha fazla bilgi için bkz . Abonelik örneğinde şema oluşturma.

  1. İlk şema nesnesini oluşturun. şema Request Body hakkındaki özellikleri, oluşturulacak kaynak gruplarını ve şema düzeyindeki parametrelerin tümünü içerir. Atama sırasında parametreleri ayarlarsınız ve bunlar sonraki adımlarda eklediğiniz yapıtlar tarafından kullanılır.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "properties": {
              "description": "This blueprint sets tag policy and role assignment on the subscription, creates a ResourceGroup, and deploys a resource template and role assignment to that ResourceGroup.",
              "targetScope": "subscription",
              "parameters": {
                  "storageAccountType": {
                      "type": "string",
                      "metadata": {
                          "displayName": "storage account type.",
                          "description": null
                      }
                  },
                  "tagName": {
                      "type": "string",
                      "metadata": {
                          "displayName": "The name of the tag to provide the policy assignment.",
                          "description": null
                      }
                  },
                  "tagValue": {
                      "type": "string",
                      "metadata": {
                          "displayName": "The value of the tag to provide the policy assignment.",
                          "description": null
                      }
                  },
                  "contributors": {
                      "type": "array",
                      "metadata": {
                          "description": "List of AAD object IDs that is assigned Contributor role at the subscription"
                      }
                  },
                  "owners": {
                      "type": "array",
                      "metadata": {
                          "description": "List of AAD object IDs that is assigned Owner role at the resource group"
                      }
                  }
              },
              "resourceGroups": {
                  "storageRG": {
                      "description": "Contains the resource template deployment and a role assignment."
                  }
              }
          }
      }
      
  2. Abonelikte bir rol ataması ekleyin. yapıt Request Body türünü tanımlar, özellikler rol tanımı tanımlayıcısına hizalanır ve asıl kimlikler bir değer dizisi olarak geçirilir. Aşağıdaki örnekte, belirtilen role verilen asıl kimlikler şema ataması sırasında ayarlanan bir parametreye yapılandırılır. Bu örnek, guid b24988ac-6180-42a0-ab88-20f7382dd24cdeğeriyle yerleşik rolü kullanırContributor.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleContributor?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "kind": "roleAssignment",
          "properties": {
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/b24988ac-6180-42a0-ab88-20f7382dd24c",
              "principalIds": "[parameters('contributors')]"
          }
      }
      
  3. Abonelikte bir ilke ataması ekleyin. yapıt Request Body türünü tanımlar, özellikler bir ilke veya girişim tanımına hizalanır ve ilke ataması şema ataması sırasında tanımlanan şema parametrelerini kullanacak şekilde yapılandırılır. Bu örnekte, guid 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71değeriyle birlikte yerleşik ilke kullanılırApply tag and its default value to resource groups.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyTags?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "kind": "policyAssignment",
          "properties": {
              "description": "Apply tag and its default value to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "[parameters('tagName')]"
                  },
                  "tagValue": {
                      "value": "[parameters('tagValue')]"
                  }
              }
          }
      }
      
  4. Abonelikte depolama etiketi (yeniden kullanarak storageAccountType_ parameter) için başka bir ilke ataması ekleyin. Bu ek ilke ataması yapıtı, şemada tanımlanan bir parametrenin birden fazla yapıt tarafından kullanılabileceğini gösterir. Örnekte, kaynak grubunda bir etiket ayarlamak için öğesini kullanırsınız storageAccountType . Bu değer, sonraki adımda oluşturduğunuz depolama hesabı hakkında bilgi sağlar. Bu örnekte, guid 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71değeriyle birlikte yerleşik ilke kullanılırApply tag and its default value to resource groups.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/policyStorageTags?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "kind": "policyAssignment",
          "properties": {
              "description": "Apply storage tag and the parameter also used by the template to resource groups",
              "policyDefinitionId": "/providers/Microsoft.Authorization/policyDefinitions/49c88fc8-6fd1-46fd-a676-f12d1d3a4c71",
              "parameters": {
                  "tagName": {
                      "value": "StorageType"
                  },
                  "tagValue": {
                      "value": "[parameters('storageAccountType')]"
                  }
              }
          }
      }
      
  5. Kaynak grubunun altına bir şablon ekleyin. Request Body ARM şablonu için, şablonun normal JSON bileşenini içerir ve ile properties.resourceGrouphedef kaynak grubunu tanımlar. Şablon ayrıca , tagNameve tagValue şema parametrelerini şablona geçirerek yeniden kullanırstorageAccountType. Şema parametreleri tanımlanarak properties.parametersşablonun kullanımına sunulur ve JSON şablonunun içinde değeri eklemek için anahtar-değer çifti kullanılır. Şema ve şablon parametre adları aynı olabilir, ancak burada her birinin şemadan şablon yapıtına nasıl geçtiğini göstermek için farklıdır.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/templateStorage?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "kind": "template",
          "properties": {
              "template": {
                  "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
                  "contentVersion": "1.0.0.0",
                  "parameters": {
                      "storageAccountTypeFromBP": {
                          "type": "string",
                          "defaultValue": "Standard_LRS",
                          "allowedValues": [
                              "Standard_LRS",
                              "Standard_GRS",
                              "Standard_ZRS",
                              "Premium_LRS"
                          ],
                          "metadata": {
                              "description": "Storage Account type"
                          }
                      },
                      "tagNameFromBP": {
                          "type": "string",
                          "defaultValue": "NotSet",
                          "metadata": {
                              "description": "Tag name from blueprint"
                          }
                      },
                      "tagValueFromBP": {
                          "type": "string",
                          "defaultValue": "NotSet",
                          "metadata": {
                              "description": "Tag value from blueprint"
                          }
                      }
                  },
                  "variables": {
                      "storageAccountName": "[concat(uniquestring(resourceGroup().id), 'standardsa')]"
                  },
                  "resources": [{
                      "type": "Microsoft.Storage/storageAccounts",
                      "name": "[variables('storageAccountName')]",
                      "apiVersion": "2016-01-01",
                      "tags": {
                         "[parameters('tagNameFromBP')]": "[parameters('tagValueFromBP')]"
                      },
                      "location": "[resourceGroups('storageRG').location]",
                      "sku": {
                          "name": "[parameters('storageAccountTypeFromBP')]"
                      },
                      "kind": "Storage",
                      "properties": {}
                  }],
                  "outputs": {
                      "storageAccountSku": {
                          "type": "string",
                          "value": "[variables('storageAccountName')]"
                      }
                  }
              },
              "resourceGroup": "storageRG",
              "parameters": {
                  "storageAccountTypeFromBP": {
                      "value": "[parameters('storageAccountType')]"
                  },
                  "tagNameFromBP": {
                      "value": "[parameters('tagName')]"
                  },
                  "tagValueFromBP": {
                      "value": "[parameters('tagValue')]"
                  }
              }
          }
      }
      
  6. Kaynak grubunun altına bir rol ataması ekleyin. Önceki rol ataması girdisine benzer şekilde, aşağıdaki örnek rol için tanım tanımlayıcısını Owner kullanır ve şemadan farklı bir parametre sağlar. Bu örnek, guid 8e3af657-a8ff-443c-a75c-2fe8c4bcb635değeriyle yerleşik rolü kullanırOwner.

    • REST API URI'si

      PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/artifacts/roleOwner?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "kind": "roleAssignment",
          "properties": {
              "resourceGroup": "storageRG",
              "roleDefinitionId": "/providers/Microsoft.Authorization/roleDefinitions/8e3af657-a8ff-443c-a75c-2fe8c4bcb635",
              "principalIds": "[parameters('owners')]"
          }
      }
      

Şemayı yayımlama

Artık yapıtları şemaya eklediğinize göre yayımlamanın zamanı geldi. Yayımlama, şemanın aboneliğe atanabilir olmasını sağlar.

  • REST API URI'si

    PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint/versions/{BlueprintVersion}?api-version=2018-11-01-preview
    

değeri {BlueprintVersion} harf, sayı ve kısa çizgilerden oluşan bir dizedir (boşluk veya başka özel karakter içermeyen). Maksimum uzunluk 20 karakterdir. gibi v20180622-135541benzersiz ve bilgilendiren bir şey kullanın.

Şema atama

REST API kullanarak bir şema yayımladıktan sonra bir aboneliğe atanabilir. Oluşturduğunuz şemayı yönetim grubu hiyerarşinizin altındaki aboneliklerden birine atayın. Şema bir aboneliğe kaydedildiyse, yalnızca bu aboneliğe atanabilir. Request Body atanacak şemayı belirtir ve şema tanımındaki herhangi bir kaynak grubuna ad ve konum sağlar. Request Body ayrıca şemada tanımlanan ve bir veya daha fazla ekli yapıt tarafından kullanılan tüm parametreleri sağlar.

Her REST API URI'sinde aşağıdaki değişkenleri kendi değerlerinizle değiştirin:

  • {tenantId} - değerini kiracı kimliğiniz ile değiştirin.
  • {YourMG} - değerini yönetim grubunuzun kimliğiyle değiştirin.
  • {subscriptionId} - değerini abonelik kimliğiniz ile değiştirin.
  1. Azure Blueprints hizmet sorumlusuna Owner hedef abonelikte rolü sağlayın. AppId statiktir ()f71766dc-90d9-4b7d-bd9d-4499c4331c3f ancak hizmet sorumlusu kimliği kiracıya göre değişir. Kiracınızın ayrıntılarını istemek için aşağıdaki REST API'yi kullanın. Farklı yetkilendirmeye sahip Azure Active Directory Graph API'sini kullanır.

    • REST API URI'si

      GET https://graph.windows.net/{tenantId}/servicePrincipals?api-version=1.6&$filter=appId eq 'f71766dc-90d9-4b7d-bd9d-4499c4331c3f'
      
  2. Bir aboneliğe atayarak şema dağıtımını çalıştırın. contributors ve owners parametreleri rol atamasının verilmesi için bir dizi objectIds sorumlu gerektirdiğinden, kendi kullanıcılarınız, gruplarınız veya hizmet sorumlularınız için içinde kullanmak üzere öğesini toplamak objectIds için Azure Active Directory Graph API'siniRequest Body kullanın.

    • REST API URI'si

      PUT https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
      
    • İstek Gövdesi

      {
          "properties": {
              "blueprintId": "/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint",
              "resourceGroups": {
                  "storageRG": {
                      "name": "StorageAccount",
                      "location": "eastus2"
                  }
              },
              "parameters": {
                  "storageAccountType": {
                      "value": "Standard_GRS"
                  },
                  "tagName": {
                      "value": "CostCenter"
                  },
                  "tagValue": {
                      "value": "ContosoIT"
                  },
                  "contributors": {
                      "value": [
                          "7be2f100-3af5-4c15-bcb7-27ee43784a1f",
                          "38833b56-194d-420b-90ce-cff578296714"
                      ]
                  },
                  "owners": {
                      "value": [
                          "44254d2b-a0c7-405f-959c-f829ee31c2e7",
                          "316deb5f-7187-4512-9dd4-21e7798b0ef9"
                      ]
                  }
              }
          },
          "identity": {
              "type": "systemAssigned"
          },
          "location": "westus"
      }
      
    • Kullanıcı tarafından atanan yönetilen kimlik

      Şema ataması, kullanıcı tarafından atanan yönetilen kimliği de kullanabilir. Bu durumda, identity istek gövdesinin bölümü aşağıdaki gibi değişir. ve {userIdentity} öğesini kaynak grubu adınızla ve sırasıyla kullanıcı tarafından atanan yönetilen kimliğinizin adıyla değiştirin{yourRG}.

      "identity": {
          "type": "userAssigned",
          "tenantId": "{tenantId}",
          "userAssignedIdentities": {
              "/subscriptions/{subscriptionId}/resourceGroups/{yourRG}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userIdentity}": {}
          }
      },
      

      Kullanıcı tarafından atanan yönetilen kimlik, şemayı atayan kullanıcının izinlere sahip olduğu herhangi bir abonelikte ve kaynak grubunda olabilir.

      Önemli

      Azure Blueprints, kullanıcı tarafından atanan yönetilen kimliği yönetmez. Kullanıcılar yeterli rol ve izin atamakla sorumludur, aksi takdirde şema ataması başarısız olur.

Kaynakları temizleme

Şemanın atamasını kaldırma

Bir şemayı abonelikten kaldırabilirsiniz. Kaldırma işlemi genellikle yapıt kaynaklarına ihtiyaç duyulmadığında gerçekleştirilir. Bir şema kaldırıldığında o şemanın bir parçası olarak atanan yapıtlar geride kalır. Bir şemanın atamasını kaldırmak için aşağıdaki REST API işlemini kullanın:

  • REST API URI'si

    DELETE https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Blueprint/blueprintAssignments/assignMyBlueprint?api-version=2018-11-01-preview
    

Şemayı silme

Bir şemanın kendisini kaldırmak için aşağıdaki REST API işlemini kullanın:

  • REST API URI'si

    DELETE https://management.azure.com/providers/Microsoft.Management/managementGroups/{YourMG}/providers/Microsoft.Blueprint/blueprints/MyBlueprint?api-version=2018-11-01-preview
    

Sonraki adımlar

Bu hızlı başlangıçta REST API ile bir şema oluşturdunuz, atadı ve kaldırdınız. Azure Blueprints hakkında daha fazla bilgi edinmek için şema yaşam döngüsü makalesine geçin.