Membuat langganan Azure secara terprogram untuk Perjanjian Pelanggan Microsoft dengan API terbaru

Artikel ini membantu Anda membuat langganan Azure secara terprogram untuk Perjanjian Pelanggan Microsoft menggunakan versi API terbaru. Jika Anda masih menggunakan versi pratinjau yang lebih lama, lihat Membuat langganan Azure secara terprogram dengan API warisan.

Dalam artikel ini, Anda mempelajari cara membuat langganan secara terprogram menggunakan Azure Resource Manager.

Jika Anda perlu membuat langganan Azure MCA di seluruh penyewa Microsoft Entra, lihat Membuat langganan MCA secara terprogram di seluruh penyewa Microsoft Entra.

Saat Anda membuat langganan Azure secara terprogram, langganan tersebut diatur oleh perjanjian, dan berdasarkan perjanjian tersebut Anda memperoleh layanan Azure dari Microsoft atau reseller resmi. Untuk informasi selengkapnya, lihat Informasi Hukum Microsoft Azure.

Catatan

Sebaiknya Anda menggunakan modul Azure Az PowerShell untuk berinteraksi dengan Azure. Lihat Menginstal Azure PowerShell untuk memulai. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Anda tidak dapat membuat paket dukungan secara terprogram. Anda dapat membeli paket dukungan baru atau meningkatkannya di portal Azure. Navigasi ke Bantuan + dukungan lalu di bagian atas halaman, pilih Pilih paket dukungan yang tepat.

Prasyarat

Anda harus memiliki peran pemilik, kontributor, atau pembuat langganan Azure di bagian faktur, atau peran pemilik atau kontributor di profil tagihan, atau akun tagihan untuk membuat langganan. Anda juga dapat memberikan peran yang sama kepada nama prinsipal layanan(SPN). Untuk informasi selengkapnya tentang peran dan penetapan izin kepada mereka, lihat Peran dan tugas tagihan langganan.

Jika Anda menggunakan SPN untuk membuat langganan, gunakan ObjectId aplikasi Microsoft Entra Enterprise sebagai ID Utama menggunakan Microsoft Graph PowerShell atau Azure CLI.

Catatan

Izin berbeda antara API warisan (api-version=2018-03-01-preview) dan API terbaru (api-version=2020-05-01). Meskipun Anda mungkin memiliki peran yang cukup untuk menggunakan API warisan, Anda mungkin memerlukan admin EA untuk mendelegasikan Peran Anda untuk menggunakan API terbaru.

Jika tidak tahu apakah Anda memiliki akses ke akun Perjanjian Pelanggan Microsoft, lihat Memeriksa akses ke Perjanjian Pelanggan Microsoft.

Menemukan akun penagihan yang dapat Anda akses

Buat permintaan berikut untuk mencantumkan semua akun penagihan.

GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01

Respons API mencantumkan akun penagihan yang dapat Anda akses.

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "name": "5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "properties": {
        "accountStatus": "Active",
        "accountType": "Enterprise",
        "agreementType": "MicrosoftCustomerAgreement",
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "hasReadAccess": false
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

Gunakan properti displayName untuk mengidentifikasi akun penagihan yang ingin Anda buat langganannya. Pastikan, agreementType akun adalah MicrosoftCustomerAgreement. Salin name akun tersebut. Misalnya, untuk membuat langganan untuk akun penagihan Contoso, salin 5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx. Tempelkan nilai di suatu tempat sehingga Anda dapat menggunakannya di langkah berikutnya.

Menemukan profil tagihan & bagian faktur untuk membuat langganan

Biaya untuk langganan Anda muncul di bagian faktur profil tagihan. Gunakan API berikut untuk mendapatkan daftar profil tagihan dan bagian faktur tempat Anda memiliki izin untuk membuat langganan Azure.

Pertama, Anda akan mendapatkan daftar profil tagihan di akun tagihan yang dapat Anda akses (Gunakan name yang Anda dapatkan dari langkah sebelumnya)

GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingprofiles/?api-version=2020-05-01

Respons API mencantumkan semua profil tagihan yang aksesnya Anda miliki untuk membuat langganan:

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx",
      "name": "AW4F-xxxx-xxx-xxx",
      "properties": {
        "billingRelationshipType": "Direct",
        "billTo": {
          "addressLine1": "One Microsoft Way",
          "city": "Redmond",
          "companyName": "Contoso",
          "country": "US",
          "email": "kenny@contoso.com",
          "phoneNumber": "425xxxxxxx",
          "postalCode": "98052",
          "region": "WA"
        },
        "currency": "USD",
        "displayName": "Contoso Billing Profile",
        "enabledAzurePlans": [
          {
            "skuId": "0002",
            "skuDescription": "Microsoft Azure Plan for DevTest"
          },
          {
            "skuId": "0001",
            "skuDescription": "Microsoft Azure Plan"
          }
        ],
        "hasReadAccess": true,
        "invoiceDay": 5,
        "invoiceEmailOptIn": false,
        "invoiceSections": {
          "hasMoreResults": false
        },
        "poNumber": "001",
        "spendingLimit": "Off",
        "status": "Active",
        "systemId": "AW4F-xxxx-xxx-xxx",
        "targetClouds": []
      },
      "type": "Microsoft.Billing/billingAccounts/billingProfiles"
    }
  ]
}

Salin id untuk selanjutnya mengidentifikasi bagian faktur di bawah profil tagihan. Misalnya, salin /providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx dan panggil API berikut.

GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoicesections?api-version=2020-05-01

Respons

{
  "totalCount": 1,
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx",
      "name": "SH3V-xxxx-xxx-xxx",
      "properties": {
        "displayName": "Development",
        "state": "Active",
        "systemId": "SH3V-xxxx-xxx-xxx"
      },
      "type": "Microsoft.Billing/billingAccounts/billingProfiles/invoiceSections"
    }
  ]
}

Gunakan properti id untuk mengidentifikasi bagian faktur yang ingin Anda buat langganannya. Salin seluruh untai (karakter). Contohnya,/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx.

Membuat langganan untuk bagian faktur

Contoh berikut membuat langganan bernama Dev Team subscription untuk bagian faktur Pengembangan. Langganan ditagihkan ke profil tagihan Profil Tagihan Contoso dan muncul di bagian Pengembangan di fakturnya. Anda menggunakan cakupan tagihan yang disalin dari langkah sebelumnya: /providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx.

PUT  https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01

Isi permintaan

{
  "properties":
    {
        "billingScope": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx",
        "DisplayName": "Dev Team subscription",
        "Workload": "Production"
    }
}

Respons

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Accepted"
  }
}

Anda dapat melakukan GET di URL yang sama untuk mendapatkan status permintaan.

Permintaan

GET https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2021-10-01

Respons

{
  "id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
  "name": "sampleAlias",
  "type": "Microsoft.Subscription/aliases",
  "properties": {
    "subscriptionId": "b5bab918-e8a9-4c34-a2e2-ebc1b75b9d74",
    "provisioningState": "Succeeded"
  }
}

Status sedang berlangsung dikembalikan sebagai status Accepted di provisioningState.

Menggunakan templat ARM atau Bicep

Bagian sebelumnya menunjukkan cara membuat langganan dengan PowerShell, CLI, atau REST API. Jika Anda perlu mengotomatiskan pembuatan langganan, pertimbangkan untuk menggunakan templat Azure Resource Manager (templat ARM) atau file Bicep.

Templat berikut membuat langganan. Untuk billingScope, berikan ID bagian faktur. Langganan dibuat di grup manajemen root. Setelah membuat langganan, Anda dapat memindahkannya ke grup manajemen lain.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "subscriptionAliasName": {
            "type": "string",
            "metadata": {
                "description": "Provide a name for the alias. This name will also be the display name of the subscription."
            }
        },
        "billingScope": {
            "type": "string",
            "metadata": {
                "description": "Provide the full resource ID of billing scope to use for subscription creation."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "name": "[parameters('subscriptionAliasName')]",
            "type": "Microsoft.Subscription/aliases",
            "apiVersion": "2021-10-01",
            "properties": {
                "workLoad": "Production",
                "displayName": "[parameters('subscriptionAliasName')]",
                "billingScope": "[parameters('billingScope')]"
            }
        }
    ],
    "outputs": {}
}

Atau, gunakan file Bicep untuk membuat langganan.

targetScope = 'managementGroup'

@description('Provide a name for the alias. This name will also be the display name of the subscription.')
param subscriptionAliasName string

@description('Provide the full resource ID of billing scope to use for subscription creation.')
param billingScope string

resource subscriptionAlias 'Microsoft.Subscription/aliases@2021-10-01' = {
  scope: tenant()
  name: subscriptionAliasName
  properties: {
    workload: 'Production'
    displayName: subscriptionAliasName
    billingScope: billingScope
  }
}

Sebarkan templat di tingkat grup manajemen. Contoh berikut menunjukkan penyebaran templat JSON ARM, tetapi Anda dapat menyebarkan file Bicep sebagai gantinya.

PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01

Dengan isi permintaan:

{
  "location": "eastus",
  "properties": {
    "templateLink": {
      "uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
    },
    "parameters": {
      "subscriptionAliasName": {
        "value": "sampleAlias"
      },
      "billingScope": {
        "value": "/providers/Microsoft.Billing/billingAccounts/5e98e158-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx"
      }
    },
    "mode": "Incremental"
  }
}

Untuk memindahkan langganan ke grup manajemen baru, gunakan templat ARM berikut.

{
    "$schema": "https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "targetMgId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the management group that you want to move the subscription to."
            }
        },
        "subscriptionId": {
            "type": "string",
            "metadata": {
                "description": "Provide the ID of the existing subscription to move."
            }
        }
    },
    "resources": [
        {
            "scope": "/",
            "type": "Microsoft.Management/managementGroups/subscriptions",
            "apiVersion": "2020-05-01",
            "name": "[concat(parameters('targetMgId'), '/', parameters('subscriptionId'))]",
            "properties": {
            }
        }
    ],
    "outputs": {}
}

Atau, file Bicep berikut.

targetScope = 'managementGroup'

@description('Provide the ID of the management group that you want to move the subscription to.')
param targetMgId string

@description('Provide the ID of the existing subscription to move.')
param subscriptionId string

resource subToMG 'Microsoft.Management/managementGroups/subscriptions@2020-05-01' = {
  scope: tenant()
  name: '${targetMgId}/${subscriptionId}'
}

Langkah berikutnya