Membuat langganan Perjanjian Enterprise Azure dengan API terbaru secara terprogram

Artikel ini membantu Anda membuat langganan Perjanjian Enterprise (Enterprise Agreement/EA) Azure secara terprogram untuk akun penagihan EA menggunakan versi API terbaru. Jika Anda masih menggunakan versi pratinjau yang lebih lama, lihat API warisan langganan Azure secara terprogram.

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

Pengguna harus memiliki peran Administrator Perusahaan atau peran Pemilik pada Akun Pendaftaran untuk membuat langganan. Ada dua cara untuk mendapatkan peran Pemilik pada Akun Pendaftaran:

Untuk menggunakan perwakilan layanan untuk membuat langganan EA, Pemilik Akun Pendaftaran harus memberi perwakilan layanan tersebut kemampuan untuk membuat langganan.

Saat menggunakan perwakilan layanan untuk membuat langganan, gunakan ObjectId aplikasi Microsoft Entra Enterprise sebagai ID Perwakilan Layanan menggunakan Microsoft Graph PowerShell atau Azure CLI. Anda juga dapat menggunakan langkah-langkah di Menemukan perwakilan layanan dan ID penyewa Anda untuk menemukan ID objek di portal Azure untuk perwakilan layanan yang ada.

Untuk informasi selengkapnya tentang permintaan API penetapan peran EA, lihat Penetapan peran pada nama prinsipal layanan Perjanjian Enterprise. Artikel ini menyertakan daftar peran (dan ID definisi peran) yang dapat ditetapkan ke perwakilan layanan.

Catatan

  • Pastikan Anda menggunakan versi API yang benar untuk memberikan izin akses kepada pemilik akun pendaftaran. Untuk artikel ini dan untuk API yang didokumentasikan di dalamnya, gunakan API pratinjau 2019-10-01.
  • Jika Anda bermigrasi untuk menggunakan API yang lebih baru, konfigurasi sebelumnya yang dibuat dengan versi 2015-07-01 tidak secara otomatis dikonversi untuk digunakan dengan API yang lebih baru.
  • Informasi Akun Pendaftaran hanya terlihat ketika peran pengguna adalah Pemilik Akun. Ketika pengguna memiliki beberapa peran, API menggunakan peran pengguna yang paling tidak ketat.

Menemukan akun yang dapat Anda akses

Setelah Anda ditambahkan ke Akun Pendaftaran yang terkait dengan Pemilik Akun, Azure menggunakan hubungan akun-ke-pendaftaran untuk menentukan tempat untuk menagih biaya langganan. Semua langganan yang dibuat di bawah akun ditagih ke pendaftaran EA tempat akun tersebut berada. Untuk membuat langganan, Anda harus meneruskan nilai tentang akun pendaftaran dan perwakilan pengguna untuk memiliki langganan.

Untuk menjalankan perintah berikut, Anda harus masuk ke direktori beranda Pemilik Akun, yang merupakan direktori tempat langganan dibuat secara default.

Minta untuk mencantumkan semua akun pendaftaran yang dapat Anda akses:

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

Respons API mencantumkan semua akun pendaftaran yang dapat Anda akses:

{
  "value": [
    {
      "id": "/providers/Microsoft.Billing/billingAccounts/1234567",
      "name": "1234567",
      "properties": {
        "accountStatus": "Unknown",
        "accountType": "Enterprise",
        "agreementType": "EnterpriseAgreement",
        "soldTo": {
          "companyName": "Contoso",
          "country": "US "
        },
        "billingProfiles": {
          "hasMoreResults": false
        },
        "displayName": "Contoso",
        "enrollmentAccounts": [
          {
            "id": "/providers/Microsoft.Billing/billingAccounts/1234567/enrollmentAccounts/7654321",
            "name": "7654321",
            "type": "Microsoft.Billing/enrollmentAccounts",
            "properties": {
              "accountName": "Contoso",
              "accountOwnerEmail": "kenny@contoso.onmicrosoft.com",
              "costCenter": "Test",
              "isDevTest": false
            }
          }
        ],
        "hasReadAccess": false
      },
      "type": "Microsoft.Billing/billingAccounts"
    }
  ]
}

Nilai untuk cakupan penagihan dan id merupakan hal yang sama. id untuk akun pendaftaran Anda adalah cakupan tagihan tempat permintaan langganan dimulai. Penting untuk mengetahui ID karena ini adalah parameter yang diperlukan yang Anda gunakan nanti di artikel untuk membuat langganan.

Membuat langganan di bawah akun pendaftaran tertentu

Contoh berikut membuat langganan bernama Langganan Tim Dev di akun pendaftaran yang dipilih di langkah sebelumnya.

Dengan menggunakan salah satu metode berikut, Anda akan membuat nama alias langganan. Kami merekomendasikan bahwa saat Anda membuat nama alias, Anda:

  • Menggunakan karakter alfanumerik dan tanda hubung
  • Memulai dengan huruf dan mengakhiri dengan karakter alfanumerik
  • Tidak menggunakan titik

Alias ​​digunakan untuk substitusi sederhana dari string yang ditentukan pengguna, bukan GUID berlangganan. Dengan kata lain, Anda dapat menggunakannya sebagai pintasan. Anda dapat mempelajari selengkapnya tentang alias di Alias - Buat. Dalam contoh berikut, sampleAlias dibuat tetapi Anda dapat menggunakan string apa pun yang Anda suka.

Jika Anda memiliki beberapa peran pengguna selain peran Pemilik Akun, maka Anda harus mengambil ID akun dari portal Azure. Kemudian Anda dapat menggunakan ID untuk membuat langganan secara terprogram.

Panggil PUT API untuk membuat permintaan/alias pembuatan langganan.

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

Dalam isi permintaan, berikan sebagai billingScopeid dari salah satu enrollmentAccounts Anda.

{
  "properties": {
        "billingScope": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321",
        "DisplayName": "Dev Team Subscription", //Subscription Display Name
        "Workload": "Production"
  }
}

Nilai yang diperbolehkan Workload adalah Production dan DevTest.

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.

Membuat langganan dalam pendaftaran yang berbeda

Dengan menggunakan langganan Alias REST API, Anda dapat menggunakan subscriptionTenantId parameter dalam isi permintaan. Perwakilan layanan Anda harus mendapatkan token dari penyewa rumah untuk membuat langganan. Setelah membuat perwakilan layanan, Anda mendapatkan token dari subscriptionTenantId dan menerima transfer menggunakan API Terima Kepemilikan .

Untuk informasi selengkapnya tentang membuat langganan EA di penyewa lain, lihat Membuat langganan di penyewa lain dan melihat permintaan transfer.

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 akun pendaftaran. 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/1234567/enrollmentAccounts/7654321"
      }
    },
    "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}'
}

Batasan API pembuatan langganan Azure Enterprise

  • Hanya langganan Azure Enterprise yang dibuat menggunakan API.
  • Ada batasan 5000 langganan per akun pendaftaran. Setelah itu, lebih banyak langganan untuk akun hanya dapat dibuat di portal Microsoft Azure. Untuk membuat lebih banyak langganan melalui API, buat akun pendaftaran lain. Langganan yang dibatalkan, dihapus, dan ditransfer dihitung dalam batasan 5000.
  • Pengguna yang bukan Pemilik Akun, tetapi ditambahkan ke akun pendaftaran melalui Azure RBAC, tidak dapat membuat langganan di portal Microsoft Azure.

Langkah berikutnya