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

Önemli

Azure Blueprints (Önizleme) 31 Ocak 2027'de kullanımdan kaldırılacak ve 31 Temmuz 2026'da aşamalı kullanımdan kaldırılacaktır. Mevcut şema tanımlarınızı ve atamalarınızı Dağıtım Yığınlarına (önerilen) ve Şablon Belirtimlerine geçirin. Şema yapıtları, dağıtım yığınlarını tanımlamak için kullanılan ARM JSON şablonlarına veya Bicep dosyalarına dönüştürülür. Aşamalı zaman çizelgesinin tamamı, etkiler ve SSS için Azure Blueprints'in kullanımdan kaldırılması sayfasına veya https://aka.ms/AzureBlueprintsRetirement bakın. 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. Azure Cloud Shell için Deneyin örneğini gösteren ekran görüntüsü.
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. Azure Cloud Shell'i başlatma düğmesi.
Azure portalının sağ üst kısmındaki menü çubuğunda Cloud Shell düğmesini seçin. Azure portalında Cloud Shell düğmesini gösteren ekran görüntüsü

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, macOS'te ise Cmd+Shift+V tuşlarına basarak 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ıç, Azure Blueprints ile çalışırken yol göstermek için bu kavramlardan yararlanır ve bunlara ilişkin temel düzeyde bilgi sahibi olunduğunu varsayar. 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’da kimlik doğrulamak için örnek bir üstbilgi 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şkendeki {subscriptionId} ifadesini değiştirin. $response değişkeni, Invoke-RestMethod cmdlet'inin sonucunu içerir; bu sonucu ConvertFrom-Json gibi cmdlet'lerle ayrıştırabilirsiniz. REST API hizmet uç noktası bir Request Body bekliyorsa, Invoke-RestMethod'nin -Body parametresine JSON biçiminde 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} - Yönetim grubunuzun kimliğiyle değiştirin.
  • {subscriptionId} - Abonelik kimliğinizle değiştirin.

Not

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

  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’si b24988ac-6180-42a0-ab88-20f7382dd24c olan yerleşik Contributor rolünü kullanır.

    • 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’si 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 olan yerleşik Apply tag and its default value to resource groups ilkesi kullanılır.

    • 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. Depolama etiketi için abonelik düzeyinde, storageAccountType_ parameter öğesini yeniden kullanarak 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 grubuna bir etiket ayarlamak için storageAccountType öğesini kullanırsınız. Bu değer, sonraki adımda oluşturduğunuz depolama hesabı hakkında bilgi sağlar. Bu örnekte, GUID'si 49c88fc8-6fd1-46fd-a676-f12d1d3a4c71 olan yerleşik Apply tag and its default value to resource groups ilkesi kullanılır.

    • 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 storageAccountType, tagName ve tagValue şema parametrelerinin her birini şablona geçirerek bunları yeniden kullanır. Ş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, 8e3af657-a8ff-443c-a75c-2fe8c4bcb635 GUID’sine sahip Owner yerleşik rolünü kullanır.

    • 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 artefaktları taslağa eklediğinize göre, onu yayımlama 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.

Bir taslak ata

REST API'yi kullanarak bir taslak yayımladıktan sonra, bu taslak 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} - Kiracı kimliğinizle değiştirin.
  • {YourMG} - Yönetim grubunuzun kimliğiyle değiştirin.
  • {subscriptionId} - Abonelik kimliğinizle 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 verileceği asıllara ait bir objectIds dizisi gerektirdiğinden, kendi kullanıcılarınız, gruplarınız veya hizmet sorumlularınız için Request Body içinde kullanmak üzere objectIds toplamak amacıyla Azure Active Directory Graph API 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. {yourRG} ve {userIdentity} öğelerini sırasıyla kaynak grubu adınız ve kullanıcı tarafından atanan yönetilen kimliğinizin adı ile değiştirin.

      "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.