

# 配置每个查询和每个工作组的数据使用情况控制
<a name="workgroups-setting-control-limits-cloudwatch"></a>

 Athena 允许您设置两种类型的成本控制：每个查询限制和每个工作组限制。对于每个工作组，您可以设置一个每个查询限制和多个每个工作组限制。
+ **每个查询控制限制**用于指定扫描的每个查询的数据总量。如果工作组中运行的任何查询超出限制值，则该查询将取消。在工作组中您只能创建一个每个查询控制限制，该限制适用于工作组中运行的每个查询。如果您需要进行更改，可编辑限制。有关详细步骤，请参阅[创建每个查询数据使用控制](#configure-control-limit-per-query)。
+ **工作组范围内数据使用控制限制**用于指定在指定时间段内，针对该工作组中运行的所有查询扫描的数据总量。您可以创建多个每个工作组限制。通过工作组范围内查询限制，您可以对工作组中运行的查询所扫描的数据设置每小时或每日聚合的多个阈值。

  如果扫描的数据聚合量超出阈值，那么您可以将通知推送到 Amazon SNS 主题。要如此做，您需要在 Athena 控制台中配置 Amazon SNS 警报和操作，以便当达到限制值时通知管理员。有关详细步骤，请参阅[创建每个工作组数据使用控制](#configure-control-limit-per-workgroup)。您还可以从 CloudWatch 控制台，对 Athena 发布的任何指标创建告警和操作。例如，您可以对失败的查询次数设置警报。如果数量超出特定阈值，此警报可以触发向管理员发送电子邮件。如果超出限制值，操作将向指定用户发送 Amazon SNS 警报通知。

  您可以采取的其他操作：
  + 调用 Lambda 函数。有关更多信息，请参阅《*Amazon Simple Notification Service 开发人员指南*》中的[使用 Amazon SNS 通知调用 Lambda 函数](https://docs.amazonaws.cn/sns/latest/dg/sns-lambda-as-subscriber.html)。
  + 禁用工作组，以停止运行任何后续查询。要查看步骤，请参阅[启用或禁用工作组](workgroups-enabled-disabled.md)。

每个查询限制和每个工作组限制是相互独立的。只要超出任一限制，就会执行指定操作。如果两个或多个用户在同一工作组中同时运行查询，那么有可能每个查询未超出任何指定的限制，但扫描的数据总量超出了每个工作组的数据使用限制。在这种情况下，会向用户发送 Amazon SNS 告警。

## 创建每个查询的数据使用情况控制
<a name="create-a-per-query-data-usage-control"></a><a name="configure-control-limit-per-query"></a>

**创建每个查询数据使用控制**

每个查询控制限制用于指定扫描的每个查询的数据总量。如果工作组中运行的任何查询超出限制值，则该查询将取消。取消的查询将按照 [Amazon Athena 定价](https://www.amazonaws.cn/athena/pricing/)进行计费。
**注意**  
当查询被取消或失败时，Athena 可能已将部分结果写入 Amazon S3。在这种情况下，Athena 不会从存储结果的 Amazon S3 前缀中删除部分结果。您必须删除带有部分结果的 Amazon S3 前缀。Athena 使用 Amazon S3 分段上传来写入数据 Amazon S3。我们建议您设置存储桶生命周期策略，以便当查询失败时终止分段上传。有关更多信息，请参阅《Amazon Simple Storage Service 用户指南**》中的 [使用存储桶生命周期策略中止未完成的分段上传](https://docs.amazonaws.cn/AmazonS3/latest/userguide/mpuoverview.html#mpu-abort-incomplete-mpu-lifecycle-config)。
在某些情况下，Athena 可能会自动重试查询执行。在大多数情况下，这些查询能够成功完成，并将查询 ID 标记为 `Completed`。这些查询可能在初始尝试时写入了部分结果，并且可能会生成不完整的分段上传。

在工作组中您只能创建一个每个查询控制限制，该限制适用于工作组中运行的每个查询。如果您需要进行更改，可编辑限制。

1. 从 [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home) 打开 Athena 控制台。

1. 在导航窗格中，选择 **Workgroups**（工作组）。

1. 从列表中选择工作组的名称。

1. 在**执行控制**选项卡上，选择**编辑控件**。

1. 编辑**扫描数据限制**的值。
   + 指定一个介于 10MB（最小值）与 7EB（最大值）之间的值。
   + 从下拉列表中选择单位值（例如，**千字节 KB** 或 **艾字节 EB**）。
**注意**  
如果超出限制，默认操作为取消查询。此设置不可更改。

1. 选择**保存**立即应用您的更改。

## 创建或编辑每个工作组的数据使用情况提示
<a name="create-a-per-workgroup-data-usage-alert"></a><a name="configure-control-limit-per-workgroup"></a>

**创建或编辑每个工作组的数据使用提示**

当工作组中运行的查询在特定时间段内扫描指定数量的数据时，可以设置多个提示阈值。提示使用 Amazon CloudWatch 发出告警，并适用于工作组中的所有查询。达到阈值后，您可以让 Amazon SNS 向指定的用户发送电子邮件。达到阈值时，查询不会自动取消。

1. 从 [https://console.aws.amazon.com/athena/](https://console.amazonaws.cn/athena/home) 打开 Athena 控制台。

1. 如果控制台导航窗格不可见，请选择左侧的扩展菜单。

1. 在导航窗格中，选择 **Workgroups**（工作组）。

1. 从列表中选择工作组的名称。

1. 选择 **Edit**（编辑）以编辑工作组设置。

1. 向下滚动到并展开 **Workgroup data usage alerts - optional**（工作组数据使用提示 - 可选）。

1. 选择 **Add alert**（添加提示）。

1. 对于 **Data usage threshold configuration**（数据使用阈值配置），指定以下值：
   + 对于 **Data threshold**（数据阈值），指定数字，然后从下拉列表中选择单位值。
   + 对于 **Time period**（时间段），从下拉列表中选择时间段。
   + 对于 **SNS topic selection**（SNS 主题选择），从下拉列表中选择 Amazon SNS 主题。或者，选择 **Create SNS topic**（创建 SNS 主题）直接转至 [Amazon SNS 控制台](https://console.amazonaws.cn/sns/v2/home)，创建 Amazon SNS 主题，并为 Athena 账户中的用户之一设置该主题的订阅。有关更多信息，请参阅 *Amazon Simple Notification Service 开发人员指南*中的 [Amazon SNS 入门](https://docs.amazonaws.cn/sns/latest/dg/sns-getting-started.html)。

1. 如果正在创建新提示，则选择 **Add alert**（添加提示）；如果要保存现有的提示，则选择 **Save**（保存）。