使用 AWS Glue 和 Amazon Redshift 分析您的 Amazon S3 支出

2021-12-15 00:00:00 查询 创建 数据 的是 您的

Original URL:https://aws.amazon.com/blogs/big-data/analyze-your-amazon-s3-spend-using-aws-glue-and-amazon-redshift/

AWS 成本和使用情况报告 (CUR) 会追踪您的 AWS 使用情况,并提供与之相关联的预计费用。您可以配置此报告为以小时或日为间隔显示数据;在账单收费期后结束前,它至少每天会更新一次。成本和使用情况报告会自动发送到由您指定的 Amazon S3 存储桶,可以在那里直接下载。您还可以将该报告整合到 Amazon Redshift,也可以通过 Amazon Athena 进行查询,或者把它上传到 Amazon QuickSight。如需更多信息,见本文将介绍采用 AWS Glue 数据目录和 Amazon Redshift,整合 AWS CUR、S3 清单报告和 S3 服务器访问日志,从而对 S3 使用情况和支出进行分析的解决方案。

先决条件

在开始前,满足以下先决条件:

  • 您需要一个 S3 存储桶,以便用于 S3 清单和服务器访问日志数据文件。如需更多信息,见创建存储桶和什么是 Amazon S3?
  • 您必须为Amazon Redshift和AWS Glue创建或者选择合适的具有读取S3上数据权限的IAM角色针对本文,选择两个非限制性的 IAM 角色(AmazonS3FullAccess 和 AWSGlueConsoleFullAccess),建议您根据您的实际情况对访问加以限制。

Amazon S3 清单

Amazon S3 清单是 S3 提供帮助对您的存储进行管理的工具之一。您可以用它对您的业务、合规和监管需求对象的复制与加密状态进行审计和报告。Amazon S3 清单每天或每周会为特定 S3 存储桶提供列出您的对象及其对应元数据列表, 以CSV、ORC,或Parquet 格式输出。

Amazon S3 服务器访问文件

服务器访问日志详细记录了您向存储桶发起的请求。服务器访问日志对于众多应用程序来说都相当有用,如在安全方面和访问审计时。它还有助于理解您的客户群与您的 S3 账单。

AWS Glue

AWS Glue 是一项完全托管的提取、转换和加载 (ETL) 服务,可简化并使对您的数据进行分类、清理、丰富,以及在各种数据存储之间进行可靠移动变得更具成本效益。AWS Glue 由一个被称为“数据目录”的中央元数据存储库、一个使用表格填充“数据目录”的爬网程序、一个自动生成 Python 或 Scala 代码的 ETL 引擎,以及一个可处理依赖关系解析、作业监控和重试的灵活计划程序组成。AWS Glue 采用无服务器技术,无需对基础设施进行设置或管理。本文使用 AWS Glue 对 S3 清单数据和服务器访问日志进行目录编列,让您可以通过 Amazon Redshift Spectrum 进行查询。

Amazon Redshift

Amazon Redshift 是一项完全托管的云中 PB 级数据仓库服务。您可以使用Amazon Redshift 对存储在 S3 上结构化数据进行高效查询与检索,而不用将数据加载到 Amazon Redshift 原生表当中。您可以在 AWS Glue 数据目录中定义文件的结构,从而创建 Amazon Redshift 外表。

设置 S3 清单报告以用于分析

本文将 Parquet 做为清单报告输出文件格式,并且每天将文件传输到 S3 存储桶。您可以在设置下方选择传输的频率与输出文件格式,如下方截图所示:

如需关于配置您的 S3 清单的更多信息,见如何配置 Amazon S3 清单?

下图显示的是此解决方案的数据流:

以下步骤对上述数据流图表进行了总结:

  • S3 清单报告被传输到您配置的 S3 存储桶。
  • AWS Glue 爬网程序会爬取此 S3 存储桶,并在 AWS Glue 数据目录中填充元数据。
  • 然后,即可通过 Redshift 中的外部scheme对 AWS Glue 数据目录进行访问。
  • 现在,您可以合并与查询 S3 清单报告(在 AWS Glue 数据目录中提供)以及成本和使用情况报告(在其他 S3 存储桶中提供)以用于分析。

清单报告被传输至 S3 存储桶。以下截图显示的是 S3 清单报告的 S3 存储桶结构:

此存储桶中有一个数据文件夹。此文件夹含有您想要分析的 Parquet 格式数据。以下截图显示的是该文件夹的内容。

这些都是日常文件,每天都有一个。

配置 AWS Glue 爬网程序

您可以使用 AWS Glue 爬网程序来发现您的 S3 存储桶中的此数据集,并且在数据目录中创建Schema 。在创建这些表以后,您可以直接从 Amazon Redshift 对其进行查询。

要配置您的爬网程序以便从您的 S3 存储桶读取 S3 清单文件,执行以下步骤:

  1. 选择爬网程序名称。
  2. 选择 S3 作为数据存储,并指定 S3 到数据的路径
  3. 选择从 S3 读取数据的 IAM 角色—AmazonS3FullAccess 和 AWSGlueConsoleFullAccess
  4. 设置运行爬网程序的频率计划。
  5. 通过选择数据库与添加前缀(若有)配置爬网程序的输出。

本文使用数据库 s3spendanalysis。

以下截图显示的是已完成的爬网程序配置。

运行此爬网程序,以添加表到您的 Glue 数据目录。在成功完成对爬网程序的设置以后,转至您的 AWS Glue 控制台的部分,以验证表的详细信息和表的元数据。以下截图显示的是在成功设置 AWS Glue 爬网程序以后的表的详细信息和表的元数据:

创建外部 schema

在可以对 S3 清单报告进行查询前,您需要在 Amazon Redshift 中创建外部schema(并随后创建外部表)。Amazon Redshift 外部schema会引用外部数据目录中的外部数据库。由于使用 AWS Glue 数据目录作为您的外部目录,在 Amazon Redshift 内创建外部schema以后,您可以在 Amazon Redshift 内看到您的数据目录中的全部外部表。要创建外部schema,输入以下代码:

create external schema spectrum_schema from data catalog
database 's3spendanalysis'
iam_role 'arn:aws:iam::<AWS_IAM_ROLE>';

相关文章