工作组故障排除 - Amazon Athena
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

工作组故障排除

按照以下提示进行工作组故障排除。

  • 检查您账户中各个用户的权限。他们必须可访问查询结果的位置,以及要从中运行查询的工作组。如果他们要切换工作组,那么同时需要两个工作组的权限。有关信息,请参阅 用于访问工作组的 IAM policy

  • 请注意 Athena 控制台中的上下文,以查看您要在哪一工作组中运行查询。如果您使用驱动程序,请确保设置为您需要的工作组。有关信息,请参阅 指定从中运行查询的工作组

  • 如果您使用 API 或驱动程序运行查询,则必须使用以下方式之一指定查询结果的位置:对于单个查询,请使用 OutputLocation(客户端)。在工作组中,使用WorkGroupConfiguration。如果没有以任何一种方法指定位置,Athena 将在查询运行时发布错误。

  • 如果您使用工作组设置覆盖客户端设置,您可能会遇到有关查询结果位置的错误。例如,工作组用户可能没有相应权限,不能在 Amazon S3 中的工作组位置存储查询结果。在这种情况下,添加必需的权限。

  • 工作组会导致 API 操作的行为发生变化。要调用以下现有的 API 操作,要求您账户中的用户在 IAM 中对从中进行调用的工作组具有基于资源的权限。如果不存在工作组和工作组操作的权限,则会抛出以下 API 操作AccessDeniedExceptionCreateNamedQueryDeleteNamedQueryGetNamedQueryListNamedQueriesStartQueryExecutionStopQueryExecutionListQueryExecutionsGetQueryExecutionGetQueryResults、和 GetQueryResultsStream(此 API 操作仅适用于驱动程序,以其他方式不会公开供公众使用)。有关更多信息,请参阅《服务授权参考》中的 Amazon Athena 的操作、资源和条件键

    BatchGetQueryExecutionBatchGetNamedQueryAPI 操作的调用仅返回有关在用户有权访问的工作组中运行的查询的信息。如果用户不可访问工作组,这些 API 操作会在未处理 ID 的列表中返回未授权的查询 ID。有关更多信息,请参阅 Athena 工作组 API

  • 如果将从中运行查询的工作组已使用强制实施的查询结果位置配置,不要为 CTAS 查询指定 external_location。在此例中,Athena 将使指定了 external_location 的查询失败并发布错误。例如,如果您覆盖查询结果位置的客户端设置,强制工作组使用其自己的位置,此查询失败:CREATE TABLE <DB>.<TABLE1> WITH (format='Parquet', external_location='s3://my_test/test/') AS SELECT * FROM <DB>.<TABLE2> LIMIT 10;

您可能会看到以下错误。下表给出与工作组相关的部分错误以及建议的解决方案的列表。

工作组错误
错误 出错情况...
query state CANCELED.(查询状态已取消。) Bytes scanned limit was exceeded.(已超出扫描字节数限制。) 查询超过查询数据限制并已取消。请考虑重写查询以使其读取更少的数据,或联系您的账户管理员。
用户:arn: aws: iam:: 123456789012: user/abc 无权在资源上执行:雅典娜:arn: aws: athena: us-east-1:123456789012: workgroup/workgroupn ame StartQueryExecution 用户在一个工作组中运行查询,但不可访问该工作组。更新您的策略以便可访问该工作组。
输入无效。 WorkGroup <name>已禁用。 用户在一个工作组中运行查询,但该工作组已被禁用。您的工作组可由您的管理员禁用。也有可能是您没有对其的访问权限。在这两种情况下,与有权访问以修改工作组的管理员联系。
输入无效。 WorkGroup <name>未找到。 用户在一个工作组中运行查询,但该工作组不存在。如果工作组已被删除,就会发生这种情况。切换到另一工作组以运行查询。
InvalidRequestException: 调用 StartQueryExecution操作时:未提供输出位置。An output location is required either through the Workgroup result configuration setting or as an API input.(需要通过工作组结果配置设置或作为 API 输入的输出位置。)

用户使用 API 运行查询,但未指定查询结果的位置。必须使用以下两种方式之一来设置查询结果的输出位置:要么使用单个查询 OutputLocation(客户端),要么在工作组中使用。WorkGroupConfiguration

The Create Table As Select query failed because it was submitted with an 'external_location' property to an Athena Workgroup that enforces a centralized output location for all queries.(“根据选择创建表”查询失败,因为其与“external_location”属性一同提交给强制执行所有查询集中输出位置的 Athena 工作组。) Please remove the 'external_location' property and resubmit the query.(请删除“external_location”属性并重新提交查询。)

如果从中运行查询的工作组已使用强制实施的查询结果位置配置,而且您为 CTAS 查询指定 external_location。在这种情况下,请删除 external_location 并重新运行查询。
Cannot create prepared statement prepared_statement_name.(无法创建预处理语句 prepared_statement_name。) The number of prepared statements in this workgroup exceeds the limit of 1000.(该工作组中的预处理语句数已超过 1000 的限制。) 工作组中的预处理语句数已超过 1000 的限制。为解决此问题,请使用 DEALLOCATE PREPARE 从工作组中删除一条或多条预处理语句。或者,创建新工作组。