Creare sottoscrizioni di Azure a livello di codice per un Contratto Microsoft Partner con le API più recenti
Questo articolo illustra come creare a livello di codice sottoscrizioni di Azure per un Contratto Microsoft Partner usando le versioni più recenti dell'API. Se si usa ancora la versione di anteprima precedente, vedere Creare sottoscrizioni di Azure a livello di codice con API legacy.
Questo articolo contiene informazioni su come creare sottoscrizioni a livello di codice usando Azure Resource Manager.
Quando si crea una sottoscrizione di Azure a livello di codice, tale sottoscrizione è regolamentata dal contratto in base al quale l'utente ha ottenuto i servizi di Azure da Microsoft o da un rivenditore autorizzato. Per altre informazioni, vedere Informazioni legali su Microsoft Azure.
Nota
È consigliabile usare il modulo Azure Az PowerShell per interagire con Azure. Per iniziare, vedere Installare Azure PowerShell. Per informazioni su come eseguire la migrazione al modulo AZ PowerShell, vedere Eseguire la migrazione di Azure PowerShell da AzureRM ad Az.
Non è possibile creare piani di supporto a livello di codice. È possibile invece acquistare un nuovo piano di supporto o aggiornarne uno già esistente nel portale di Azure. Passare a Guida e supporto e nella parte superiore della pagina selezionare Scegliere il piano di supporto adatto.
Prerequisiti
Per creare una sottoscrizione per l'account del provider di soluzioni cloud dell'organizzazione, è necessario avere un ruolo di agente amministratore. Per altre informazioni, vedere Centro per i partner - Assegnare autorizzazioni e ruoli utente.
Per sapere se si ha accesso a un account con Contratto Microsoft Partner, vedere Verificare l'accesso a un Contratto Microsoft Partner.
Gli esempi seguenti usano le API REST. PowerShell e l'interfaccia della riga di comando di Azure non sono attualmente supportati.
Trovare gli account di fatturazione a cui si può accedere
Creare la richiesta seguente per elencare tutti gli account di fatturazione a cui si può accedere.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
La risposta dell'API elenca gli account di fatturazione.
{
"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": "Partner",
"agreementType": "MicrosoftPartnerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Contoso",
"hasReadAccess": true
},
"type": "Microsoft.Billing/billingAccounts"
}
]
}
Usare la proprietà displayName
per identificare l'account di fatturazione per cui si vogliono creare le sottoscrizioni. Assicurarsi che agreementType dell'account sia MicrosoftPartnerAgreement. Copiare il valore name
per l'account. Per creare ad esempio una sottoscrizione per l'account di fatturazione Contoso
, copiare aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
. Incollare il valore da qualche parte per poterlo usare nel passaggio successivo.
Trovare clienti con piani di Azure
Creare la richiesta seguente, con il valore name
copiato dal primo passaggio (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
) per elencare tutti i clienti nell'account di fatturazione per cui è possibile creare sottoscrizioni di Azure.
GET https://management.azure.com/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers?api-version=2020-05-01
La risposta API elenca i clienti nell'account di fatturazione con piani di Azure. È possibile creare sottoscrizioni per questi clienti.
{
"totalCount": 2,
"value": [
{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"name": "bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f",
"properties": {
"billingProfileDisplayName": "Fabrikam toys Billing Profile",
"billingProfileId": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
"displayName": "Fabrikam toys"
},
"type": "Microsoft.Billing/billingAccounts/customers"
},
{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "acba85c9-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"properties": {
"billingProfileDisplayName": "Contoso toys Billing Profile",
"billingProfileId": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
"displayName": "Contoso toys"
},
"type": "Microsoft.Billing/billingAccounts/customers"
}
]
}
Usare la proprietà displayName
per identificare il cliente per cui si vogliono creare le sottoscrizioni. Copiare il valore id
per il cliente. Per creare ad esempio una sottoscrizione per Fabrikam toys
, copiare /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
. Incollare il valore da qualche parte per usarlo nei passaggi successivi.
Ottenere i rivenditori per un cliente
Questa sezione è facoltativa solo per i provider indiretti.
I provider indiretti nel modello a due livelli del programma CSP possono specificare un rivenditore durante la creazione delle sottoscrizioni per i clienti.
Creare la richiesta seguente con il valore id
copiato dal secondo passaggio (/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx
) per elencare tutti i rivenditori disponibili per un cliente.
GET "https://management.azure.com/providers/Microsoft.Billing/billingAccounts/99a13315-xxxx-xxxx-xxxx-xxxxxxxxxxxx:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx?$expand=resellers&api-version=2020-05-01"
La risposta API elenca i rivenditori per il cliente:
{
"value": [{
"id": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"name": "2ed2c490-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"type": "Microsoft.Billing/billingAccounts/customers",
"properties": {
"billingProfileDisplayName": "Fabrikam toys Billing Profile",
"billingProfileId": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/YL4M-xxxx-xxx-xxx",
"displayName": "Fabrikam toys",
"resellers": [
{
"resellerId": "3xxxxx",
"description": "Wingtip"
}
]
}
}]
}
Usare la proprietà description
per identificare il rivenditore che viene associato alla sottoscrizione. Copiare il valore resellerId
per il rivenditore. Per associare ad esempio Wingtip
, copiare 3xxxxx
. Incollare il valore da qualche parte per poterlo usare nel passaggio successivo.
Creare una sottoscrizione per un cliente
L'esempio seguente crea una sottoscrizione denominata Dev Team subscription per Fabrikam toys e associa il rivenditore Wingtip alla sottoscrizione. Viene usato l'ambito di fatturazione copiato dal passaggio precedente: /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx
.
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
Testo della richiesta
{
"properties":
{
"billingScope": "/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"DisplayName": "Dev Team subscription",
"Workload": "Production"
}
}
Risposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
È possibile eseguire un'operazione GET nello stesso URL per ottenere lo stato della richiesta.
Richiedi
GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Risposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"provisioningState": "Succeeded"
}
}
Uno stato in corso viene restituito come stato Accepted
in provisioningState
.
Passare il valore resellerId facoltativo copiato dal secondo passaggio nel corpo della richiesta dell'API.
Usare il modello di ARM o Bicep
Nella sezione precedente è stato illustrato come creare una sottoscrizione con PowerShell, l'interfaccia della riga di comando o l'API REST. Se è necessario automatizzare la creazione di sottoscrizioni, è consigliabile usare un modello di Azure Resource Manager (modello di ARM) o un file Bicep.
Il modello di ARM seguente crea una sottoscrizione. Per billingScope
, specificare l'ID cliente. La sottoscrizione viene creata nel gruppo di gestione radice. Dopo aver creato la sottoscrizione, è possibile spostarla in un altro gruppo di gestione.
{
"$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": {}
}
In alternativa, usare un file Bicep per creare la sottoscrizione.
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
}
}
Distribuire il modello a livello di gruppo di gestione. Gli esempi seguenti illustrano la distribuzione del modello di ARM JSON, ma in alternativa è possibile anche implementare un file Bicep.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Con un corpo della richiesta:
{
"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/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
},
"mode": "Incremental"
}
}
Per spostare una sottoscrizione in un nuovo gruppo di gestione, usare il modello di ARM seguente.
{
"$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": {}
}
O, in alternativa, il file Bicep seguente.
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}'
}
Passaggi successivi
- Ora che la sottoscrizione è stata creata, è possibile concedere la medesima possibilità ad altri utenti ed entità servizio. Per altre informazioni, vedere Grant access to create Azure Enterprise subscriptions (preview) (Concedere l'accesso a creare sottoscrizioni di Azure Enterprise (anteprima)).
- Per altre informazioni sulla gestione di un numero elevato di sottoscrizioni mediante i gruppi di gestione, vedere Organizzare le risorse con i gruppi di gestione di Azure.
- Per scenari avanzati di creazione di sottoscrizioni con l'API REST, vedere Alias - Crea.