Skapa Azure-prenumerationer via programmering för ett Microsoft-kundavtal med de senaste API:erna
Den här artikeln beskriver hur du skapar Azure-prenumerationer för ett Microsoft-kundavtal via programmering med hjälp av de senaste API-versionerna. Om du fortfarande använder den äldre förhandsversionen läser du Skapa Azure-prenumerationer programmatiskt med äldre API:er.
I den här artikeln får du lära dig hur du skapar prenumerationer programmatiskt med hjälp av Azure Resource Manager.
Om du behöver skapa en Azure MCA-prenumeration mellan Microsoft Entra-klientorganisationer kan du läsa Skapa MCA-prenumerationer programmatiskt mellan Microsoft Entra-klientorganisationer.
När du skapar en Azure-prenumeration programmatiskt styrs prenumerationen av det avtal som du fick när du erhöll Azure-tjänster från Microsoft eller en auktoriserad återförsäljare. Mer information finns i Juridisk information för Microsoft Azure.
Kommentar
Vi rekommenderar att du använder Azure Az PowerShell-modulen för att interagera med Azure. Se Installera Azure PowerShell för att komma igång. Information om hur du migrerar till Az PowerShell-modulen finns i artikeln om att migrera Azure PowerShell från AzureRM till Az.
Du kan inte skapa supportplaner programmatiskt. Du kan köpa ett nytt supportprogram eller uppgradera ett supportprogram i Azure-portalen. Gå till Hjälp + support och välj sedan Välj rätt supportprogram överst på sidan.
Förutsättningar
För att kunna skapa prenumerationer måste du ha rollen ägare, deltagare eller skapare av Azure-prenumerationen i ett fakturaavsnitt eller rollen ägare eller deltagare i en faktureringsprofil eller ett faktureringskonto. Du kan även ge samma roll till ett tjänsthuvudnamn (SPN). Mer information om roller och tilldelning av behörigheter till dem finns i Faktureringsroller och uppgifter för prenumerationer.
Om du använder ett SPN för att skapa prenumerationer använder du ObjectId för Microsoft Entra Enterprise-programmet som huvudnamns-ID med hjälp av Microsoft Graph PowerShell eller Azure CLI.
Kommentar
Behörigheterna skiljer sig mellan det äldre API:et (api-version=2018-03-01-preview) och det senaste API:et (api-version=2020-05-01). Även om du kan ha en roll som räcker för att använda det äldre API:et kan du behöva en EA-administratör för att delegera dig en roll för att kunna använda det senaste API:et.
Om du inte vet om du har åtkomst till ett konto för ett Microsoft-kundavtal kan du läsa mer i Kontrollera åtkomsten till ett Microsoft-kundavtal.
Sök efter faktureringskonton som du har åtkomst till
Visa en lista över alla faktureringskonton genom att göra följande begäran.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
API-svaret visar alla faktureringskonton som du har åtkomst till.
{
"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"
}
]
}
Använd egenskapen displayName
för att identifiera det faktureringskonto som du vill skapa prenumerationer för. Se till att agreementType för kontot är MicrosoftCustomerAgreement. Kopiera name
för kontot. Om du till exempel vill skapa en prenumeration för faktureringskontot Contoso
kopierar du aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
. Klistra in värdet någonstans så att du kan använda det i nästa steg.
Hitta faktureringsprofiler och fakturaavsnitt för att skapa prenumerationer
Avgifterna för din prenumeration visas i ett avsnitt på fakturan för en faktureringsprofil. Använd följande API för att hämta listan över faktureringsprofiler och fakturaavsnitt som du har behörighet att skapa Azure-prenumerationer för.
Först får du listan över faktureringsprofiler under det faktureringskonto som du har åtkomst till (Använd name
det du fick från föregående steg)
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
API-svaret visar alla faktureringsprofiler som du har behörighet att skapa prenumerationer för:
{
"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"
}
]
}
Kopiera id
för att identifiera fakturaavsnitten under faktureringsprofilen. Kopiera till exempel /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx
och anropa följande 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
Response
{
"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"
}
]
}
Använd egenskapen id
för att identifiera det fakturaavsnitt som du vill skapa prenumerationer för. Kopiera hela strängen. Exempel: /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
Skapa en prenumeration för ett fakturaavsnitt
I följande exempel skapas en prenumeration med namnet Dev Team Subscription (Prenumeration för utvecklingsteam) för fakturaavsnittet Development (Utveckling). Prenumerationen debiteras till faktureringsprofilen Contoso Billing Profile (Faktureringsprofil för Contoso) och visas i avsnittet Development (Utveckling) på fakturan. Du använder det kopierade faktureringsomfånget från föregående steg: /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
.
Ersätt platshållarvärdet sampleAlias
efter behov. Mer information om dessa REST-anrop finns i Skapa och hämta.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
Request body
{
"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"
}
}
Response
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
Du kan göra en GET-begäran med samma URL för att hämta statusen för begäran.
Begär
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"
}
}
En ”pågående”-status returneras som ett Accepted
-tillstånd under provisioningState
.
Använda ARM-mall eller Bicep
I föregående avsnitt visades hur du skapar en prenumeration med PowerShell, CLI eller REST API. Om du behöver automatisera skapandet av prenumerationer kan du överväga att använda en Azure Resource Manager-mall (ARM-mall) eller en Bicep-fil.
Följande mall skapar en prenumeration. För billingScope
anger du fakturaavsnittets ID. Prenumerationen skapas i rothanteringsgruppen. När du har skapat prenumerationen kan du flytta den till en annan hanteringsgrupp.
{
"$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": {}
}
Du kan också använda en Bicep-fil för att skapa prenumerationen.
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
}
}
Distribuera mallen på hanteringsgruppsnivå. I följande exempel visas hur du distribuerar JSON ARM-mallen, men du kan distribuera en Bicep-fil i stället.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Med en begärandetext:
{
"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"
}
}
Om du vill flytta en prenumeration till en ny hanteringsgrupp använder du följande ARM-mall.
{
"$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": {}
}
Eller följande Bicep-fil.
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}'
}
Nästa steg
- Nu när du har skapat en prenumeration kan du bevilja den möjligheten till andra användare och tjänsthuvudnamn. Mer information finns i Bevilja behörighet att skapa Azure Enterprise-prenumerationer (förhandsversion).
- Mer information om hur du hanterar ett stort antal prenumerationer med hanteringsgrupper finns i Ordna resurser med hanteringsgrupper i Azure.
- Information om hur du ändrar hanteringsgruppen för en prenumeration finns i Flytta prenumerationer.
- Avancerade scenarier för att skapa prenumerationer med hjälp av REST API finns i Alias – Skapa.