Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Ten artykuł ułatwia programowe tworzenie subskrypcji platformy Azure dla umowy klienta firmy Microsoft przy użyciu najnowszych wersji interfejsu API. Jeśli nadal używasz starszej wersji zapoznawczej, zobacz Programowe tworzenie subskrypcji platformy Azure ze starszymi interfejsami API.
W tym artykule dowiesz się, jak programowo tworzyć subskrypcje za pomocą usługi Azure Resource Manager.
Jeśli musisz utworzyć subskrypcję MCA w ramach platformy Azure w dzierżawach Microsoft Entra, zobacz Programowe tworzenie subskrypcji MCA w dzierżawach Microsoft Entra.
Subskrypcja platformy Azure utworzona programowo podlega warunkom umowy, w ramach której nabyto usługi platformy Azure od firmy Microsoft lub autoryzowanego odsprzedawcy. Aby uzyskać więcej informacji, zobacz Microsoft Azure Legal Information (Informacje prawne dotyczące platformy Microsoft Azure).
Uwaga / Notatka
Zalecamy użycie modułu Azure Az PowerShell do interakcji z Azure. Aby rozpocząć, zobacz Instalowanie programu Azure PowerShell. Aby dowiedzieć się, jak przeprowadzić migrację do modułu Az programu PowerShell, zobacz Migrowanie programu Azure PowerShell z modułu AzureRM do modułu Az.
Nie można programowo tworzyć planów pomocy technicznej. Możesz kupić nowy plan pomocy technicznej lub uaktualnić go w witrynie Azure Portal. Przejdź do pozycji Pomoc i obsługa techniczna , a następnie w górnej części strony wybierz pozycję Wybierz odpowiedni plan pomocy technicznej.
Wymagania wstępne
Aby tworzyć subskrypcje, musisz mieć rolę właściciela, współautora lub twórcy subskrypcji platformy Azure w sekcji faktury albo rolę właściciela lub współautora w profilu rozliczeniowym lub na koncie rozliczeniowym. Możesz również nadać tę samą rolę głównej nazwie usługi (SPN). Aby uzyskać więcej informacji na temat ról i przypisywania do nich uprawnień, zobacz Role i zadania rozliczeniowe subskrypcji.
Jeśli używasz nazwy SPN do tworzenia subskrypcji, użyj identyfikatora ObjectId aplikacji Microsoft Entra Enterprise jako identyfikatora głównego przy użyciu programu Microsoft Graph PowerShell lub interfejsu wiersza polecenia platformy Azure.
Uwaga / Notatka
Uprawnienia różnią się między starszym interfejsem API (api-version=2018-03-01-preview) i najnowszym interfejsem API (api-version=2020-05-01). Chociaż możesz mieć rolę wystarczającą do korzystania ze starszego interfejsu API, może być konieczne, aby administrator EA przypisał ci rolę do korzystania z najnowszego interfejsu API.
Jeśli nie wiesz, czy masz dostęp do konta Umowy z Klientem Microsoft, zobacz Sprawdzanie dostępu do Umowy z Klientem Microsoft.
Odnajdowanie kont rozliczeniowych, do których masz dostęp
Wykonaj następujące żądanie, aby wyświetlić listę wszystkich kont rozliczeniowych.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
Odpowiedź interfejsu API będzie zawierała listę wszystkich kont rozliczeniowych, do których masz dostęp.
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx",
"name": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e: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"
}
]
}
Użyj właściwości displayName, aby określić konto rozliczeniowe, dla którego chcesz utworzyć subskrypcje. Upewnij się, że typ umowy konta to MicrosoftCustomerAgreement. Skopiuj wartość name tego konta. Przykładowo aby utworzyć subskrypcję dla konta rozliczeniowego Contoso, skopiuj wartość aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx. Wklej tę wartość w dogodnym miejscu, aby można było jej użyć w następnym kroku.
Znajdowanie profilów rozliczeniowych i sekcji faktur w celu utworzenia subskrypcji
Opłaty za subskrypcję znajdują się w sekcji faktury dotyczącej profilu rozliczeniowego. Użyj następującego interfejsu API, aby uzyskać listę profilów rozliczeniowych i sekcji faktur, na których masz uprawnienia do tworzenia subskrypcji platformy Azure.
Najpierw uzyskasz listę profilów rozliczeniowych w ramach konta rozliczeniowego, do którego masz dostęp (użyj elementu name , który został uzyskany w poprzednim kroku)
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingprofiles/?api-version=2020-05-01
Odpowiedź interfejsu API zawiera listę wszystkich profilów rozliczeniowych, w których masz dostęp do tworzenia subskrypcji:
{
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e: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"
}
]
}
Skopiuj id, aby zidentyfikować sekcje faktury znajdujące się poniżej profilu rozliczeniowego. Na przykład skopiuj /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx i wywołaj następujący interfejs API.
GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoicesections?api-version=2020-05-01
Odpowiedź
{
"totalCount": 1,
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e: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"
}
]
}
Użyj właściwości id, aby określić sekcję faktury, dla której chcesz utworzyć subskrypcje. Skopiuj cały ciąg. Na przykład /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx.
Tworzenie subskrypcji dla sekcji faktury
W poniższym przykładzie zostanie utworzona subskrypcja o nazwie Subskrypcja zespołu deweloperów dla sekcji faktury Rozwój. Subskrypcja jest rozliczana w profilu rozliczeniowym Contoso i jest wyświetlana w sekcji Rozwój na fakturze. Używasz skopiowanego zakresu rozliczeniowego z poprzedniego kroku: /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx.
Zastąp wartość sampleAlias symbolu zastępczego w razie potrzeby. Aby uzyskać więcej informacji na temat tych wywołań REST, zobacz Tworzenie i pobieranie.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
Ciało żądania
{
"properties":
{
"billingScope": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx",
"DisplayName": "Dev Team subscription",
"Workload": "Production"
}
}
Odpowiedź
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
Aby uzyskać stan żądania, możesz wykonać instrukcję GET dla tego samego adresu URL.
Żądanie
GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Odpowiedź
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Succeeded"
}
}
Stan w toku jest zwracany jako stan Accepted w ramach provisioningState.
Szablon ARM lub Bicep
W poprzedniej sekcji pokazano, jak utworzyć subskrypcję przy użyciu programu PowerShell, interfejsu wiersza polecenia lub interfejsu API REST. Jeśli musisz zautomatyzować tworzenie subskrypcji, rozważ użycie szablonu usługi Azure Resource Manager (szablonu usługi ARM) lub pliku Bicep.
Poniższy szablon tworzy subskrypcję. W polu billingScopepodaj identyfikator sekcji faktury. Subskrypcja jest tworzona w nadrzędnej grupie zarządzania. Po utworzeniu subskrypcji możesz przenieść ją do innej grupy zarządzania.
{
"$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": {}
}
Możesz też użyć pliku Bicep, aby utworzyć subskrypcję.
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
}
}
Wdróż szablon na poziomie grupy zarządzania. W poniższych przykładach pokazano wdrażanie szablonu ARM w formacie JSON, ale można zamiast tego wdrożyć plik Bicep.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Wraz z treścią żądania:
{
"location": "eastus",
"properties": {
"templateLink": {
"uri": "http://mystorageaccount.blob.core.windows.net/templates/template.json"
},
"parameters": {
"subscriptionAliasName": {
"value": "sampleAlias"
},
"billingScope": {
"value": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx/invoiceSections/SH3V-xxxx-xxx-xxx"
}
},
"mode": "Incremental"
}
}
Aby przenieść subskrypcję do nowej grupy zarządzania, użyj następującego szablonu usługi ARM.
{
"$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": {}
}
Lub użyj następującego pliku Bicep.
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}'
}
Dalsze kroki
- Po utworzeniu subskrypcji możesz przyznać tę możliwość innym użytkownikom i jednostkom usługi. Aby uzyskać więcej informacji, zobacz Udzielanie dostępu do tworzenia subskrypcji Platformy Azure Enterprise (wersja zapoznawcza).
- Aby uzyskać więcej informacji na temat zarządzania dużą liczbą subskrypcji przy użyciu grup zarządzania, zobacz Organizowanie zasobów przy użyciu grup zarządzania platformy Azure.
- Aby zmienić grupę zarządzania dla subskrypcji, zobacz Przenoszenie subskrypcji.
- Aby uzyskać zaawansowane scenariusze tworzenia subskrypcji przy użyciu interfejsu API REST, zobacz Alias — Tworzenie.