Skapa prenumerationer på Azure Enterprise-avtal via programmering med de senaste API:erna
Den här artikeln hjälper dig att skapa prenumerationer för Azure Enterprise-avtal (EA) via programmering för ett EA-faktureringskonto med 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.
När du skapar en Azure-prenumeration programmatiskt faller den under villkoren i avtalet där du får Azure-tjänster från Microsoft eller en certifierad sä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
En användare måste antingen ha rollen Enterprise-administratör eller rollen Ägare på ett registreringskonto för att kunna skapa en prenumeration. Det finns två sätt att få rollen Ägare på ett registreringskonto:
- Företagsadministratören för din registrering kan utse dig till kontoägare (inloggning krävs), vilket innebär att du blir ägare till registreringskontot.
- En befintlig ägare till registreringskontot kan ge dig åtkomst.
Om du vill skapa en EA-prenumeration med hjälp av ett tjänsthuvudnamn måste en Ägare på registreringskontot bevilja tjänsthuvudnamnet behörighet att skapa prenumerationer.
När du använder tjänstens huvudnamn för att skapa prenumerationer använder du ObjectId för Microsoft Entra Enterprise-programmet som tjänstens huvudnamns-ID med hjälp av Microsoft Graph PowerShell eller Azure CLI. Du kan även använda stegen i Hitta tjänstens huvudnamn och klientorganisations-ID för att hitta objekt-ID:t i Azure-portalen för ett befintligt tjänsthuvudnamn.
För mer information om API-begäran om EA-rolltilldelning, läs Tilldela roller till tjänsthuvudnamn för Azure Enterprise-avtal. Artikeln innehåller en lista över roller (och rolldefinitions-ID:er) som kan tilldelas till tjänstens huvudnamn.
Kommentar
- Se till att du använder rätt API-version för att ge registreringskontot ägarbehörighet. För den här artikeln och för de API:er som dokumenteras i den använder du API:et 2019-10-01-preview.
- Om du migrerar för att använda de nyare API:erna kommer din tidigare konfiguration som skapades med version 2015-07-01 inte att konverteras automatiskt för användning med nyare API:er.
- Informationen om registreringskontot visas bara när användarens roll är Kontoägare. När en användare har flera roller använder API:et användarens minst restriktiva roll.
Hitta konton som du har åtkomst till
När du har lagt till ett registreringskonto som är associerat med en kontoägare använder Azure konto-till-registrering-relationen för att ta reda på var prenumerationsavgifterna ska debiteras. Alla prenumerationer som skapats under kontot debiteras till den EA-registrering som kontot ingår i. För att kunna skapa prenumerationer måste du ange värden om registreringskontot och användarens huvudnamn så att du är ägare för prenumerationen.
För att kunna köra följande kommandon måste du vara inloggad på kontoägarens hemkatalog, vilket är den katalog som prenumerationer skapas i som standard.
Begära en lista över alla registreringskonton som du har åtkomst till:
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
API-svaret visar alla registreringskonton som du har åtkomst till:
{
"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"
}
]
}
Värdena för ett faktureringsomfång och id
är samma sak. id
för ditt registreringskonto är det faktureringsomfång som prenumerationsbegäran initieras i. Det är viktigt att känna till ID:t eftersom det är en obligatorisk parameter som du använder senare i artikeln för att skapa en prenumeration.
Skapa prenumerationer under ett specifikt registreringskonto
I följande exempel skapas en prenumeration med namnet Dev Team Subscription i det registreringskonto som valdes i föregående steg.
Med någon av följande metoder skapar du ett prenumerationsaliasnamn. Vi rekommenderar att du när du skapar aliasnamnet:
- Använda alfanumeriska tecken och bindestreck
- Börja med en bokstav och avsluta med ett alfanumeriskt tecken
- Använd inte perioder
Ett alias används för enkel ersättning av en användardefinierad sträng i stället för prenumerations-GUID. Med andra ord kan du använda det som en genväg. Du kan läsa mer om alias på Alias – Skapa. I följande exempel skapas, sampleAlias
men du kan använda valfri sträng som du vill.
Om du har flera användarroller utöver rollen Kontoägare måste du hämta konto-ID:t från Azure-portalen. Sedan kan du använda ID:t för att programmatiskt skapa prenumerationer.
Anropa PUT-API:et för att skapa ett alias/en begäran om att skapa en prenumeration.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
I begärandetexten anger du id
från ett av dina enrollmentAccounts
som billingScope
.
{
"properties": {
"billingScope": "/providers/Microsoft.Billing/BillingAccounts/1234567/enrollmentAccounts/7654321",
"DisplayName": "Dev Team Subscription", //Subscription Display Name
"Workload": "Production"
}
}
Tillåtna värden för Workload
är Production
och DevTest
.
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
.
Skapa prenumeration och gör subscriptionOwnerId till ägare
När tjänstens huvudnamn använder prenumerationsalias-API:et för att skapa en ny prenumeration och inte inkluderar additionalProperties
i begäran blir tjänstens huvudnamn automatiskt ägare till den nya prenumerationen. Om du inte vill att tjänstens huvudnamn ska vara ägare kan du ange subscriptionTenantId
och subscriptionOwnerId
i additionalProperties
. Den här processen gör den angivna subscriptionOwnerId
till ägaren av den nya prenumerationen, inte tjänstens huvudnamn.
Exempel på begärandetext:
{
"properties": {
"billingScope": "/providers/Microsoft.Billing/billingAccounts/{EABillingAccountId}/enrollmentAccounts/{EnrollmentAccountId}",
"displayName": "{SubscriptionName}",
"workLoad": "Production",
"resellerId": null,
"additionalProperties": {
"managementGroupId": "",
"subscriptionTenantId": "{SubscriptionTenantId}", // Here you input the tenant GUID where the subscription resides after creation
"subscriptionOwnerId": "{ObjectId that becomes the owner of the subscription}", // Here you input the objectId which is set as the subscription owner when it gets created.
"tags": {}
}
}
}
Skapa prenumerationer i en annan klientorganisation
Med hjälp av prenumerationens ALIAS REST API kan du skapa en prenumeration i en annan klientorganisation med hjälp av parametern subscriptionTenantId
i begärandetexten. Ditt Azure Service Principal (SPN) måste hämta en token från sin hemklientorganisation för att skapa prenumerationen. När du har skapat prenumerationen måste du hämta en token från målklientorganisationen för att acceptera överföringen med api:et Acceptera ägarskap .
Mer information om hur du skapar EA-prenumerationer i en annan klient finns i Skapa prenumeration i andra klientorganisationer och visa överföringsbegäranden.
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 ARM-mall skapar en prenumeration. För billingScope
anger du registreringskontots 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/1234567/enrollmentAccounts/7654321"
}
},
"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}'
}
Begränsningar för API:et för att skapa Azure Enterprise-prenumerationer
- Endast Azure Enterprise-prenumerationer skapas med API:et.
- Det finns en gräns på 5 000 prenumerationer per registreringskonto. Därefter kan du bara skapa fler prenumerationer för kontot i Azure-portalen. Om du vill skapa fler prenumerationer med hjälp av API:et skapar du ett till registreringskonto. Avbrutna, borttagna och överförda prenumerationer tas med i beräkningen för gränsen på 5000.
- Användare som inte är Kontoägare men som har lagts till i ett registreringskonto med Azure rollbaserad åtkomstkontroll kan inte skapa prenumerationer på Azure-portalen.
Nästa steg
- Nu när du har skapat en prenumeration kan du ge den möjligheten till andra användare och tjänstens huvudnamn. 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.