Programmatisch Azure-abonnementen voor een Microsoft-klantovereenkomst maken met de nieuwste API's
Dit artikel helpt u programmatisch Azure-abonnementen voor een Microsoft-klantovereenkomst te maken met behulp van de meest recente API-versies. Als u nog de oudere preview-versie gebruikt, raadpleegt u Programmatisch Azure-abonnementen maken met verouderde API's.
In dit artikel leert u hoe u via programmatisch abonnementen kunt maken met behulp van Azure Resource Manager.
Als u een Azure MCA-abonnement wilt maken in Microsoft Entra-tenants, raadpleegt u Programmatisch MCA-abonnementen maken in Microsoft Entra-tenants.
Wanneer u programmatisch een Azure-abonnement maakt, wordt dat abonnement beheerd op basis van de overeenkomst waaronder u Azure-services van Microsoft of een geautoriseerde wederverkoper hebt verkregen. Zie de Juridische informatie van Microsoft Azure voor meer informatie.
Notitie
Het wordt aanbevolen de Azure Az PowerShell-module te gebruiken om te communiceren met Azure. Zie Azure PowerShell installeren om aan de slag te gaan. Raadpleeg Azure PowerShell migreren van AzureRM naar Az om te leren hoe u naar de Azure PowerShell-module migreert.
U kunt geen ondersteuningsplannen programmatisch maken. U kunt een nieuw ondersteuningsplan kopen of een upgrade uitvoeren in Azure Portal. Navigeer naar Help en ondersteuning en selecteer vervolgens boven aan de pagina Het juiste ondersteuningsplan kiezen.
Vereisten
U moet de rol van eigenaar, bijdrager of Azure-abonnementsmaker op een factuursectie of die van eigenaar of bijdrager op een factureringsprofiel of factureringsrekening hebben om abonnementen te maken. U kunt dezelfde rol ook aan een SPN (Service Principal Name) geven. Zie Rollen en taken voor abonnementsfacturering voor meer informatie over rollen en het toewijzen van machtigingen.
Als u een SPN gebruikt om abonnementen te maken, gebruikt u de ObjectId van de Microsoft Entra Enterprise-toepassing als principal-id met behulp van Microsoft Graph PowerShell of Azure CLI.
Notitie
Machtigingen verschillen tussen de verouderde API (api-version=2018-03-01-preview) en de nieuwste API (api-version=2020-05-01). Hoewel u mogelijk een rol hebt die voldoende is om de verouderde API te gebruiken, hebt u mogelijk een EA-beheerder nodig om u een rol toe te wijzen voor het gebruik van de nieuwste API.
Raadpleeg Toegang tot een Microsoft-klantovereenkomst controleren als u niet weet of u toegang hebt tot een Microsoft-klantovereenkomstaccount.
Factureringsrekeningen zoeken waartoe u toegang hebt
Doe de volgende aanvraag om alle factureringsrekeningen weer te geven.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
De API-respons vermeldt alle factureringsrekeningen waartoe u toegang hebt.
{
"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"
}
]
}
Gebruik de eigenschap displayName
om de factureringsrekening te identificeren waarvoor u abonnementen wilt maken. Zorg ervoor dat agreementType van het account gelijk is aan MicrosoftCustomerAgreement. Kopieer de name
van het account. Kopieer bijvoorbeeld aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
om een abonnement te maken voor het factureringsaccount Contoso
. Plak de waarde ergens, zodat u deze in de volgende stap kunt gebruiken.
Factureringsprofielen en factuursecties zoeken om abonnementen te maken
De kosten voor uw abonnement worden weergegeven in een sectie van de factuur van het factureringsprofiel. Gebruik de volgende API om de lijst met factureringsprofielen en factuursecties op te halen waarvoor u gemachtigd bent om Azure-abonnementen te maken.
Eerst krijgt u de lijst met factureringsprofielen onder het factureringsaccount waartoe u toegang hebt (gebruik de name
factureringsprofielen die u in de vorige stap hebt gekregen)
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
In de API-respons worden alle factureringsprofielen vermeld waarvoor u toegang hebt om abonnementen te maken:
{
"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"
}
]
}
Kopieer de id
om vervolgens de factuursecties onder het factureringsprofiel te identificeren. Kopieer bijvoorbeeld /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx
en roep de volgende API aan.
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
Respons
{
"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"
}
]
}
Gebruik de eigenschap id
om de factuursectie te identificeren waarvoor u abonnementen wilt maken. Kopieer de gehele tekenreeks. Bijvoorbeeld: /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
.
Een abonnement voor een factuursectie maken
In het volgende voorbeeld wordt een abonnement met de naam Dev Team subscription gemaakt voor de factuursectie Development. Het abonnement wordt gefactureerd voor het factureringsprofiel van Contoso Billing Profile en wordt weergegeven in de sectie Development van de factuur. U gebruikt het gekopieerde factureringsbereik uit de vorige stap: /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
.
Vervang indien nodig de tijdelijke aanduidingswaarde sampleAlias
. Zie Maken en ophalen voor meer informatie over deze REST-aanroepen.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
Aanvraagtekst
{
"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"
}
}
De respons
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
U kunt een GET uitvoeren op dezelfde URL om de status van de aanvraag op te halen.
Aanvragen
GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Response
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Succeeded"
}
}
Een 'in voortgang'-status wordt geretourneerd als een Accepted
-status onder provisioningState
.
ARM-sjabloon of Bicep gebruiken
In de vorige sectie hebt u gezien hoe u een abonnement maakt met PowerShell, CLI of REST API. Als u het maken van abonnementen wilt automatiseren, kunt u overwegen om een ARM-sjabloon (Azure Resource Manager) of Bicep-bestand te gebruiken.
Met de volgende sjabloon maakt u een abonnement. Geef billingScope
de factuursectie-id op. Het abonnement wordt gemaakt in de hoofdbeheergroep. Nadat u het abonnement hebt gemaakt, kunt u het verplaatsen naar een andere beheergroep.
{
"$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": {}
}
U kunt ook een Bicep-bestand gebruiken om het abonnement te maken.
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
}
}
Implementeer de sjabloon op het niveau van de beheergroep. In de volgende voorbeelden ziet u hoe u de JSON ARM-sjabloon implementeert, maar u kunt in plaats daarvan een Bicep-bestand implementeren.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Met een aanvraagbody:
{
"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"
}
}
Als u een abonnement wilt verplaatsen naar een nieuwe beheergroep, gebruikt u de volgende ARM-sjabloon.
{
"$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": {}
}
Of het volgende Bicep-bestand.
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}'
}
Volgende stappen
- Nu u een abonnement hebt gemaakt, kunt u die mogelijkheid verlenen aan andere gebruikers en service-principals. Zie Toegang verlenen voor het maken van Azure Enterprise-abonnementen (preview) voor meer informatie.
- Zie Resources organiseren met Azure-beheergroepen voor meer informatie over het beheren van grote aantallen abonnementen met behulp van beheergroepen.
- Zie Abonnementen verplaatsen als u de beheergroep voor een abonnement wilt wijzigen.
- Zie Alias - Maken voor geavanceerde scenario's voor het maken van abonnementen met behulp van REST API.