在 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

  1. 如果有多个 Azure 订阅,有关设置活动订阅的信息,请参阅 使用多个 Azure 订阅;否则,请转到下一步。

  2. 使用 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

  1. 如果有多个 Azure 订阅,有关设置活动订阅的信息,请参阅 使用多个 Azure 订阅;否则,请转到下一步。

  2. 使用 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"
  }
]
  1. 使用步骤 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。

在应用程序中使用按流量计费的 API

关联应用程序注册和订阅后,应用程序可以开始使用 Microsoft Graph 中的按流量计费的 API 和服务。 从这些请求产生的成本将计入与应用程序关联的 Azure 订阅。

注意: 应用程序可能需要请求新的 OAuth 访问令牌,然后才能允许对按流量计费的 API 的请求。

可以通过 Azure 成本管理 + 计费监视 Microsoft Graph 中按流量计费的 API 和服务的成本和使用情况。 这提供对订阅内成本的访问权限,可以根据应用程序、呼叫租户或计量进行拆分。

按流量计费 API 和服务使用情况的帐单

订阅计费周期运行后(通常在当月的第 5 天),订阅所有者或具有基于角色的权限的用户可以下载发票。 有关详细信息,请参阅 查看和下载 Azure 发票

发票将包含详细信息,使你能够了解应用程序生成的使用量,以及发生该使用情况的多租户应用程序。 有关详细信息,请参阅 了解 Azure 发票