Criar programaticamente subscrições do Azure para um Contrato de Parceiro da Microsoft com as APIs mais recentes
Este artigo ajuda-o a criar subscrições do Azure para um Contrato de Parceiro da Microsoft através de programação com as versões de API mais recentes. Se ainda estiver a utilizar a versão de pré-visualização mais antiga, consulte Criar programaticamente subscrições do Azure com APIs herdadas.
Neste artigo, aprenderá a criar subscrições através de programação com o Azure Resource Manager.
Quando cria uma subscrição do Azure através de programação, essa subscrição é regida pelo contrato sob o qual adquiriu os serviços do Azure à Microsoft ou a um revendedor autorizado. Para obter mais informações, veja Informações Legais do Microsoft Azure.
Nota
Recomendamos que utilize o módulo Azure Az do PowerShell para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo do Az PowerShell, veja Migrar o Azure PowerShell do AzureRM para o Az.
Não é possível criar planos de suporte programaticamente. Pode comprar um novo plano de suporte ou atualizar um no portal do Azure. Navegue até Ajuda + suporte e, na parte superior da página, selecione Escolher o plano de suporte correto.
Pré-requisitos
Tem de ter uma função de Agente Administrador na conta de fornecedor de soluções na nuvem da sua organização para criar uma subscrição para a sua conta de faturação. Para obter mais informações, veja Partner Center - Assign users roles and permissions (Centro de Parceiros – Atribuir funções e permissões de utilizadores).
Se não sabe se tem acesso a uma conta de Contrato de Parceiro da Microsoft, veja Verificar o acesso a um Contrato de Parceiro da Microsoft.
Os exemplos que se seguem utilizam APIs REST. Atualmente, o PowerShell e a CLI do Azure não são suportados.
Localizar as contas de faturação às quais tem acesso
Faça o pedido seguinte para listar todas as contas de faturação às quais tem acesso.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
A resposta da API lista as contas de faturação.
{
"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"
}
]
}
Use a propriedade displayName
para identificar a conta de faturação para a qual pretende criar subscrições. Certifique-se de que o agreementType da conta é MicrosoftPartnerAgreement. Copie o name
para a conta. Por exemplo, para criar uma subscrição para a conta de faturação Contoso
, copie aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
. Cole o valor algures para que possa utilizá-lo no passo seguinte.
Localizar clientes que têm planos do Azure
Faça o pedido seguinte, com o name
copiado no primeiro passo (aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
) para listar todos os clientes na conta de faturação para quem pode criar subscrições do 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
A resposta da API lista os clientes na conta de faturação com planos do Azure. Pode criar subscrições para estes clientes.
{
"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"
}
]
}
Use a propriedade displayName
para identificar o cliente para o qual pretende criar subscrições. Copie o id
para o cliente. Por exemplo, para criar uma subscrição para Fabrikam toys
, copie /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
. Cole o valor algures para utilizá-lo em passos posteriores.
Consiga os revendedores para um cliente
Esta secção é opcional apenas para os Fornecedores indiretos.
Se for um Fornecedor indireto no modelo de duas camadas do CSP, pode especificar um revendedor quando criar subscrições para os clientes.
Faça o pedido seguinte, com o id
copiado no segundo passo (/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx
) para listar todos os revendedores disponíveis para um 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"
A resposta da API lista os revendedores do 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"
}
]
}
}]
}
Utilize a propriedade description
para identificar o revendedor que está associado à subscrição. Copie o resellerId
para o revendedor. Por exemplo, para associar Wingtip
, copie 3xxxxx
. Cole o valor algures para que possa utilizá-lo no passo seguinte.
Criar uma subscrição para um cliente
O exemplo seguinte cria uma subscrição denominada Subscrição da Equipa de Desenvolvimento para a Fabrikam Toys e associa o revendedor Wingtip à subscrição. Utilizará o âmbito da faturação copiado do passo anterior: /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
Corpo do pedido
{
"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"
}
}
Resposta
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
Pode chamar GET no mesmo URL para obter o estado do pedido.
Pedir
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": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"provisioningState": "Succeeded"
}
}
É devolvido um estado em curso como um estado Accepted
em provisioningState
.
Transmita o resellerId opcional copiado no segundo passo no corpo do pedido da API.
Usar modelo ARM ou Bíceps
A seção anterior mostrou como criar uma assinatura com PowerShell, CLI ou API REST. Se você precisar automatizar a criação de assinaturas, considere usar um modelo do Azure Resource Manager (modelo ARM) ou um arquivo Bicep.
O modelo ARM a seguir cria uma assinatura. Para billingScope
, forneça o ID do cliente. A assinatura é criada no grupo de gerenciamento raiz. Depois de criar a assinatura, você pode movê-la para outro grupo de gerenciamento.
{
"$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": {}
}
Ou, use um arquivo Bicep para criar a assinatura.
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
}
}
Implante o modelo no nível do grupo de gerenciamento. Os exemplos a seguir mostram a implantação do modelo JSON ARM, mas você pode implantar um arquivo Bicep.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
Com um corpo de solicitação:
{
"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"
}
}
Para mover uma assinatura para um novo grupo de gerenciamento, use o seguinte modelo 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": {}
}
Ou, o seguinte arquivo 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}'
}
Próximos passos
- Agora que criou uma subscrição, pode conceder essa capacidade a outros entidades principais de utilizador e de serviço. Para obter mais informações, veja Conceder acesso para criar subscrições Enterprise do Azure (pré-visualização).
- Para obter mais informações sobre como gerir grandes números de subscrições com grupos de gestão, veja Organizar recursos com os grupos de gestão do Azure.
- Para cenários avançados de criação de assinatura usando a API REST, consulte Alias - Criar.