使用 AWS 开发工具包对 Amazon Athena 进行查询验证

Query validation for Amazon Athena using AWS SDK

我正在使用 AWS SDK 通过 Java 执行 Amazon Athena 查询,我想做的是通过某种方式确保仅执行 SELECT 查询。这是为了确保不执行 DROP 或 INSERT 等查询。那么有什么方法可以使用 AWS SDK 执行此检查而无需使用任何其他依赖项?

我正在考虑在 Athena 中使用 EXPLAIN 查询(​​Presto EXPLAIN 查询)来识别我们正在执行的查询类型,但我不太确定如何读取 EXPLAIN 查询的响应。

关于阅读 EXPLAIN 查询响应或我可以使用的任何其他替代方法的任何建议都很棒。谢谢

您使用 IAM 策略控制 Athena 中的权限。 Athena 使用 Glue Data Catalog 来存储有关表的元数据。管理允许谁创建和删除表的 IAM 操作属于 Glue,因为当您 运行 像 DROP TABLE foo.[=15= 这样的查询时,这是在幕后使用的 API ]

如果您创建的策略不包含创建或删除表和分区的权限,则使用该策略的用户将无法 运行 导致创建或删除表或分区的查询添加或删除。

换句话说,只允许 glue:GetTableglue:GetPartitions 等操作,而不是 glue:DeleteTable 和 [=14] 等操作=].

任何需要此类权限的查询都会return出错。