使用 Amazon CLI 运行和管理 CloudTrail Lake 查询 - Amazon CloudTrail
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

使用 Amazon CLI 运行和管理 CloudTrail Lake 查询

您可以使用 Amazon CLI 来运行和管理您的 CloudTrail Lake 查询。当使用 Amazon CLI 时,请记住您的命令在为您的配置文件配置的 Amazon Web Services 区域中运行。如果您想要在不同的区域中运行命令,可以为配置文件更改默认区域,或者与命令一起使用 --region 参数。

CloudTrail Lake 查询的可用命令

用于在 CloudTrail Lake 中运行和管理查询的命令包括:

有关 CloudTrail Lake 事件数据存储的可用命令列表,请参阅 可用于事件数据存储的命令

有关 CloudTrail Lake 控制面板的可用命令列表,请参阅 可用于控制面板的命令

有关 CloudTrail Lake 集成的可用命令列表,请参阅 CloudTrail Lake 集成的可用命令

使用 Amazon CLI 根据自然语言提示生成查询

运行 generate-query 命令以根据英语提示生成查询。对于 --event-data-stores,请提供要查询的事件数据存储的 ARN(或 ARN 的 ID 后缀)。您只能指定一个事件数据存储。对于 --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 开始查询

以下示例 Amazon CLI start-query 命令针对在查询语句中指定为 ID 的事件数据存储运行查询,并将查询结果传送到指定的 S3 桶。--query-statement 参数提供 SQL 查询,用单引号括起来。可选参数包括 --delivery-s3-uri,用于将查询结果传送到指定的 S3 存储桶。有关您可以在 CloudTrail Lake 中使用的查询语言的更多信息,请参阅 CloudTrail Lake SQL 限制

aws cloudtrail start-query --query-statement 'SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10' --delivery-s3-uri "s3://aws-cloudtrail-lake-query-results-123456789012-us-east-1"

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

输出

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

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

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

使用 Amazon CLI 获取有关查询的元数据

以下示例 Amazon CLI describe-query 命令获取有关查询的元数据,包括以毫秒为单位的查询运行时间、扫描和匹配的事件数、扫描的总字节数以及查询状态。BytesScanned 值与账户支付查询费用的总字节数匹配,除非查询仍在运行。如果查询结果已传送到 S3 存储桶,则响应还会提供 S3 URI 和交付状态。

您可以指定 --query-id--query-alias 参数的值。指定 --query-alias 参数会返回有关该别名的上次查询运行的信息。

aws cloudtrail describe-query --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

以下为响应示例。

{ "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", "QueryStatus": "RUNNING", "QueryStatistics": { "EventsMatched": 10, "EventsScanned": 1000, "BytesScanned": 35059, "ExecutionTimeInMillis": 3821, "CreationTime": "1598911142" } }

使用 Amazon CLI 获取查询结果

以下示例 Amazon CLI get-query-results 命令获取查询的事件数据结果。您必须指定 --query-id 返回的 start-query 命令。BytesScanned 值与账户支付查询费用的总字节数匹配,除非查询仍在运行。可选参数包括 --max-query-results,以指定希望在单个页面上通过命令返回的最大结果数。如果结果数超过指定的 --max-query-results 值,请再次运行命令,添加返回 NextToken 值来获取下一页的结果。

aws cloudtrail get-query-results --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

输出

{ "QueryStatus": "RUNNING", "QueryStatistics": { "ResultsCount": 244, "TotalResultsCount": 1582, "BytesScanned":27044 }, "QueryResults": [ { "key": "eventName", "value": "StartQuery", } ], "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryString": "SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10", "NextToken": "20add42078135EXAMPLE" }

使用 Amazon CLI 列出事件数据存储中的所有查询

以下示例 Amazon CLI list-queries 命令返回过去七天内针对指定事件数据存储的查询和查询状态的列表。您必须指定 ARN 或 --event-data-store ARN 值的 ID 后缀。或者,要缩短结果列表,您可以通过添加 --start-time--end-time 参数和 --query-status 值来指定时间范围、格式化为时间戳。QueryStatus 的有效值包括 QUEUEDRUNNINGFINISHEDFAILEDCANCELLED

list-queries 还有可选的分页参数。使用 --max-results 以指定希望在单个页面上通过命令返回的最大结果数。如果结果数超过指定的 --max-results 值,请再次运行命令,添加返回 NextToken 值来获取下一页的结果。

aws cloudtrail list-queries --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE --query-status CANCELLED --start-time 1598384589 --end-time 1598384602 --max-results 10

输出

{ "Queries": [ { "QueryId": "EXAMPLE2-0add-4207-8135-2d8a4EXAMPLE", "QueryStatus": "CANCELLED", "CreationTime": 1598911142 }, { "QueryId": "EXAMPLE2-4e89-9230-2127-5dr3aEXAMPLE", "QueryStatus": "CANCELLED", "CreationTime": 1598296624 } ], "NextToken": "20add42078135EXAMPLE" }

使用 Amazon CLI 取消正在运行的查询

以下示例 Amazon CLI cancel-query 命令取消状态为 RUNNING 的查询。您必须为 --query-id 指定一个值。当您运行 cancel-query 时,即使尚未完成 cancel-query 操作,查询状态也可能会显示为 CANCELLED

注意

取消的查询可能会产生费用。您的账户仍需为取消查询之前扫描的数据量支付费用。

以下是 CLI 示例。

aws cloudtrail cancel-query --query-id EXAMPLEd-17a7-47c3-a9a1-eccf7EXAMPLE

输出

QueryId -> (string) QueryStatus -> (string)