创建报告 - Application Cost Profiler

AWS 应用程序成本分析器将于 2024 年 9 月 30 日停产,不再接受新客户。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

创建报告

满足先决条件后,您就可以为 AWS 账户配置报告,并将使用量数据发送到 AWS Application Cost Profiler。本部分介绍如何配置报告以及如何将使用量数据发送到 Application Cost Profiler。

配置 Application Cost Profiler 报告

以下过程介绍如何配置要根据使用日期生成的报告。您可以配置详细信息,例如报告的生成频率。

注意

如果您的 AWS 账户属于 AWS 组织,则您可以使用管理账户或个人成员账户配置报告。为个人账户配置的报告仅包含该账户的数据。使用管理账户配置的报告可以包含整个组织的数据。

用于报告输出的 Amazon S3 存储桶必须属于创建报告配置的账户。

配置 Application Cost Profiler 报告
  1. 打开 Web 浏览器并登录 Application Cost Profiler 控制台

  2. 选择立即开始以配置或修改报告。

  3. 为您的报告输入报告名称报告描述

  4. 输入 S3 存储桶名称字段中输入 S3 存储桶的名称,然后在输入 S3 前缀字段中输入 S3 前缀。有关创建 S3 存储桶和授予 Application Cost Profiler 权限的更多信息,请参阅为 Application Cost Profiler 设置 Amazon S3 存储桶

  5. 选择您希望报告包含的选项:

    • 时间频率:选择是按每日每月还是按这两者的节奏生成报告。

    • 报告输出格式:选择要在 Amazon S3 存储桶中创建的文件的类型。如果您选择 CSV,则 Application Cost Profiler 会使用 gzip 压缩技术为报告创建一个逗号分隔值文本文件。如果选择 Parquet,则会为报告生成 Parquet 文件。

  6. 选择配置以保存您的报告配置。

注意

您还可以使用 AWS Application Cost Profiler API 来配置报告。

选择立即开始以查看当前报告配置,从而验证报告设置。

注意

您只能配置单个报告。如果返回到配置页面,则将编辑现有报告。

配置报告后,将启用数据摄取。您可以将服务与 Application Cost Profiler 集成,以为资源提供使用量数据。

报告来自服务的租户使用量数据

配置报告后,就可以从账户中的资源或服务发送租户使用量数据。将资源用于特定租户时,必须通知 Application Cost Profiler。例如,如果服务接受不同租户的 API 调用,则在开始和结束每个租户的 API 调用时,您将记录该租户的开始和结束时间。Application Cost Profiler 使用这些数据按每个租户在工作上花费的时间来生成有关服务成本的报告。

要向 Application Cost Profiler 提供使用量数据,您可以执行以下操作:

  • 准备资源使用量数据:创建表以描述特定租户使用资源的具体时间。

  • 上传使用量数据:将表上传到您已向 Application Cost Profiler 授予其访问权限的 Amazon S3 存储桶。

  • 导入使用量数据:调用 ImportApplicationUsage API 操作以通知 Application Cost Profiler 数据已准备就绪并可进行处理。

以下部分详细介绍了每个步骤。

步骤 1:准备资源使用量数据

当服务中正在使用资源时,您可以跟踪哪个租户正在使用该资源。将这些数据记录到一个表中,您可以稍后上传此表以供 Application Cost Profiler 导入。表中的每一行都描述了一项资源、正在使用该资源的租户,以及使用的开始和结束时间。例如,正在使用的 Amazon Elastic Compute Cloud (Amazon EC2) 实例就是一项资源。

此步骤要求您将代码集成到服务中,以输出有关使用情况的正确信息。

下表列出了资源使用情况表中的字段。

Field 描述
ApplicationId 标识系统中正在使用的应用程序或产品。定义租户元数据的范围。
TenantId 系统中正在消耗指定资源的租户的标识符。Application Cost Profiler 将在 ApplicationId 中聚合到此级别。
TenantDesc (可选)有关租户的其他数据,供您自己进行其他报告。
UsageAccountId 资源运行所用的账户(对于组织中的账户很重要)。
StartTime 采用 UTC 的纪元时间戳(以毫秒和微秒为单位)。表示指定租户的使用周期的开始时间。
EndTime 采用 UTC 的纪元时间戳(以毫秒和微秒为单位)。表示指定租户的使用周期的结束时间。
ResourceId 正在使用的资源的 Amazon 资源名称 (ARN)。
名称 (可选)作为指定 ResourceId 的一种替代方法,您可以指定名称资源标签,将成本归因于一组资源(该字段必须包含要用于名称标签的值)。资源标签将作为成本和使用情况报告的一部分被启用。有关资源标签的更多信息,请参阅《成本和使用情况报告用户指南》中的资源标签详细信息

输出必须位于包含标题行的逗号分隔值 (.csv) 文件中,如以下示例所示。

ApplicationId,TenantId,TenantDesc,UsageAccountId,StartTime,EndTime,ResourceId MyApp,Tenant1,,123456789012,1613681437032.9001,1613681437041.5312,arn:aws:ec2:us-east-1:123456789012:instance/1234-abcd-example-1234 MyApp,Tenant2,,123456789012,1613681245531.4426,1613681245551.1323,arn:aws:ec2:us-east-1:123456789012:instance/1234-abcd-example-1234 MyApp,Tenant1,,123456789012,1613681904815.3381,1613681904930.0972,arn:aws:ec2:us-east-1:123456789012:instance/1234-abcd-example-1234 MyApp,Tenant2,,123456789012,1613681904765.1956,1613681904946.574,arn:aws:ec2:us-east-1:123456789012:instance/1234-abcd-example-1234

将数据保存为扩展名为 .csv 的文件(如果使用 gzip 压缩,则扩展名为 .csv.gzip)。当您将这些数据上传到 Application Cost Profiler 时,每个时间切片都会分配给关联的租户。在此示例中,报告包含该租户的 Amazon EC2 实例成本的时间切片。未与特定租户关联的切片会添加到无可归属的租户,这仅适用于 Amazon EC2 实例。重叠的时间切片会被多次计数。您有责任确保使用情况表中的数据准确无误。

注意

您的文件必须表示一小时的时间。如果资源被使用多个小时,请按小时结束使用,并在同时启动的下一个文件中记新记录。

您必须提交单个包含整整一小时的数据的文件。如果为同一小时的数据提交了多个文件,则 Application Cost Profiler 将仅考虑最新文件中的数据。

例如,下表显示了 Application Cost Profiler 如何根据提供的时间切片计算三个租户一小时(360 万毫秒)的使用量。

租户 提供的时间切片 计算出的每小时成本百分比
Tenant1 120 万毫秒 33.34%
Tenant2 60 万毫秒 16.66%
<无可归属> 50.00%

在此示例中,为 Tenant1 分配了三分之一小时,为 Tenant2 分配了六分之一小时。剩下的半小时(180 万毫秒),即一小时的 50%,未归属于任何一个客户端。

目前,为 Application Cost Profiler 启用了以下资源:

  • Amazon EC2 实例(按需型实例和竞价型实例)

  • Lambda 函数(如果您要为 Lambda 函数发送数据,则必须以 ResourceId 形式发送非限定资源 ARN。)

  • Amazon Elastic Container Service (Amazon ECS) 实例

  • Amazon Simple Queue Service (Amazon SQS) 队列

  • Amazon Simple Notification Service (Amazon SNS) 主题

  • Amazon DynamoDB 读取和写入

注意

Amazon SQS、Amazon SNS 和 DynamoDB 使用量不按时间收费,这与大多数资源不同。对它们而言,一小时内的使用量(例如,DynamoDB 中的读取和写入次数)按您分配给不同租户的小时百分比进行分类,而与在这小时内何时发生读取或写入无关。

第 2 步:上传资源使用量数据

获得租户使用情况文件后,将数据文件上传到 Amazon S3 并确保 Application Cost Profiler 有权访问此文件。

要了解有关创建 S3 存储桶的更多信息,请参阅 Application Cost Profiler 特定先决条件

您必须确保 Application Cost Profiler 有权访问 S3 存储桶。对每个 S3 存储桶只需执行一次此操作(您可以重复使用同一个存储桶来上传多个使用情况文件)。有关提供对存储桶的访问权限的更多信息,请参阅授予 Application Cost Profiler 访问您的使用量数据 S3 存储桶的权限。如果存储桶已加密,请参阅授予 Application Cost Profiler 访问 SSE-KMS 加密 S3 存储桶的权限

注意

您不需要对用于存储使用量数据的 S3 存储桶进行加密。

每小时将数据作为扩展名为 .csv 的文件上传到 S3 存储桶(如果使用 gzip 进行了压缩,则扩展名为 .csv.gzip)。上传新文件后,您必须通知 Application Cost Profiler 您已上传该文件,以便该文件可以导入到报告中。

注意

授予 Application Cost Profiler 访问您的使用量数据的权限,即表示您同意我们在处理报告时可以将此类使用量数据对象临时复制到美国东部(弗吉尼亚州北部)AWS 区域。在生成完月度报告之前,这些数据对象将保留在美国东部(弗吉尼亚州北部)区域。

步骤 3:将使用量数据导入 Application Cost Profiler

将使用量数据上传到 Application Cost Profiler 有权访问的 Amazon S3 存储桶后,通知 Application Cost Profiler 该数据存在并将其导入到最终报告中。您可以使用 Application Cost Profiler API 中的 ImportApplicationUsage 操作来执行此操作。

有关 AWS Application Cost Profiler API 的信息(包括 ImportApplicationUsage 操作),请参阅 AWS Application Cost Profiler API 参考

以下示例显示了如何调用 ImportApplicationUsage。将括号中的输入文本替换为您的 S3 存储桶和已上传对象的值。

POST /ImportApplicationUsage HTTP/1.1 Content-type: application/json { "sourceS3Location" : { "bucket": "<bucket-name>", "key": "<object-key>", "region": "<region-id>" } }
注意

只有当存储桶处于默认禁用的 AWS 区域中时,才需要 region 参数。有关更多信息,请参阅 AWS 一般参考中的管理 AWS 区域

Application Cost Profiler 使用您通过 ImportApplicationUsage 导入的数据按照您在配置报告时请求的频率生成新报告。

配置报告并将使用量数据自动导入到 Application Cost Profiler 后,您就可以查看生成的报告了。有关报告的更多信息,请参阅使用 Application Cost Profiler 报告