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.

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 mengetahui informasi selengkapnya, lihat Informasi Hukum Microsoft Azure.

Catatan

Artikel ini menggunakan modul Azure Az PowerShell, yang merupakan modul PowerShell yang direkomendasikan untuk berinteraksi dengan Azure. Untuk mulai menggunakan modul Az PowerShell, lihat Menginstal Azure PowerShell. Untuk mempelajari cara bermigrasi ke modul Az PowerShell, lihat Memigrasikan Azure PowerShell dari AzureRM ke Az.

Prasyarat

Anda harus memiliki peran Admin Global atau Agen Admin di akun penyedia solusi cloud organisasi Anda untuk membuat langganan untuk akun penagihan. Untuk mengetahui informasi selengkapnya, lihat Pusat Mitra - Menetapkan peran dan izin pengguna.

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

Contoh berikut menggunakan REST API. Saat ini, PowerShell dan Azure CLI tidak didukung.

Menemukan akun penagihan yang dapat Anda akses

Buat permintaan berikut untuk mencantumkan semua akun penagihan yang dapat diakses.

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

Respons API mencantumkan akun penagihan.

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "name": "99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
      "properties": {
        "accountStatus": "Active",
        "accountType": "Partner",
        "agreementType": "MicrosoftPartnerAgreement",
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "hasReadAccess": true
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

Gunakan properti displayName untuk mengidentifikasi akun penagihan yang ingin Anda buat langganannya. Pastikan, agreementType akun adalah MicrosoftPartnerAgreement. Salin name untuk akun tersebut. Misalnya, untuk membuat langganan untuk akun penagihan Contoso, salin 99a13315-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 pelanggan yang memiliki paket Azure

Buat permintaan berikut, dengan name yang disalin dari langkah pertama (99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx) untuk mencantumkan semua pelanggan di akun penagihan yang dapat Anda buat langganan Azure-nya.

GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers?api-version=2020-05-01

Respons API mencantumkan pelanggan di akun penagihan dengan paket Azure. Anda dapat membuat langganan untuk pelanggan ini.

{
  "totalCount": 2,
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "name": "7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "properties": {
        "billingProfileDisplayName": "Fabrikam toys Billing Profile",
        "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
        "displayName": "Fabrikam toys"
      },
      "type": "Microsoft.Billing/billingAccounts/customers"
    },
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "name": "acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "properties": {
        "billingProfileDisplayName": "Contoso toys Billing Profile",
        "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
        "displayName": "Contoso toys"
      },
      "type": "Microsoft.Billing/billingAccounts/customers"
    }
  ]
}

Gunakan properti displayName untuk mengidentifikasi pelanggan yang ingin Anda buat langganannya. Salin id untuk pelanggan. Misalnya, untuk membuat langganan untuk Fabrikam toys, salin /providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/7d15644f-xxxx-xxxx-xxxx-xxxxxxxxxxxx. Tempelkan nilai di suatu tempat untuk digunakan di langkah-langkah selanjutnya.

Mendapatkan reseller untuk pelanggan

Bagian ini bersifat opsional hanya untuk Penyedia tidak langsung.

Jika Anda adalah Penyedia tidak langsung di model dua tingkat CSP, Anda dapat menentukan reseller saat membuat langganan untuk pelanggan.

Buat permintaan berikut, dengan id yang disalin dari langkah kedua (/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx) untuk mencantumkan semua reseller yang tersedia bagi pelanggan.

GET "https://management.azure.com/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx?$expand=resellers&api-version=2020-05-01"

Respons API mencantumkan reseller untuk pelanggan:

{
  "value": [{
  "id": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "name": "2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
  "type": "Microsoft.Billing/billingAccounts/customers",
  "properties": {
    "billingProfileDisplayName": "Fabrikam toys Billing Profile",
    "billingProfileId": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
    "displayName": "Fabrikam toys",
    "resellers": [
      {
        "resellerId": "3xxxxx",
        "description": "Wingtip"
      }
    ]
  }
}]
}

Gunakan properti description untuk mengidentifikasi reseller yang akan dikaitkan dengan langganan. Salin resellerId untuk reseller. Misalnya, untuk mengaitkan Wingtip, salin 3xxxxx. Tempelkan nilai di suatu tempat sehingga Anda dapat menggunakannya di langkah berikutnya.

Membuat langganan untuk pelanggan

Contoh berikut membuat langganan bernama Langganan Tim Dev untuk mainan Fabrikam dan mengaitkan penjual Wingtip ke langganan. Anda menggunakan cakupan tagihan yang disalin dari langkah sebelumnya: /providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx.

PUT  https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2020-09-01

Isi permintaan

{
  "properties":
    {
	    "billingScope": "/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
	    "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.

Minta

GET https://management.azure.com/providers/Microsoft.Subscription/aliases/sampleAlias?api-version=2020-09-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 ditampilkan sebagai status Accepted di bawah provisioningState.

Berikan resellerId opsional yang disalin dari langkah kedua di isi permintaan API.

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 ARM berikut membuat langganan. Untuk billingScope, berikan ID pelanggan. 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": "2020-09-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@2020-09-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/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
      }
    },
    "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