在 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 或守护程序/服务) 。 不支持公共客户端应用程序 (桌面和移动应用程序) 。

先决条件

在 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. 使用 az resource create 创建 Microsoft.GraphServices/accounts 资源类型的新实例,以将应用程序注册与活动订阅相关联。 将以下命令复制到命令行界面中,将表中列出的参数替换为自己的值,然后键入 <Enter>。 如果命令成功,响应将包括新创建资源的 JSON 表示形式。

az resource create --resource-group myRG --name myGraphAppBilling --resource-type Microsoft.GraphServices/accounts --properties  "{\"appId\": \"myAppGUID\"}" --location Global --subscription mySubscriptionGUID
参数 说明
myRG 要向其添加新创建资源的现有 Azure 资源组的名称。
myGraphAppBilling 要为此资源实例提供的名称。
myAppGUID 应用程序 (客户端) 要启用的应用程序的 ID,作为字符串参数提供;例如,00000000-0000-0000-0000-0000000000000。
mySubscriptionGUID 将接收计费事件的 Azure 订阅的 ID,作为字符串参数提供;例如,00000000-0000-0000-0000-0000000000000。

成功的 JSON 结果如下所示:

{
  "extendedLocation": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.GraphServices/accounts/myGraphAppBilling",
  "identity": null,
  "kind": null,
  "location": "Global",
  "managedBy": null,
  "name": "myGraphAppBilling",
  "plan": null,
  "properties": {
    "appId": "00000000-0000-0000-0000-000000000000",
    "billingPlanId": "00000000-0000-0000-0000-000000000000",
    "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/00000000-0000-0000-0000-000000000000/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
参数 说明
myRG 步骤 2 的结果中提供的 Azure 资源组的名称。
myGraphAppBilling 步骤 2 的结果中提供的资源的名称。

成功的 JSON 结果如下所示:

{
  "extendedLocation": null,
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.GraphServices/accounts/myGraphAppBilling",
  "identity": null,
  "kind": null,
  "location": "Global",
  "managedBy": null,
  "name": "myGraphAppBilling",
  "plan": null,
  "properties": {
    "appId": "00000000-0000-0000-0000-000000000000",
    "billingPlanId": "00000000-0000-0000-0000-000000000000"
  },
  "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 发票