使用导出功能定期检索大型成本数据集

本文帮助你使用成本管理中的导出功能定期导出大量数据。 建议通过导出的方式来检索未聚合的成本数据。 特别是当使用情况文件太大而无法使用成本详细信息 API 可靠地调用和下载时。 导出的数据置于你所选择的 Azure 存储帐户中。 因此,可以将其加载到你自己的系统中,并按需对其进行分析。 若要在 Azure 门户中配置导出,请参阅导出数据

如果要在不同范围自动执行导出,可以首先了解下一部分的示例 API 请求。 可以使用导出 API 创建自动导出,作为常规环境配置的一部分。 自动导出有助于确保你拥有所需的数据。 扩展 Azure 用途时,可以在自己组织的系统中使用。

常用导出配置

在创建第一个导出之前,请考虑你的方案和启用该方案所需的配置选项。 请考虑以下导出选项:

  • 定期 - 确定导出作业的运行频率以及何时将文件放入 Azure 存储帐户。 你可以选择“每天”、“每周”和“每月”。 尝试配置定期,使其与组织内部系统使用的数据导入作业匹配。
  • 定期间隔 - 确定导出有效期。 文件仅在定期间隔内导出。
  • 时间范围 - 确定在给定运行中由导出生成的数据量。 常用选项是 MonthToDate 和 WeekToDate。
  • StartDate - 配置何时开始导出计划。 将在 StartDate 上创建一个导出,然后根据周期创建导出。
  • 类型 - 导出类型分为以下三种:
    • ActualCost - 显示指定时间段内的总使用量和费用,这些总使用量和费用已累积显示在帐单上。
    • AmortizedCost - 显示指定时间段内的总使用量和成本,并均摊适用的预留购买成本。
    • 用法 - 2020 年 7 月 20 日之前创建的所有导出均为“用法”类型。 将所有计划的导出更新为 ActualCost 或 AmortizedCost。
  • - 定义要包含在导出文件中的数据字段。 它们与成本详细信息 API 中可用的字段相对应。
  • 分区 - 如果数据集较大,并且希望将其分解为多个文件,请将此选项设置为 true。 这使得数据引入更快、更轻松。 有关分区的详细信息,请参阅大型数据集的文件分区

每天为订阅创建本月至今导出

请求 URL:PUT https://management.chinacloudapi.cn/{scope}/providers/Microsoft.CostManagement/exports/{exportName}?api-version=2020-06-01

{
  "properties": {
    "schedule": {
      "status": "Active",
      "recurrence": "Daily",
      "recurrencePeriod": {
        "from": "2020-06-01T00:00:00Z",
        "to": "2020-10-31T00:00:00Z"
      }
    },
    "format": "Csv",
    "deliveryInfo": {
      "destination": {
        "resourceId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/MYDEVTESTRG/providers/Microsoft.Storage/storageAccounts/{yourStorageAccount} ",
        "container": "{yourContainer}",
        "rootFolderPath": "{yourDirectory}"
      }
    },
    "definition": {
      "type": "ActualCost",
      "timeframe": "MonthToDate",
      "dataSet": {
        "granularity": "Daily",
        "configuration": {
          "columns": [
            "Date",
            "MeterId",
            "ResourceId",
            "ResourceLocation",
            "Quantity"
          ]
        }
      }
    }
}

复制大型 Azure 存储 Blob

可以使用成本管理在 Azure 存储帐户中计划以 Blob 形式导出 Azure 使用情况详细信息。 生成的 Blob 大小可能超过数 GB。 成本管理团队已与 Azure 存储团队协作测试了大型 Azure 存储 Blob 的复制。 以下部分说明了这些结果。 将存储 Blob 从一个 Azure 区域复制到另一个 Azure 区域预期会产生类似的结果。

同步传输特征

下面是与 DML 配合使用的服务端同步传输的一些特征,这些特征与该传输形式的用法有关:

  • DML 可以传输单个 Blob 或目录。 传输目录时,可以使用搜索模式来匹配 Blob 前缀。
  • 块 Blob 传输并行发生。 除非传输过程结束,否则所有传输不会停止。 各个 Blob 块以并行方式传输。
  • 传输在客户端上以异步方式执行。 可以通过方法回调(可在 TransferContext 对象中定义)定期获取传输状态。
  • 传输功能在传输过程中将创建检查点,并公开 TransferCheckpoint 对象。 该对象通过 TransferContext 对象表示最新的检查点。 如果在取消/中止传输之前保存了 TransferCheckpoint,则传输可以从最多七天内的检查点恢复。 传输可以从任何检查点(而不仅仅是最新检查点)恢复。
  • 如果在未实施检查点功能的情况下终止再重启传输客户端进程:
    • 在完成任何 Blob 传输之前,传输将重启。
    • 在完成一些 Blob 之后,只对未完成的 Blob 重启传输。
  • 暂停客户端执行会暂停传输。
  • 发生暂时性故障时,Blob 传输功能可使客户端独善其身。 例如,发生存储帐户限制一般不会导致传输失败,而只会减慢传输速度。
  • 服务端传输使用的 CPU 和内存客户端资源较少,且只会消耗一部分网络带宽和连接。

异步传输特征

可以结合 CopyMethod.ServiceSideAsyncCopy 选项调用 TransferManager.CopyDirectoryAsync() 方法。 从客户端角度看,异步传输的工作原理与同步传输机制类似,不过操作时存在以下差异:

  • 传输速率要比类似的同步传输慢(通常为 10 MB/s 或更慢)。
  • 即使客户端进程终止,传输也仍会继续。
  • 尽管支持检查点,但使用 TransferCheckpoint 恢复传输并不会在检查点时间进行恢复,而是从当前传输状态恢复。

测试摘要

Azure Blob 存储凭借其服务端同步传输功能支持较高的全局传输速率。 在 .NET 应用程序中使用该功能的方法就是直截了当地使用数据移动库。 成本管理导出能够在一小时内,将数百 GB 的数据可靠地复制到位于任何位置的存储帐户。