在 Microsoft Graph 中启用按流量计费的 API 和服务
Microsoft Graph 中的某些 API 和服务是 计量的,需要使用付费。 有关需要付款的 API 的当前列表,请参阅 Microsoft Graph 中的按流量计费的 API 和服务。
若要在 Microsoft Graph 中使用按流量计费的 API 和服务,使用 API 的 Microsoft Entra 应用程序的应用程序注册必须与 Azure 订阅相关联。 此订阅将对任何按流量计费的费用计费。 此关联还允许使用 Azure 成本管理 + 计费 来了解和管理应用程序的成本。
本文介绍如何将应用程序与 Azure 订阅相关联。
以下限制适用于按流量计费的 API:
- Microsoft Graph 中的按流量计费的 API 和服务目前仅适用于Microsoft全球环境,而不适用于国家云部署,包括通过全球 Microsoft Graph 终结点访问的 Microsoft 365 个 GCC 部署。 有关国家云的详细信息,请参阅 国家云部署。
- 目标应用程序必须是机密客户端应用程序, (例如 Web 应用程序、Web API 或守护程序/服务) 。 不支持公共客户端应用程序 (桌面和移动应用程序) 。
- 不支持 Azure 托管标识调用按流量计费的 API。 有关详细信息,请参阅 支持托管标识的 Azure 服务。
在 Microsoft Graph 中访问按流量计费的 API 和服务之前,必须完成以下步骤:
- 在 Microsoft Entra ID 中为将调用按流量计费Microsoft 365 API 和服务的应用程序创建应用程序注册。
- 如果没有 Azure 订阅,请立即在包含应用程序注册的租户 中创建一个 。
- 必须对要使用的活动 Azure 订阅具有参与者权限,以及目标应用程序注册的应用程序所有者权限。
若要使应用程序能够使用 Microsoft Graph 中的按流量计费的 API 和服务,它必须与 Azure 订阅相关联。 若要创建此关联,必须创建 类型为 Microsoft.GraphServices/accounts 的 Azure 资源。 Azure 资源将单个Microsoft Entra 应用程序注册连接到 Azure 订阅,其中对应用程序的按流量计费 API 的使用量计费。
使用以下步骤创建 Microsoft.GraphServices/accounts Azure 资源并将其链接到应用程序:
注意: 可以通过登录 https://portal.azure.com 并选择 Cloud Shell 或使用本地 Azure 命令行界面来完成以下步骤。 如果首次使用 Cloud Shell ,可能需要创建存储帐户。 选择 Azure 订阅,选择 “创建”,然后按照说明创建存储帐户。 若要使用本地 Azure 命令行接口,请安装 Azure CLI。
如果有多个 Azure 订阅,有关设置活动订阅的信息,请参阅 使用多个 Azure 订阅;否则,请转到下一步。
使用 Azure Cloudshell 中的 az graph-services 或你自己的 Azure CLI 安装创建 Microsoft.GraphServices/accounts 资源类型的新实例,以将应用程序注册与活动订阅相关联。
将以下命令复制到首选命令行界面 (PowerShell、Bash 或 Windows 命令提示符) ,将表中列出的参数替换为自己的值,然后键入 <Enter>。 如果命令成功,响应将包括新创建的计费资源的 JSON 表示形式。
az graph-services account create --resource-group myRG --resource-name myGraphAppBilling --subscription mySubscriptionGUID --location global --app-id AppRegGUID
参数 | 说明 |
---|---|
myRG | 要向其添加新创建资源的现有 Azure 资源组的名称。 |
myGraphAppBilling | 要为此资源实例提供的名称。 |
myAppGUID | 应用程序 (客户端) 要启用的应用程序的 ID,作为字符串参数提供;例如,123e4567-e89b-12d3-a456-426655440000。 |
mySubscriptionGUID | 将接收计费事件的 Azure 订阅的 ID,作为字符串参数提供;例如,123e4567-e89b-12d3-a456-426655440000。 |
成功的 JSON 结果如下所示:
{
"extendedLocation": null,
"id": "/subscriptions/<mySubscriptionGUID>/resourceGroups/<myRG>/providers/Microsoft.GraphServices/accounts/<myGraphAppBilling>",
"identity": null,
"kind": null,
"location": "Global",
"managedBy": null,
"name": "<myGraphAppBilling>",
"plan": null,
"properties": {
"appId": "<myAppGUID>",
"billingPlanId": "123e4567-e89b-12d3-a456-426655440000",
"provisioningState": "Succeeded"
},
"resourceGroup": "<myRG>",
"sku": null,
"systemData": {
"createdAt": "2023-01-31T00:12:20.7893671Z",
"createdByType": "User",
"lastModifiedAt": "2023-01-31T00:12:20.7893671Z",
"lastModifiedByType": "User"
},
"tags": null,
"type": "microsoft.graphservices/accounts"
}
使用以下步骤验证应用程序是否已正确启用以使用 Microsoft Graph 中的按流量计费的 API 和服务。
注意: 可以通过登录 https://portal.azure.com 并选择 Cloud Shell 或使用本地 Azure 命令行界面来完成以下步骤。 如果首次使用 Cloud Shell ,可能需要创建存储帐户。 选择 Azure 订阅,选择 “创建”,然后按照说明创建存储帐户。 若要使用本地 Azure 命令行接口,请安装 Azure CLI。
如果有多个 Azure 订阅,有关设置活动订阅的信息,请参阅 使用多个 Azure 订阅;否则,请转到下一步。
使用 az resource list 列出与活动 Azure 订阅关联的资源。 将以下命令复制到命令行界面,并键入 <Enter>。 如果命令成功,响应将包含与活动 Azure 订阅关联的资源的 JSON 表示形式。
az resource list --resource-type Microsoft.GraphServices/accounts
成功的 JSON 结果如下所示:
[
{
"changedTime": "2023-04-25T18:12:30.586342+00:00",
"createdTime": "2023-04-25T18:02:30.141407+00:00",
"extendedLocation": null,
"id": "/subscriptions/<mySubscriptionGUID>/resourceGroups/<myRG>/providers/Microsoft.GraphServices/accounts/<myGraphAppBilling>",
"identity": null,
"kind": null,
"location": "global",
"managedBy": null,
"name": "<myGraphAppBilling>",
"plan": null,
"properties": null,
"provisioningState": "Succeeded",
"resourceGroup": "<myRG>",
"sku": null,
"tags": null,
"type": "Microsoft.GraphServices/accounts"
}
]
- 使用步骤 2 中返回的值,使用 az resource show 显示资源的完整详细信息。 将以下命令复制到命令行界面中,将表中列出的参数替换为自己的值,然后键入 <Enter>。 如果命令成功,响应将包含所请求资源的 JSON 表示形式。
az resource show --resource-group myRg --name myGraphAppBilling --resource-type Microsoft.GraphServices/accounts
| Parameter | Description |
|:--------------------------|:----------------------------------------|
| myRG | The name of the Azure resource group provided in the result of step 2. |
| myGraphAppBilling | The name of the resource provided in the result of step 2. |
A successful JSON result will look something like this:
```json
{
"extendedLocation": null,
"id": "/subscriptions/<mySubscriptionGUID>/resourceGroups/<myRG>/providers/Microsoft.GraphServices/accounts/<myGraphAppBilling>",
"identity": null,
"kind": null,
"location": "Global",
"managedBy": null,
"name": "<myGraphAppBilling>",
"plan": null,
"properties": {
"appId": "<myAppGUID>",
"billingPlanId": "123e4567-e89b-12d3-a456-426655440000"
},
"resourceGroup": "<myRG>",
"sku": null,
"tags": null,
"type": "microsoft.graphservices/accounts"
}
properties 属性将包括关联应用程序注册的应用程序 ID。
关联应用程序注册和订阅后,应用程序可以开始使用 Microsoft Graph 中的按流量计费的 API 和服务。 从这些请求产生的成本将计入与应用程序关联的 Azure 订阅。
注意: 应用程序可能需要请求新的 OAuth 访问令牌,然后才能允许对按流量计费的 API 的请求。
可以通过 Azure 成本管理 + 计费监视 Microsoft Graph 中按流量计费的 API 和服务的成本和使用情况。 这提供对订阅内成本的访问权限,可以根据应用程序、呼叫租户或计量进行拆分。
订阅计费周期运行后(通常在当月的第 5 天),订阅所有者或具有基于角色的权限的用户可以下载发票。 有关详细信息,请参阅 查看和下载 Azure 发票。
发票将包含详细信息,使你能够了解应用程序生成的使用量,以及发生该使用情况的多租户应用程序。 有关详细信息,请参阅 了解 Azure 发票。