CloudTrail 湖泊 SQL 限制 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

CloudTrail 湖泊 SQL 限制

CloudTrail 湖泊查询是 SQL 字符串。本节提供有关支持的函数、运算符和架构相关信息。

仅允许使用 SELECT 语句。没有查询字符串可以更改或变更数据。

CloudTrail Lake 支持所有有效的 Presto SQL SELECT 语句、函数和运算符。如需详细了解支持的 SQL 函数和运算符,请参阅 Presto 文档网站中的函数和运算符

CloudTrail 控制台提供了许多示例查询,可以帮助您开始编写自己的查询。有关更多信息,请参阅 查看 CloudTrail 控制台中的示例查询

支持的函数、条件和联接运算符

支持的函数

CloudTrail Lake 支持 Presto 的所有功能。如需详细了解支持的函数,请参阅 Presto 文档网站中的函数和运算符

CloudTrail Lake 不支持该INTERVAL关键字。

支持的条件运算符

以下是支持的条件运算符。

AND OR IN NOT IS (NOT) NULL LIKE BETWEEN GREATEST LEAST IS DISTINCT FROM IS NOT DISTINCT FROM < > <= >= <> != ( conditions ) #parenthesised conditions

支持的联接运算符

以下是支持的 JOIN 运算符。有关运行多表查询的更多信息,请参阅 高级多表查询支持

UNION UNION ALL EXCEPT INTERSECT LEFT JOIN RIGHT JOIN INNER JOIN

高级多表查询支持

CloudTrail Lake 支持跨多个事件数据存储的高级查询语言。

要运行查询,请在 Amazon CLI中使用 start-query 命令。以下是一个示例,它使用本节中的一个示例查询。

aws cloudtrail start-query --query-statement "Select eventId, eventName from EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE UNION Select eventId, eventName from EXAMPLEg741-6y1x-9p3v-bnh6iEXAMPLE UNION ALL Select eventId, eventName from EXAMPLEb529-4e8f9l3d-6m2z-lkp5sEXAMPLE ORDER BY eventId LIMIT 10;"

响应是 QueryId 字符串。要获取查询的状态,请使用 start-query 返回的值 QueryId 运行 describe-query。如果查询成功,您可以运行 get-query-results 以获取结果。

UNION|UNION ALL|EXCEPT|INTERSECT

以下是一个示例查询,它使用 UNIONUNION ALL 在三个事件数据存储(EDS1、EDS2 和 EDS3)中按它们的事件 ID 和事件名称查找事件。首先从每个事件数据存储中选择结果,然后将结果串联起来,按事件 ID 排序,并限制为十个事件。

Select eventId, eventName from EDS1 UNION Select eventId, eventName from EDS2 UNION ALL Select eventId, eventName from EDS3 ORDER BY eventId LIMIT 10;

LEFT|RIGHT|INNER JOIN

以下是一个示例查询,它使用 LEFT JOIN 查找名为 eds2、映射到 edsB 的事件数据存储中的所有事件,这些事件与主(左侧)事件数据存储 edsA 中的事件匹配。返回的事件发生在 2020 年 1 月 1 日或之前,并且仅返回事件名称。

SELECT edsA.eventName, edsB.eventName, element_at(edsA.map, 'test') FROM eds1 as edsA LEFT JOIN eds2 as edsB ON edsA.eventId = edsB.eventId WHERE edsA.eventtime <= '2020-01-01' ORDER BY edsB.eventName;