Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Эта статья поможет вам создать подписки Azure для Клиентского соглашения Майкрософт программными средствами с помощью новейших версий API. Если вы все еще используете старую предварительную версию, см. Программное создание подписок Azure с использованием устаревших API.
В этой статье Вы узнаете как создавать подписки программно с помощью Azure Resource Manager.
Если вам нужно создать подписку Azure MCA в клиентах Microsoft Entra, см. Программное создание подписок MCA в клиентах Microsoft Entra.
Когда вы создаете подписки Azure программными средствами, они регулируются соглашением, в соответствии с которым вы получили службы Azure от корпорации Microsoft или уполномоченного торгового посредника. Дополнительные сведения можно найти на странице Юридическая информация Службы Microsoft Azure.
Примечание.
Мы рекомендуем использовать модуль Azure Az PowerShell для взаимодействия с Azure. Чтобы начать работу, см. статью Установка Azure PowerShell. Чтобы узнать, как выполнить миграцию на модуль Az PowerShell, см. Перенос Azure PowerShell с AzureRM на Az.
Вы не можете создавать планы поддержки программным способом. Вы можете приобрести новый план поддержки или обновить его на портале Azure. Перейдите в раздел Справка и поддержка, а затем в верхней части страницы выберите Выбрать нужный план поддержки.
Предварительные условия
Для создания подписок необходимо иметь роль владельца, участника или создателя подписок Azure в разделе счета либо роль владельца или участника в профиле выставления счетов или учетной записи выставления счетов. Вы можете также назначить ту же роль имени основной службы (SPN). Дополнительные сведения о ролях и назначении им разрешений см. в разделе Роли и задачи выставления счетов в подписке.
Если вы используете SPN для создания подписок, используйте ObjectId приложения Microsoft Entra Enterprise в качестве главного идентификатора с помощью Microsoft Graph PowerShell или Azure CLI.
Примечание.
Разрешения различаются между устаревшим API (api-version=2018-03-01-preview) и последним API (api-version=2020-05-01). Хотя у вашей роли может быть достаточно прав для использования устаревшего API, вам может потребоваться, чтобы администратор EA делегировал вам роль для использования новейшего API.
Если вы не знаете точно, есть ли у вас доступ к учетной записи Клиентского соглашения Microsoft, ознакомьтесь с разделом Проверка доступа к Клиентскому соглашению Microsoft.
Поиск учетных записей выставления счетов, к которым у вас есть доступ
Отправьте следующий запрос, чтобы получить список всех учетных записей выставления счетов.
GET https://management.azure.com/providers/Microsoft.Billing/billingaccounts/?api-version=2020-05-01
В ответе API будет выведен список учетных записей выставления счетов, к которым у вас есть доступ.
{
"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"
}
]
}
Используйте свойство displayName
, чтобы определить учетную запись выставления счетов, для которой нужно создать подписки. Убедитесь, что значение agreementType для учетной записи равно MicrosoftCustomerAgreement. Скопируйте значение name
учетной записи. Например, чтобы создать подписку для учетной записи выставления счетов Contoso
, скопируйте aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
. Вставьте это значение в любое место, чтобы его можно было использовать на следующем шаге.
Найдите профили выставления счетов и разделы счетов-фактур для создания подписок.
Плата за подписку отображается в разделе счета в профиле выставления счетов. Используйте следующий API для получения списка профилей выставления счетов и разделов счетов, для которых у вас есть разрешения на создание подписок Azure.
Сначала необходимо получить список профилей выставления счетов в учетной записи выставления счетов, к которой у вас есть доступ (используйте значение name
, полученное на предыдущем шаге).
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 будут перечислены все профили выставления счетов, которые доступны вам для создания подписок.
{
"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"
}
]
}
Скопируйте id
для следующего определения разделов счета под профилем выставления счетов. Например, скопируйте /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/billingProfiles/AW4F-xxxx-xxx-xxx
и вызовите следующий 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
Ответ
{
"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"
}
]
}
Используйте свойство 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
.
Создание подписки для секции счета
В следующем примере создается подписка с именем Dev Team subscription для раздела счета Development. Счет за подписку будет выставлен через профиль выставления счетов Contoso и будет указан в разделе Разработка этого счета. Используйте область выставления счетов, скопированную из предыдущего шага: /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
.
Замените значение заполнителя sampleAlias
при необходимости. Дополнительные сведения об этих вызовах REST см. в разделе "Создание и получение".
PUT https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01api-version=2021-10-01
Тело запроса
{
"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"
}
}
Ответ
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
Чтобы получить состояние запроса, можно отправить запрос GET для того же URL-адреса.
Запрос
GET https://management.azure.com/providers/Microsoft.Subscription/aliases/{{guid}}?api-version=2021-10-01
Ответ
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Succeeded"
}
}
Состояние "Выполняется" возвращается в виде состояния Accepted
в разделе provisioningState
.
Используйте шаблон ARM или Bicep
В предыдущем разделе было показано, как создать подписку с помощью PowerShell, CLI или REST API. Если вам необходимо автоматизировать создание подписок, рассмотрите возможность использования шаблона Azure Resource Manager (шаблона ARM) или BICEP-файла.
Следующий шаблон используется для создания подписки. Для параметра billingScope
укажите идентификатор раздела счета. Подписка создается в корневой группе управления. После создания подписки ее можно переместить в другую группу управления.
{
"$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": {}
}
Или используйте BICEP-файл для создания подписки.
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
}
}
Разверните шаблон на уровне группы управления. В следующих примерах показано развертывание шаблона ARM JSON, но вместо этого можно развернуть BICEP-файл.
PUT https://management.azure.com/providers/Microsoft.Management/managementGroups/mg1/providers/Microsoft.Resources/deployments/exampledeployment?api-version=2020-06-01
С текстом запроса:
{
"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"
}
}
Чтобы переместить подписку в другую группу управления, используйте следующий шаблон 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": {}
}
Кроме того, можно использовать следующий файл 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}'
}
Следующие шаги
- После создания подписки можно предоставить эту возможность для других пользователей и субъектов-служб. Дополнительные сведения см. статье Предоставление доступа к созданию подписок Azure Enterprise (предварительная версия).
- Дополнительные сведения об управлении большим числом подписок с помощью групп управления см. в упорядочивании ресурсов с помощью групп управления Azure.
- Сведения об изменении группы управления для подписки см. в разделе Перемещение подписок.
- Расширенные сценарии создания подписок с помощью REST API см. в разделе Псевдоним — создание.