使用最新的 API 以程式設計方式建立 Microsoft 合作夥伴合約的 Azure 訂用帳戶
本文可協助您使用最新的 API 版本,以程式設計方式建立 Microsoft 合作夥伴合約的 Azure 訂用帳戶。 如果您仍使用較舊的預覽版本,請參閱使用舊版 API 以程式設計方式建立 Azure 訂閱。
在本文中,可了解如何使用 Azure Resource Manager 以程式設計方式建立訂用帳戶。
當您以程式設計方式建立 Azure 訂用帳戶時,該訂用帳戶會受合約規範,此合約是您向 Microsoft 或授權經銷商取得 Azure 服務時所簽署的合約。 如需詳細資訊,請參閱 Microsoft Azure 法律資訊。
注意
建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。
您無法以程式設計方式建立支援計劃。 您可以在 Azure 入口網站中購買新的支援計劃或升級計劃。 瀏覽至 [說明 + 支援],然後在頁面頂端選取 [選擇正確的支援計劃]。
必要條件
您必須在組織的雲端解決方案提供者帳戶中擁有系統管理員代理程式角色,才能為您的計費帳戶建立訂用帳戶。 如需詳細資訊,請參閱合作夥伴中心 - 指派使用者角色及權限。
如果您不知道自己是否有 Microsoft 合作夥伴合約帳戶的存取權,請參閱檢查 Microsoft 合作夥伴合約的存取權。
下列範例會使用 REST API。 目前不支援 PowerShell 和 Azure CLI。
尋找您可以存取的計費帳戶
請提出下列要求,以列出您有權存取的所有計費帳戶。
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": "Partner",
"agreementType": "MicrosoftPartnerAgreement",
"billingProfiles": {
"hasMoreResults": false
},
"displayName": "Contoso",
"hasReadAccess": true
},
"type": "Microsoft.Billing/billingAccounts"
}
]
}
請使用 displayName
屬性來識別您要為其建立訂用帳戶的計費帳戶。 請確定帳戶的 agreementType 是 MicrosoftPartnerAgreement。 複製帳戶的 name
。 例如,若要建立 Contoso
計費帳戶的訂用帳戶,請複製 aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
。 將此值貼在某處,以便您在下一個步驟中使用。
尋找具有 Azure 方案的客戶
使用從第一個步驟複製的 name
(aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx
) 提出下列要求,以列出計費帳戶中您可以為其建立 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
API 回應會列出計費帳戶中具有 Azure 方案的客戶。 您可以為這些客戶建立訂用帳戶。
{
"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"
}
]
}
請使用 displayName
屬性來識別您要為其建立訂用帳戶的客戶。 複製客戶的 id
。 例如,若要建立 Fabrikam toys
的訂用帳戶,請複製 /providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/bbbb1b1b-cc2c-dd3d-ee4e-ffffff5f5f5f
。 將此值貼到某個位置,以便在後續步驟中使用。
為客戶指定轉銷商
對於間接提供者,此節內容是選擇性的。
如果您是 CSP 兩層型模型中的間接提供者,您可以在為客戶建立訂用帳戶時指定轉銷商。
使用在第二個步驟中複製的 id
(/providers/Microsoft.Billing/billingAccounts/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e:xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx_xxxx-xx-xx/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx
) 提出下列要求,以列出客戶適用的所有轉銷商。
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"
API 回應會列出客戶適用的轉售商:
{
"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"
}
]
}
}]
}
請使用 description
屬性來識別與訂用帳戶相關聯的轉銷商。 複製轉銷商的 resellerId
。 例如,若要建立 Wingtip
的關聯,請複製 3xxxxx
。 將此值貼在某處,以便您在下一個步驟中使用。
為客戶建立訂用帳戶
下列範例會為 Fabrikam toys 建立名為「開發小組訂用帳戶」的訂用帳戶,並讓 Wingtip 轉銷商與訂用帳戶建立關聯。 您可以使用在先前的步驟中複製的計費範圍:/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
要求本文
{
"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"
}
}
回應
{
"id": "/providers/Microsoft.Subscription/aliases/sampleAlias",
"name": "sampleAlias",
"type": "Microsoft.Subscription/aliases",
"properties": {
"subscriptionId": "aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e",
"provisioningState": "Accepted"
}
}
您可以在相同的 URL 上執行 GET,以取得要求的狀態。
要求
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": "cccc2c2c-dd3d-ee4e-ff5f-aaaaaa6a6a6a",
"provisioningState": "Succeeded"
}
}
此時會傳回進行中狀態,在 provisioningState
下顯示為 Accepted
狀態。
在 API 的要求本文中,傳遞從第二個步驟中複製的選擇性 resellerId。
使用 ARM 範本或 Bicep
上一節示範了如何使用 PowerShell、CLI 或 REST API 建立訂閱。 如果您需要將訂閱建立過程自動化,請考慮使用 Azure Resource Manager 範本 (ARM 範本) 或 Bicep 檔案。
下列 ARM 範本會建立訂閱。 請在 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
}
}
在管理群組層級部署範本。 下列範例示範如何部署 JSON ARM 範本,但您可以改部署 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/customers/2281f543-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
}
},
"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 的進階訂閱建立案例,請參閱別名 - 建立。