根据自然语言提示创建 CloudTrail Lake 查询 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

根据自然语言提示创建 CloudTrail Lake 查询

您可以使用 CloudTrail Lake 查询生成器根据您提供的英语提示生成查询。查询生成器使用生成式人工智能(生成式 AI)根据您的提示生成 ready-to-useSQL查询,然后您可以选择在 Lake 的查询编辑器中运行该查询,也可以进行进一步微调。您无需对 CloudTrail 事件字段有广泛的SQL了解即可使用查询生成器。

提示可以是关于 La CloudTrail ke 事件数据存储中事件数据的问题或陈述。例如,你可以输入类似的提示 "What are my top errors in the past month?" 以及 “Give me a list of users that used SNS.”

提示的长度至少为 3 个字符,最多为 500 个字符。

生成查询不收取任何费用;但是,当您运行查询时,需要根据扫描的优化和压缩数据量支付费用。为了帮助控制成本,我们建议您通过为查询添加开始和结束 eventTime 时间戳来限制查询。

注意

您可以通过选择生成的查询下方的大拇指向上或大拇指向下按钮来提供有关生成的查询的反馈。当您提供反馈时, CloudTrail 保存您的提示和生成的查询。

请勿在提示中包含任何个人身份信息、机密信息或敏感信息。

此功能使用生成式 AI 大型语言模型 (LLMs);我们建议仔细检查LLM响应。

您可以使用 CloudTrail 控制台和访问查询生成器 Amazon CLI。

CloudTrail console
在 CloudTrail 控制台上使用查询生成器
  1. 登录 Amazon Web Services Management Console 并打开 CloudTrail 控制台,网址为https://console.aws.amazon.com/cloudtrail/

  2. 在导航窗格中,在 Lake 下,选择查询

  3. 查询页面上,选择编辑器选项卡。

  4. 选择要为其创建查询的事件数据存储。

  5. 查询生成器区域中,使用纯英语输入提示。有关示例,请参阅提示示例

  6. 选择生成查询。查询生成器将尝试根据您的提示生成查询。如果成功,查询生成器将在编辑器中提供SQL查询。如果提示失败,请改写提示并重试。

  7. (可选)您可以提供有关生成的查询的反馈。要提供反馈,请选择提示下方出现的竖起大拇指或竖起大拇指按钮。当您提供反馈时, CloudTrail 保存您的提示和生成的查询。

  8. (可选)选择运行以运行查询。

    注意

    运行查询时,您需要根据扫描的优化和压缩数据量支付费用。为了帮助控制成本,我们建议您通过为查询添加开始和结束 eventTime 时间戳来限制查询。

  9. (可选)如果您运行查询并且有结果,则可以选择汇总结果以自然语言生成查询结果的英语摘要。此选项使用生成式人工智能(生成式 AI)来生成摘要。有关此选项的更多信息,请参阅 用自然语言汇总查询结果

    您可以通过选择显示在生成的摘要下方的竖起大拇指或竖起大拇指按钮来提供有关摘要的反馈。

    注意

    La CloudTrail ke 的查询摘要功能处于预览版,可能会发生变化。此功能在以下区域可用:亚太地区(东京)、美国东部(弗吉尼亚北部)和美国西部(俄勒冈)。

Amazon CLI

使用生成查询 Amazon CLI

运行generate-query命令以从英语提示符生成查询。对于--event-data-stores,请提供要查询的事件数据存储的ARN(或 ID 后缀ARN)。您只能指定一个事件数据存储。对于--prompt,请用英语提供提示。

aws cloudtrail generate-query --event-data-stores arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE \ --prompt "Show me all console login events for the past week?"

如果成功,该命令将输出一条SQL语句并提供一条语句QueryAlias,您将在start-query命令中使用该语句来对事件数据存储运行查询。

{ "QueryStatement": "SELECT * FROM $EDS_ID WHERE eventname = 'ConsoleLogin' AND eventtime >= timestamp '2024-09-16 00:00:00' AND eventtime <= timestamp '2024-09-23 00:00:00' AND eventSource = 'signin.amazonaws.com'", "QueryAlias": "AWSCloudTrail-UUID" }

要使用运行查询 Amazon CLI

使用上一个示例中start-query命令QueryAlias输出的generate-query命令运行该命令。您还可以选择通过提供来运行该start-query命令QueryStatement

aws cloudtrail start-query --query-alias AWSCloudTrail-UUID

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

{ "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE" }
注意

运行时间超过一小时的查询可能会超时。您仍可获得在查询超时之前处理的部分结果。

如果您使用可选--delivery-s3uri参数将查询结果传送到 S3 存储桶,则存储桶策略必须授予将查询结果传送到该存储桶的 CloudTrail 权限。有关手动编辑存储桶策略的信息,请参阅用于 CloudTrail Lake 查询结果的 Amazon S3 存储桶策略

所需的权限

AWSCloudTrail_FullAccessAdministratorAccess托管策略都提供了使用此功能所需的权限。

您也可以将 cloudtrail:GenerateQuery 操作包含在新的或现有的客户托管策略或内联策略中。

区域支持

以下版本支持此功能 Amazon Web Services 区域:

  • 亚太地区(孟买)区域 (ap-south-1)

  • 亚太地区(悉尼)区域 (ap-southeast-2)

  • 亚太地区(东京)区域 (ap-northeast-1)

  • 加拿大(中部)区域 (ca-central-1)

  • 欧洲(伦敦)区域 (eu-west-2)

  • 美国东部(弗吉尼亚州北部)区域 (us-east-1)

  • 美国西部(俄勒冈州)区域 (us-west-2)

限制

下面是查询生成器的限制:

  • 查询生成器只能接受英文提示。

  • 查询生成器只能对收集事件(管理事件、数据 CloudTrail 事件、网络活动事件)的事件数据存储生成查询。

  • 查询生成器无法为与 La CloudTrail ke 事件数据无关的提示生成查询。

提示示例

本节提供示例提示以及根据提示生成的SQL查询。

如果您选择运行本节中的示例查询,请eds-id替换为要查询的事件数据存储的 ID,并将时间戳替换为适合您的用例的时间戳。时间戳采用以下格式:YYYY-MM-DD HH:MM:SS

提示:What are my top errors in the past month?

SQL查询:

SELECT errorMessage, COUNT(*) as eventCount FROM eds-id WHERE errorMessage IS NOT NULL AND eventTime >= timestamp '2024-05-01 00:00:00' AND eventTime <= timestamp '2024-05-31 23:59:59' GROUP BY 1 ORDER BY 2 DESC LIMIT 2;

提示:Give me a list of users that used SNS.

SQL查询:

SELECT DISTINCT userIdentity.arn AS user FROM eds-id WHERE eventSource = 'sns.amazonaws.com'

提示:What are my API counts each day for read and write events in the past month?

SQL查询:

SELECT date(eventTime) AS event_date, SUM( CASE WHEN readonly = true THEN 1 ELSE 0 END ) AS read_events, SUM( CASE WHEN readonly = false THEN 1 ELSE 0 END ) AS write_events FROM eds-id WHERE eventTime >= timestamp '2024-05-04 00:00:00' AND eventTime <= timestamp '2024-06-04 23:59:59' GROUP BY 1 ORDER BY 1 ASC;

提示:Show any events with access denied errors for the past three weeks.

SQL查询:

SELECT * FROM eds-id WHERE WHERE (errorCode = 'AccessDenied' OR errorMessage = 'Access Denied') AND eventTime >= timestamp '2024-05-16 01:00:00' AND eventTime <= timestamp '2024-06-06 01:00:00'