使用 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 创建事件数据存储

使用 create-event-data-store 命令创建事件数据存储。

创建事件数据存储时,唯一需要的参数是 --name,它用于标识事件数据存储。您可以配置其他可选参数,包括:

  • --advanced-event-selectors - 指定要包括在事件数据存储中的事件的类型。默认情况下,事件数据存储会记录所有的管理事件。有关高级事件选择器的更多信息,请参阅《 CloudTrail API 参考》中的 AdvancedEventSelector

  • --kms-key-id - 指定用于加密 CloudTrail 所传输的事件的 AWS KMS 密钥 ID。该值可以是前缀为 alias/ 的别名、别名的完全指定 ARN、密钥的完全指定 ARN 或全局唯一标识符。

  • --multi-region-enabled - 创建多区域事件数据存储,以记录您账户中所有 Amazon Web Services 区域 的事件。默认情况下,即使未添加参数,也会设置 --multi-region-enabled

  • --organization-enabled - 启用事件数据存储,以收集组织中所有账户的事件。默认情况下,不会为组织中的所有账户启用事件数据存储。

  • --billing-mode - 决定了摄取和存储事件的成本,以及事件数据存储的默认和最长保留期。

    有以下可能值。

    • EXTENDABLE_RETENTION_PRICING - 如果您每月摄取的事件数据少于 25TB,并且想要最长 3653 天(大约 10 年)的灵活保留期,则通常建议使用这种计费模式。此计费模式的默认保留期为 366 天。

    • FIXED_RETENTION_PRICING - 如果您希望每月摄取的事件数据大于 25TB,并且需要最长 2557 天(大约 7 年)的保留期,则建议采用此计费模式。此计费模式的默认保留期为 2557 天。

    默认值为 EXTENDABLE_RETENTION_PRICING

  • --retention-period - 事件在事件数据存储中保留的天数。如果 --billing-modeEXTENDABLE_RETENTION_PRICING,则有效值为介于 7 和 3653 之间的整数;如果 --billing-mode 设置为 FIXED_RETENTION_PRICING,则有效值为介于 7 和 2557 之间的整数。如果您未指定 --retention-period,则 CloudTrail 将为 --billing-mode 使用默认保留期。

  • --start-ingestion - --start-ingestion 参数在其被创建时在事件数据存储上开始事件摄取。即使未添加该参数,也会设置此参数。

    如果您不希望事件数据存储摄取实时事件,请指定 --no-start-ingestion。例如,如果您要将事件复制到事件数据存储中,并且仅计划使用事件数据存储来分析过去的事件,则可能要设置此参数。仅当 eventCategoryManagementDataConfigurationItem 时,--no-start-ingestion 参数才有效。

以下示例演示了如何创建不同类型的事件数据存储。

使用 Amazon CLI 为 S3 数据事件创建事件数据存储

以下示例 Amazon Command Line Interface(Amazon CLI)create-event-data-store 命令创建一个名为 my-event-data-store 的事件数据存储,它将选择所有 Amazon S3 数据事件并使用 KSM 密钥加密。

aws cloudtrail create-event-data-store \ --name my-event-data-store \ --kms-key-id "arn:aws:kms:us-east-1:123456789012:alias/KMS_key_alias" \ --advanced-event-selectors '[ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3"] } ] } ]'

以下为响应示例。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "my-event-data-store", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 366, "KmsKeyId": "arn:aws:kms:us-east-1:123456789012:alias/KMS_key_alias", "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-09T22:19:39.417000-05:00", "UpdatedTimestamp": "2023-11-09T22:19:39.603000-05:00" }

使用 Amazon CLI 为 Amazon Config 配置项目创建事件数据存储

以下示例 Amazon CLI create-event-data-store 命令创建一个名为 config-items-eds 的事件数据存储,它将选择 Amazon Config 配置项目。要收集配置项目,请在高级事件选择器中指定 eventCategory 字段等于 ConfigurationItem

aws cloudtrail create-event-data-store \ --name config-items-eds \ --advanced-event-selectors '[ { "Name": "Select Amazon Config configuration items", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ConfigurationItem"] } ] } ]'

以下为响应示例。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "config-items-eds", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Select Amazon Config configuration items", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ConfigurationItem" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 366, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-07T19:03:24.277000+00:00", "UpdatedTimestamp": "2023-11-07T19:03:24.468000+00:00" }

使用 Amazon CLI 为管理事件创建组织事件数据存储

以下示例 Amazon CLI create-event-data-store 命令创建一个组织事件数据存储,用于收集所有管理事件并将 --billing-mode 参数设置为 FIXED_RETENTION_PRICING

aws cloudtrail create-event-data-store --name org-management-eds --organization-enabled --billing-mode FIXED_RETENTION_PRICING

以下为响应示例。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE6-d493-4914-9182-e52a7934b207", "Name": "org-management-eds", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": true, "BillingMode": "FIXED_RETENTION_PRICING", "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-16T15:30:50.689000+00:00", "UpdatedTimestamp": "2023-11-16T15:30:50.851000+00:00" }

使用 Amazon CLI 为 Insights 事件创建事件数据存储

要在 CloudTrail Lake 中记录 Insights 事件,您需要有一个用于收集 Insights 事件的目标事件数据存储和一个用于启用 Insights 事件和记录管理事件的源事件数据存储。

此过程向您展示如何创建目标和源事件数据存储,然后启用 Insights 事件。

  1. 运行 aws cloudtrail create-event-data-store 命令创建收集 Insights 事件的目标事件数据存储。eventCategory 的值必须为 Insight。将 retention-period-days 替换为您想要在事件数据存储中保留事件的天数。如果 --billing-modeEXTENDABLE_RETENTION_PRICING,则有效值为介于 7 和 3653 之间的整数;如果 --billing-mode 设置为 FIXED_RETENTION_PRICING,则有效值为介于 7 和 2557 之间的整数。如果您未指定 --retention-period,则 CloudTrail 将为 --billing-mode 使用默认保留期。

    如果您使用 Amazon Organizations 组织的管理账户登录,则如果要向委托管理员授予对事件数据存储的访问权限,请包含 --organization-enabled 参数。

    aws cloudtrail create-event-data-store \ --name insights-event-data-store \ --no-multi-region-enabled \ --retention-period retention-period-days \ --advanced-event-selectors '[ { "Name": "Select Insights events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Insight"] } ] } ]'

    以下为响应示例。

    { "Name": "insights-event-data-store", "ARN": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "AdvancedEventSelectors": [ { "Name": "Select Insights events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Insight" ] } ] } ], "MultiRegionEnabled": false, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": "90", "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-05-08T15:22:33.578000+00:00", "UpdatedTimestamp": "2023-05-08T15:22:33.714000+00:00" }

    您将使用响应中的 ARN(或 ARN 的 ID 后缀)作为步骤 3 中参数 --insights-destination 的值。

  2. 请运行 aws cloudtrail create-event-data-store 命令以创建记录管理事件的源事件数据存储。默认情况下,事件数据存储会记录所有的管理事件。您无需指定任何高级事件选择器即可记录所有管理事件。将 retention-period-days 替换为您想要在事件数据存储中保留事件的天数。如果 --billing-modeEXTENDABLE_RETENTION_PRICING,则有效值为介于 7 和 3653 之间的整数;如果 --billing-mode 设置为 FIXED_RETENTION_PRICING,则有效值为介于 7 和 2557 之间的整数。如果您未指定 --retention-period,则 CloudTrail 将为 --billing-mode 使用默认保留期。如果您正在创建组织事件数据存储,请包括 --organization-enabled 参数。

    aws cloudtrail create-event-data-store --name source-event-data-store --retention-period retention-period-days

    以下为响应示例。

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLE9952-4ab9-49c0-b788-f4f3EXAMPLE", "Name": "source-event-data-store", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-05-08T15:25:35.578000+00:00", "UpdatedTimestamp": "2023-05-08T15:25:35.714000+00:00" }

    您将使用响应中的 ARN(或 ARN 的 ID 后缀)作为步骤 3 中参数 --event-data-store 的值。

  3. 请运行 put-insight-selectors 命令以启用 Insights 事件。Insights 选择器值可以是 ApiCallRateInsight 和/或 ApiErrorRateInsight。对于 --event-data-store 参数,请指定记录管理事件并将启用 Insights 的源事件数据存储的 ARN(或 ARN 的 ID 后缀)。对于 --insights-destination 参数,请指定将记录 Insights 事件的目标事件数据存储的 ARN(或 ARN 的 ID 后缀)。

    aws cloudtrail put-insight-selectors --event-data-store arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLE9952-4ab9-49c0-b788-f4f3EXAMPLE --insights-destination arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE --insight-selectors '[{"InsightType": "ApiCallRateInsight"},{"InsightType": "ApiErrorRateInsight"}]'

    以下结果显示为事件数据存储配置的 Insights 事件选择器。

    { "EventDataStoreARN": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLE9952-4ab9-49c0-b788-f4f3EXAMPLE", "InsightsDestination": "arn:aws:cloudtrail:us-east-1:111122223333:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "InsightSelectors": [ { "InsightType": "ApiErrorRateInsight" }, { "InsightType": "ApiCallRateInsight" } ] }

    首次对事件数据存储启用 CloudTrail Insights 后,如果检测到异常活动,则 CloudTrail 传递第一个 Insights 事件可能需要最长 7 天。

    CloudTrail Insights 分析在单个区域(而非全局)发生的管理事件。在其支持性管理事件的相同区域中生成 CloudTrail 见解事件。

    对于组织事件数据存储,CloudTrail 会分析来自每个成员账户的管理事件,而不是分析该组织所有管理事件的聚合。

在 CloudTrail Lake 中摄取 Insights 事件将收取额外费用。如果您同时为跟踪和事件数据存储启用 Insights,则需要单独付费。有关 CloudTrail 定价的信息,请参阅 Amazon CloudTrail 定价

使用 Amazon CLI 将跟踪事件导入事件数据存储

在 Amazon CLI 中,您可以将跟踪事件导入事件数据存储。本部分中的过程演示如何通过运行 create-event-data-store 命令来创建和配置事件数据存储,然后使用 start-import 命令将事件导入该事件数据存储。有关导入跟踪事件的更多信息,包括有关注意事项和所需权限的信息,请参阅 将跟踪事件复制到事件数据存储

正在准备导入跟踪事件

在导入跟踪事件之前,请做好以下准备工作。

  • 确保您的角色具有将跟踪事件导入事件数据存储的所需权限

  • 确定您要为事件数据存储指定的 --billing-mode 值。--billing-mode 决定了摄取和存储事件的成本,以及事件数据存储的默认和最长保留期。

    将跟踪事件导入 CloudTrail Lake 时,CloudTrail 会解压缩以 gzip(压缩)格式存储的日志。然后,CloudTrail 将日志中包含的事件复制到事件数据存储。未压缩数据的大小可能大于 Amazon S3 的实际存储大小。要对未压缩数据的大小进行总体估计,将 S3 存储桶中日志的大小乘以 10。您可以使用此估算值为您的应用场景选择 --billing-mode 值。

  • 确定您要为 --retention-period 指定的值。如果事件的 eventTime 晚于指定的保留期,则 CloudTrail 不会复制该事件。

    要确定适当的保留期,请计算要复制的最早事件(以天为单位)和要将事件在事件数据存储中保留的天数之和,如以下公式所示:

    保留期 = 最早事件(天数) + 要保留的天数

    例如,如果您要复制的最早事件已有 45 天,并且您想将事件在事件数据存储中再保留 45 天,则可以将保留期设置为 90 天。

  • 决定是否要使用事件数据存储来分析任何未来的事件。如果您不想摄取任何未来事件,请在创建事件数据存储时包含 --no-start-ingestion 参数。默认情况下,事件数据存储会在创建事件时开始摄取事件。

要创建事件数据存储并将跟踪事件导入该事件数据存储

  1. 运行 create-event-data-store 命令以创建新的事件数据存储。在此示例中,--retention-period 被设置为 120 是因为要复制的最早事件已有 90 天了,且我们希望将这些事件保留 30 天。之所以设置 --no-start-ingestion 参数,是因为我们不想摄取任何未来事件。在此示例中,--billing-mode 未设置,是因为我们使用的是默认值 EXTENDABLE_RETENTION_PRICING,因为我们预计摄取的事件数据少于 25TB。

    注意

    如果您正在创建事件数据存储来替换跟踪,我们建议将 --advanced-event-selectors 配置为与您的跟踪的事件选择器相匹配,以确保事件覆盖范围相同。默认情况下,事件数据存储会记录所有的管理事件。

    aws cloudtrail create-event-data-store --name import-trail-eds --retention-period 120 --no-start-ingestion

    以下为响应示例:

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEa-4357-45cd-bce5-17ec652719d9", "Name": "import-trail-eds", "Status": "CREATED", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 120, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-09T16:52:25.444000+00:00", "UpdatedTimestamp": "2023-11-09T16:52:25.569000+00:00" }

    初始 StatusCREATED,因此我们将运行 get-event-data-store 命令来验证摄取是否已停止。

    aws cloudtrail get-event-data-store --event-data-store eds-id

    响应显示 Status 现在为 STOPPED_INGESTION,这表明事件数据存储未摄取实时事件。

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEa-4357-45cd-bce5-17ec652719d9", "Name": "import-trail-eds", "Status": "STOPPED_INGESTION", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 120, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-09T16:52:25.444000+00:00", "UpdatedTimestamp": "2023-11-09T16:52:25.569000+00:00" }
  2. 运行 start-import 命令以将跟踪事件导入步骤 1 中创建的事件数据存储。将事件数据存储的 ARN(或 ARN 的 ID 后缀)指定为 --destinations 参数的值。对于 --start-event-time,请为要复制的最早的事件指定 eventTime,对于 --end-event-time,请指定要复制的最新事件的 eventTime。对于 --import-source,为包含您的跟踪日志的 S3 存储桶指定 S3 URI,指定 S3 存储桶的 Amazon Web Services 区域,以及用于导入跟踪事件的角色的 ARN。

    aws cloudtrail start-import \ --destinations ["arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEa-4357-45cd-bce5-17ec652719d9"] \ --start-event-time 2023-08-11T16:08:12.934000+00:00 \ --end-event-time 2023-11-09T17:08:20.705000+00:00 \ --import-source {"S3": {"S3LocationUri": "s3://aws-cloudtrail-logs-123456789012-612ff1f6/AWSLogs/123456789012/CloudTrail/","S3BucketRegion":"us-east-1","S3BucketAccessRoleArn": "arn:aws:iam::123456789012:role/service-role/CloudTrailLake-us-east-1-copy-events-eds"}}

    以下为响应示例。

    { "CreatedTimestamp": "2023-11-09T17:08:20.705000+00:00", "Destinations": [ "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEa-4357-45cd-bce5-17ec652719d9" ], "EndEventTime": "2023-11-09T17:08:20.705000+00:00", "ImportId": "EXAMPLEe-7be2-4658-9204-b38c3257fcd1", "ImportSource": { "S3": { "S3BucketAccessRoleArn": "arn:aws:iam::123456789012:role/service-role/CloudTrailLake-us-east-1-copy-events-eds", "S3BucketRegion":"us-east-1", "S3LocationUri": "s3://aws-cloudtrail-logs-123456789012-111ff1f6/AWSLogs/123456789012/CloudTrail/" } }, "ImportStatus": "INITIALIZING", "StartEventTime": "2023-08-11T16:08:12.934000+00:00", "UpdatedTimestamp": "2023-11-09T17:08:20.806000+00:00" }
  3. 运行 get-import 命令以获取有关导入的信息。

    aws cloudtrail get-import --import-id import-id

    以下为响应示例。

    { "ImportId": "EXAMPLEe-7be2-4658-9204-b38c3EXAMPLE", "Destinations": [ "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEa-4357-45cd-bce5-17ec652719d9" ], "ImportSource": { "S3": { "S3LocationUri": "s3://aws-cloudtrail-logs-123456789012-111ff1f6/AWSLogs/123456789012/CloudTrail/", "S3BucketRegion":"us-east-1", "S3BucketAccessRoleArn": "arn:aws:iam::123456789012:role/service-role/CloudTrailLake-us-east-1-copy-events-eds" } }, "StartEventTime": "2023-08-11T16:08:12.934000+00:00", "EndEventTime": "2023-11-09T17:08:20.705000+00:00", "ImportStatus": "COMPLETED", "CreatedTimestamp": "2023-11-09T17:08:20.705000+00:00", "ImportStatistics": { "PrefixesFound": 1548, "PrefixesCompleted": 1548, "FilesCompleted": 92845, "EventsCompleted": 577249, "FailedEntries": 0 } }

    如果没有故障,导入完成时 ImportStatus 显示为 COMPLETED,如果出现故障,则会显示 FAILED

    如果导入具有 FailedEntries,则可以运行 list-import-failures 命令以返回失败列表。

    aws cloudtrail list-import-failures --import-id import-id

    要重试失败的导入,请仅使用 --import-id 参数运行 start-import 命令。当您重试导入时,CloudTrail 会在出错的位置恢复导入。

    aws cloudtrail start-import --import-id import-id

创建集成以使用 Amazon CLI 记录来自 Amazon 外部的事件

在 Amazon CLI 中,您可以通过四个命令(如果您已拥有符合条件的事件数据存储,则为三个命令)创建集成,用于记录来自 Amazon 外部的事件。用作集成目标的事件数据存储必须适用于单个区域和单个账户;它们不能是多区域的,它们不能记录 Amazon Organizations 中组织的事件,而只能包括活动事件。控制台中的事件类型必须是 Events from integrations(来自集成的事件)。在 API 中,eventCategory 值必须为 ActivityAuditLog。有关集成的更多信息,请参阅 创建与 Amazon 外部事件源的集成

  1. 如果您还没有一个或多个可用于集成的事件数据存储,请运行 create-event-data-store 以创建事件数据存储。

    以下示例 Amazon CLI 将创建一个事件数据存储,用于记录来自 Amazon 外部的事件。对于活动事件,eventCategory 字段选择器值为 ActivityAuditLog。事件数据存储的保留期设置为 90 天。默认情况下,事件数据存储将从所有区域收集事件,但由于此示例是收集非 Amazon 事件,因此请通过添加 --no-multi-region-enabled 选项将其设置为单个区域。默认情况下将启用终止保护,并且事件数据存储不会为组织中的账户收集事件。

    aws cloudtrail create-event-data-store \ --name my-event-data-store \ --no-multi-region-enabled \ --retention-period 90\ --advanced-event-selectors '[ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["ActivityAuditLog"] } ] } ]'

    以下为响应示例。

    { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "my-event-data-store", "AdvancedEventSelectors": [ { "Name": "Select all external events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "ActivityAuditLog" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 90, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

    您需要事件数据存储 ID(ARN 的后缀,或前面的响应示例中的 EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE)才能继续进行下一步,并创建您的通道。

  2. 运行 create-channel 命令创建一个通道,允许合作伙伴或来源应用程序将事件发送到 CloudTrail 中的事件数据存储。

    通道包含下列组件:

    CloudTrail 将使用这些信息来确定代表您将事件数据发送到 CloudTrail 的合作伙伴。来源是必填项,可以是所有有效非 Amazon 事件的 Custom,也可以是伙伴事件源的名称。每个来源最多允许一个通道。

    有关可用合作伙伴 Source 值的信息,请参阅 有关集成合作伙伴的其他信息

    摄取状态

    该通道状态显示从通道来源接收到最后一次事件的时间。

    目标

    目标是用于接收来自通道的事件的 CloudTrail Lake 事件数据存储。您可以更改通道的目标事件数据存储。

    要停止接收来自某个来源的事件,请删除该通道。

    您需要至少一个目标事件数据存储的 ID 才能运行此命令。目标的有效类型为 EVENT_DATA_STORE。您可以将摄取的事件发送到多个事件数据存储。以下示例命令将创建一个通道,用于将事件发送到两个事件数据存储,这两个存储库在 --destinations 参数的 Location 属性中由其 ID 表示。--destinations--name--source 参数是必需的。要从 CloudTrail 合作伙伴摄取事件,请将合作伙伴的名称指定为 --source 的值。要从 Amazon 外部您自己的应用程序摄取事件,请将 Custom 指定为 --source 的值。

    aws cloudtrail create-channel \ --region us-east-1 \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]' --name my-partner-channel \ --source $partnerSourceName \

    在对您的 create-channel 命令的响应中,复制新通道的 ARN。在后续步骤中,您将需要该 ARN 来运行 put-resource-policyput-audit-events 命令。

  3. 运行 put-resource-policy 命令,将资源策略附加到通道。资源策略是 JSON 策略文档,它们指定了指定主体可在资源上执行的操作,以及在什么条件下执行操作。在通道的资源策略中定义为主体的账户可以调用 PutAuditEvents API 来传送事件。

    注意

    如果您没有为通道创建资源策略,则只有通道所有者可以针对该通道调用 PutAuditEvents API。

    该策略所需的信息由集成类型决定。

    • 对于直接集成,CloudTrail 要求策略包含合作伙伴的 Amazon 账户 ID,并要求您输入合作伙伴提供的唯一外部 ID。当您使用 CloudTrail 控制台创建集成时,CloudTrail 会自动将合作伙伴的 Amazon 账户 ID 添加到资源策略中。请参阅合作伙伴的文档,以了解如何获取策略所需的 Amazon 账号。

    • 对于解决方案集成,您必须指定至少一个 Amazon 账户 ID 作为主体,并且可以选择输入外部 ID,以防范混淆代理。

    以下是对资源策略的要求:

    • 该策略中定义的资源 ARN 必须与该策略附加到的通道 ARN 相匹配。

    • 该策略仅包含一项操作:cloudtrail-data:PutAuditEvents

    • 该策略至少包含一个语句。该策略最多可以包含 20 个语句。

    • 每个语句至少包含一个主体。一个语句最多可以包含 50 个主体。

    aws cloudtrail put-resource-policy \ --resource-arn "channelARN" \ --policy "{ "Version": "2012-10-17", "Statement": [ { "Sid": "ChannelPolicy", "Effect": "Allow", "Principal": { "AWS": [ "arn:aws:iam::111122223333:root", "arn:aws:iam::444455556666:root", "arn:aws:iam::123456789012:root" ] }, "Action": "cloudtrail-data:PutAuditEvents", "Resource": "arn:aws:cloudtrail:us-east-1:777788889999:channel/EXAMPLE-80b5-40a7-ae65-6e099392355b", "Condition": { "StringEquals": { "cloudtrail:ExternalId": "UniqueExternalIDFromPartner" } } } ] }"

    有关资源策略的更多信息,请参阅Amazon CloudTrail 基于资源的策略示例

  4. 运行 PutAuditEvents API,以将您的活动事件摄取到 CloudTrail 中。您需要希望 CloudTrail 添加的事件的有效负载。在将事件有效负载摄取到 CloudTrail 中之前,请确保事件有效负载中没有敏感或个人身份识别信息。请注意,PutAuditEvents API 使用 cloudtrail-data CLI 端点,而不是 cloudtrail 端点。

    以下示例演示了如何使用 put-audit-events CLI 命令。--audit-events--channel-arn 参数是必需的。如果在资源策略中定义了外部 ID,则需要 --external-id 参数。您需要在前面步骤中创建的通道的 ARN。--audit-events 的值是事件对象的 JSON 数组。--audit-events 包括来自事件的所需 ID、事件所需的有效负载(作为 EventData 的值)以及可选校验和,以帮助在摄取到 CloudTrail 中后验证事件的完整性。

    aws cloudtrail-data put-audit-events \ --channel-arn $ChannelArn \ --external-id $UniqueExternalIDFromPartner \ --audit-events \ id="event_ID",eventData='"{event_payload}"' \ id="event_ID",eventData='"{event_payload}"',eventDataChecksum="optional_checksum"

    以下是包含两个事件示例的示例命令。

    aws cloudtrail-data put-audit-events \ --channel-arn arn:aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --external-id UniqueExternalIDFromPartner \ --audit-events \ id="EXAMPLE3-0f1f-4a85-9664-d50a3EXAMPLE",eventData='"{\"eventVersion\":\0.01\",\"eventSource\":\"custom1.domain.com\", ... \}"' \ id="EXAMPLE7-a999-486d-b241-b33a1EXAMPLE",eventData='"{\"eventVersion\":\0.02\",\"eventSource\":\"custom2.domain.com\", ... \}"',eventDataChecksum="EXAMPLE6e7dd61f3ead...93a691d8EXAMPLE"

    以下示例命令添加了 --cli-input-json 参数,以指定事件有效负载的 JSON 文件(custom-events.json)。

    aws cloudtrail-data put-audit-events --channel-arn $channelArn --external-id $UniqueExternalIDFromPartner --cli-input-json file://custom-events.json --region us-east-1

    以下是示例 JSON 文件 custom-events.json 的示例内容。

    { "auditEvents": [ { "eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"12.34.56.78\",\"recipientAccountId\":\"152089810396\"}", "id": "1" } ] }

您可以通过运行 get-channel 命令来验证集成是否正常运行,以及 CloudTrail 是否正确地从来源摄取事件。get-channel 的输出显示 CloudTrail 接收事件的最新时间戳。

aws cloudtrail get-channel --channel arn:aws:cloudtrail:us-east-1:01234567890:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

(可选)计算校验和值

您在 PutAuditEvents 请求中作为 EventDataChecksum 的值指定的校验和可以帮助您验证 CloudTrail 是否收到与该校验和相匹配的事件;它可以帮助验证事件的完整性。校验和值采用一种 base64-SHA256 算法,您可以通过运行以下命令来计算该值。

printf %s "{"eventData": "{\"version\":\"eventData.version\",\"UID\":\"UID\", \"userIdentity\":{\"type\":\"CustomUserIdentity\",\"principalId\":\"principalId\", \"details\":{\"key\":\"value\"}},\"eventTime\":\"2021-10-27T12:13:14Z\",\"eventName\":\"eventName\", \"userAgent\":\"userAgent\",\"eventSource\":\"eventSource\", \"requestParameters\":{\"key\":\"value\"},\"responseElements\":{\"key\":\"value\"}, \"additionalEventData\":{\"key\":\"value\"}, \"sourceIPAddress\":\"source_IP_address\", \"recipientAccountId\":\"recipient_account_ID\"}", "id": "1"}" \ | openssl dgst -binary -sha256 | base64

该命令将返回校验和。以下是示例。

EXAMPLEDHjkI8iehvCUCWTIAbNYkOgO/t0YNw+7rrQE=

校验和值将成为您的 PutAuditEvents 请求中 EventDataChecksum 的值。如果该校验和与所提供事件的校验和不匹配,CloudTrail 将通过 InvalidChecksum 错误拒绝该事件。

使用 Amazon CLI 获取事件数据存储

以下示例 Amazon CLI get-event-data-store 命令返回有关由必需的 --event-data-store 参数指定的事件数据存储的信息,该参数接受 ARN 或 ARN 的 ID 后缀。

aws cloudtrail get-event-data-store --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

以下为响应示例。创建时间和上次更新时间采用 timestamp 格式。

{ "EventDataStoreARN": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "s3-data-events-eds", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Log DeleteObject API calls for a specific S3 bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "eventName", "Equals": [ "DeleteObject" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3:::bucketName" ] }, { "Field": "readOnly", "Equals": [ "false" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "FIXED_RETENTION_PRICING", "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-11-09T22:20:36.344000+00:00", "UpdatedTimestamp": "2023-11-09T22:20:36.476000+00:00" }

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

以下示例 Amazon CLI list-event-data-stores 命令返回有关当前区域内某个账户中的所有事件数据存储的信息。可选参数包括 --max-results,以指定希望在单个页面上通过命令返回的最大结果数。如果结果数超过指定的 --max-results 值,请再次运行命令,添加返回的 NextToken 值来获取下一页的结果。

aws cloudtrail list-event-data-stores

以下为响应示例。

{ "EventDataStores": [ { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE7-cad6-4357-a84b-318f9868e969", "Name": "management-events-eds" }, { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE6-88e1-43b7-b066-9c046b4fd47a", "Name": "config-items-eds" }, { "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLEf-b314-4c85-964e-3e43b1e8c3b4", "Name": "s3-data-events" } ] }

使用 Amazon CLI 更新事件数据存储

以下示例演示如何更新事件数据存储。

使用 Amazon CLI 更新计费模式

事件数据存储的 --billing-mode 决定了摄取和存储事件的成本,以及事件数据存储的默认和最长保留期。如果事件数据存储的 --billing-mode 设置为 FIXED_RETENTION_PRICING,则可以将该值更改为 EXTENDABLE_RETENTION_PRICING。如果您的事件数据存储每月摄取的事件数据少于 25TB,并且您希望采用最多 3653 天的灵活保留期,则通常建议使用 EXTENDABLE_RETENTION_PRICING。有关定价的信息,请参阅 Amazon CloudTrail 定价管理 CloudTrail 湖泊成本

注意

您不能将 --billing-mode 值从 EXTENDABLE_RETENTION_PRICING 更改为 FIXED_RETENTION_PRICING。如果事件数据存储的计费模式设置为 EXTENDABLE_RETENTION_PRICING,且您想改用 FIXED_RETENTION_PRICING,则可以停止对事件数据存储的摄取,并创建一个使用 FIXED_RETENTION_PRICING 的新事件数据存储。

以下示例 Amazon CLI update-event-data-store 命令将事件数据存储的 --billing-modeFIXED_RETENTION_PRICING 更改为 EXTENDABLE_RETENTION_PRICING。必要的 --event-data-store 参数值是 ARN(或 ARN 的 ID 后缀),且是必填项;其它参数是可选项。

aws cloudtrail update-event-data-store \ --region us-east-1 \ --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE \ --billing-mode EXTENDABLE_RETENTION_PRICING

以下为响应示例。

{ "EventDataStoreArn": "event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "management-events-eds", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 2557, "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

更新保留模式,启用终止保护,然后使用 Amazon CLI 指定 Amazon KMS key

以下示例 Amazon CLI update-event-data-store 命令更新事件数据存储,以将其保留期限更改为 100 天,并启用终止保护。必要的 --event-data-store 参数值是 ARN(或 ARN 的 ID 后缀),且是必填项;其它参数是可选项。在此示例中,添加了 --retention-period 参数,以将保留期限更改为 100 天。或者,您可以选择启用 Amazon Key Management Service 加密,然后通过向命令添加 --kms-key-id 并将 KMS 密钥 ARN 指定为值,来指定 Amazon KMS key。添加 --termination-protection-enabled 以在未启用终止保护的事件数据存储上启用终止保护。

记录来自 Amazon 外部事件的事件数据存储无法更新为记录 Amazon 事件。同样,记录 Amazon 事件的事件数据存储也无法更新为记录来自 Amazon 外部的事件。

注意

如果您缩短事件数据存储的保留期,CloudTrail 将删除所有 eventTime 早于新保留期的事件。例如,如果之前的保留期为 365 天,而您将其缩短到 100 天,则 CloudTrail 将删除 eventTime 超过 100 天的事件。

aws cloudtrail update-event-data-store \ --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE \ --retention-period 100 \ --kms-key-id "arn:aws:kms:us-east-1:0123456789:alias/KMS_key_alias" \ --termination-protection-enabled

以下为响应示例。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-ee54-4813-92d5-999aeEXAMPLE", "Name": "my-event-data-store", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Select all S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:aws:s3" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 100, "KmsKeyId": "arn:aws:kms:us-east-1:0123456789:alias/KMS_key_alias", "TerminationProtectionEnabled": true, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

使用 Amazon CLI 禁用终止保护

默认情况下,事件数据存储已启用终止保护,以防止事件数据存储被意外删除。当终止保护启用时,您无法删除事件数据存储。如果要删除事件数据存储,您必须先禁用终止保护。

以下示例 Amazon CLI update-event-data-store 命令通过传递 --no-termination-protection-enabled 参数来禁用终止保护。

aws cloudtrail update-event-data-store \ --region us-east-1 \ --no-termination-protection-enabled \ --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

以下为响应示例。

{ "EventDataStoreArn": "arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE", "Name": "management-events-eds", "Status": "ENABLED", "AdvancedEventSelectors": [ { "Name": "Default management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ] } ] } ], "MultiRegionEnabled": true, "OrganizationEnabled": false, "BillingMode": "EXTENDABLE_RETENTION_PRICING", "RetentionPeriod": 366, "TerminationProtectionEnabled": false, "CreatedTimestamp": "2023-10-27T10:55:55.384000-04:00", "UpdatedTimestamp": "2023-10-27T10:57:05.549000-04:00" }

使用 Amazon CLI 停止在事件数据存储上摄取

以下示例 Amazon CLI stop-event-data-store-ingestion 命令将停止事件数据存储摄取事件。要停止摄取,事件数据存储 Status 必须是 ENABLED,并且 eventCategory 必须是 ManagementDataConfigurationItem。事件数据存储由 --event-data-store 指定,它接受事件数据存储 ARN 或 ARN 的 ID 后缀。运行 stop-event-data-store-ingestion 后,事件数据存储的状态将更改为 STOPPED_INGESTION

处于 STOPPED_INGESTION 状态时,事件数据存储计入您的账户最多十个事件数据存储的限额内。

aws cloudtrail stop-event-data-store-ingestion --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

如果成功执行操作,则没有响应。

使用 Amazon CLI 开始在事件数据存储上摄取

以下示例 Amazon CLI start-event-data-store-ingestion 命令将在事件数据存储上开始事件摄取。要开始摄取,事件数据存储 Status 必须是 STOPPED_INGESTION,并且 eventCategory 必须是 ManagementDataConfigurationItem。事件数据存储由 --event-data-store 指定,它接受事件数据存储 ARN 或 ARN 的 ID 后缀。运行 start-event-data-store-ingestion 后,事件数据存储的状态将更改为 ENABLED

aws cloudtrail start-event-data-store-ingestion --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

如果成功执行操作,则没有响应。

在事件数据存储上启用联合身份验证

要启用联合身份验证,请运行 aws cloudtrail enable-federation 命令,以提供所需的 --event-data-store--role 参数。对于 --event-data-store,请提供事件数据存储 ARN(或 ARN 的 ID 后缀)。对于 --role,请提供您的联合身份验证角色的 ARN。该角色必须存在于您的账户中,并提供所需的最低权限

aws cloudtrail enable-federation --event-data-store arn:aws:cloudtrail:region:account-id:eventdatastore/eds-id --role arn:aws:iam::account-id:role/federation-role-name

此示例说明委托管理员如何通过在管理账户中指定事件数据存储的 ARN 和在委托管理员账户中指定联合身份验证角色的 ARN 来在组织事件数据存储上启用联合身份验证。

aws cloudtrail enable-federation --event-data-store arn:aws:cloudtrail:region:management-account-id:eventdatastore/eds-id --role arn:aws:iam::delegated-administrator-account-id:role/federation-role-name

在事件数据存储上禁用联合身份验证

要在事件数据存储上禁用联合身份验证,请运行 aws cloudtrail disable-federation 命令。事件数据存储由 --event-data-store 指定,它接受事件数据存储 ARN 或 ARN 的 ID 后缀。

aws cloudtrail disable-federation --event-data-store arn:aws:cloudtrail:region:account-id:eventdatastore/eds-id
注意

如果这是组织事件数据存储,则使用管理账户的账户 ID。

使用 Amazon CLI 删除事件数据存储

以下示例 Amazon CLI delete-event-data-store 命令禁用由 --event-data-store 指定的事件数据存储,它接受事件数据存储 ARN 或 ARN 的 ID 后缀。运行 delete-event-data-store 之后,事件数据存储的最终状态为 PENDING_DELETION,且事件数据存储将在 7 天等待期后自动删除。

在事件数据存储上运行 delete-event-data-store 之后,您无法在使用已禁用的数据存储的查询上运行 list-queriesdescribe-queryget-query-results。处于等待删除状态时,事件数据存储计入您的账户最多十个事件数据存储的限额内。

注意

如果设置了 --termination-protection-enabled 或其 FederationStatusENABLED,则无法删除事件数据存储。

aws cloudtrail delete-event-data-store --event-data-store arn:aws:cloudtrail:us-east-1:123456789012:eventdatastore/EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

如果成功执行操作,则没有响应。

使用 Amazon CLI 恢复事件数据存储

以下示例 Amazon CLI restore-event-data-store 命令恢复待删除的事件数据存储。事件数据存储由 --event-data-store 指定,它接受事件数据存储 ARN 或 ARN 的 ID 后缀。您只能在删除后的七天等待期内恢复被删除的事件数据存储。

aws cloudtrail restore-event-data-store --event-data-store EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE

响应包括有关事件数据存储的信息,包括其 ARN、高级事件选择器以及还原状态。

使用 Amazon CLI 列出所有通道

要列出您账户中的所有通道,请运行 list-channels 命令。以下是示例。

aws cloudtrail list-channels

使用 Amazon CLI 更新通道

要更新通道的名称或目标事件数据存储,请运行 update-channel 命令。--channel 参数是必需的。您无法更新通道的来源。以下是示例。

aws cloudtrail update-channel \ --channel aws:cloudtrail:us-east-1:123456789012:channel/EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE \ --name "new-channel-name" \ --destinations '[{"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEf852-4e8f-8bd1-bcf6cEXAMPLE"}, {"Type": "EVENT_DATA_STORE", "Location": "EXAMPLEg922-5n2l-3vz1- apqw8EXAMPLE"}]'

删除通道以删除与 Amazon CLI 的集成

要停止摄取 Amazon 外部的合作伙伴或其他活动事件,请通过运行 delete-channel 命令删除该通道。需要您要删除的通道的 ARN 或通道 ID(ARN 后缀)。以下是示例。

aws cloudtrail delete-channel \ --channel EXAMPLE8-0558-4f7e-a06a-43969EXAMPLE

使用 Amazon CLI 开始查询

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

aws cloudtrail start-query --query-statement 'SELECT eventID, eventTime FROM EXAMPLE-f852-4e8f-8bd1-bcf6cEXAMPLE LIMIT 10' --delivery-s3uri "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-s3uri 参数将查询结果传送到 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)