本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 Amazon CLI 管理 CloudTrail Lake
以下为示例 Amazon CLI 命令,用于在 CloudTrail Lake 中创建和管理事件数据存储和查询。
主题
- 使用 Amazon CLI 创建事件数据存储
- 使用 Amazon CLI 将跟踪事件导入事件数据存储
- 创建集成以使用 Amazon CLI 记录来自 Amazon 外部的事件
- 使用 Amazon CLI 获取事件数据存储
- 使用 Amazon CLI 列出账户中的所有事件数据存储
- 使用 Amazon CLI 更新事件数据存储
- 使用 Amazon CLI 停止在事件数据存储上摄取
- 使用 Amazon CLI 开始在事件数据存储上摄取
- 在事件数据存储上启用联合身份验证
- 在事件数据存储上禁用联合身份验证
- 使用 Amazon CLI 删除事件数据存储
- 使用 Amazon CLI 恢复事件数据存储
- 使用 Amazon CLI 列出所有通道
- 使用 Amazon CLI 更新通道
- 删除通道以删除与 Amazon CLI 的集成
- 使用 Amazon CLI 开始查询
- 使用 Amazon CLI 获取有关查询的元数据
- 使用 Amazon CLI 获取查询结果
- 使用 Amazon CLI 列出事件数据存储中的所有查询
- 使用 Amazon CLI 取消正在运行的查询
使用 Amazon CLI 创建事件数据存储
使用 create-event-data-store
创建事件数据存储时,唯一需要的参数是 --name
,它用于标识事件数据存储。您可以配置其他可选参数,包括:
-
--advanced-event-selectors
- 指定要包括在事件数据存储中的事件的类型。默认情况下,事件数据存储会记录所有的管理事件。有关高级事件选择器的更多信息,请参阅《 CloudTrail API 参考》中的 AdvancedEventSelector。 -
- 指定用于加密 CloudTrail 所传输的事件的 AWS KMS 密钥 ID。该值可以是前缀为--kms-key-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-mode
为EXTENDABLE_RETENTION_PRICING
,则有效值为介于 7 和 3653 之间的整数;如果--billing-mode
设置为FIXED_RETENTION_PRICING
,则有效值为介于 7 和 2557 之间的整数。如果您未指定--retention-period
,则 CloudTrail 将为--billing-mode
使用默认保留期。 -
--start-ingestion
---start-ingestion
参数在其被创建时在事件数据存储上开始事件摄取。即使未添加该参数,也会设置此参数。如果您不希望事件数据存储摄取实时事件,请指定
--no-start-ingestion
。例如,如果您要将事件复制到事件数据存储中,并且仅计划使用事件数据存储来分析过去的事件,则可能要设置此参数。仅当eventCategory
为Management
、Data
或ConfigurationItem
时,--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 事件。
-
运行 aws cloudtrail create-event-data-store
命令创建收集 Insights 事件的目标事件数据存储。 eventCategory
的值必须为Insight
。将retention-period-days
替换为您想要在事件数据存储中保留事件的天数。如果--billing-mode
为EXTENDABLE_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
的值。 -
请运行 aws cloudtrail create-event-data-store
命令以创建记录管理事件的源事件数据存储。默认情况下,事件数据存储会记录所有的管理事件。您无需指定任何高级事件选择器即可记录所有管理事件。将 retention-period-days
替换为您想要在事件数据存储中保留事件的天数。如果--billing-mode
为EXTENDABLE_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
的值。 -
请运行 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
参数。默认情况下,事件数据存储会在创建事件时开始摄取事件。
要创建事件数据存储并将跟踪事件导入该事件数据存储
-
运行 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" }
初始
Status
为CREATED
,因此我们将运行 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" }
-
运行 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" }
-
运行 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 外部事件源的集成。
-
如果您还没有一个或多个可用于集成的事件数据存储,请运行 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
)才能继续进行下一步,并创建您的通道。 -
运行 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-policy
和put-audit-events
命令。 -
运行 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 基于资源的策略示例。
-
-
运行
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
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 定价
注意
您不能将 --billing-mode
值从 EXTENDABLE_RETENTION_PRICING
更改为 FIXED_RETENTION_PRICING
。如果事件数据存储的计费模式设置为 EXTENDABLE_RETENTION_PRICING
,且您想改用 FIXED_RETENTION_PRICING
,则可以停止对事件数据存储的摄取,并创建一个使用 FIXED_RETENTION_PRICING
的新事件数据存储。
以下示例 Amazon CLI update-event-data-store 命令将事件数据存储的 --billing-mode
从 FIXED_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
必须是 Management
、Data
或 ConfigurationItem
。事件数据存储由 --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
必须是 Management
、Data
或 ConfigurationItem
。事件数据存储由 --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-queries、describe-query 或 get-query-results。处于等待删除状态时,事件数据存储计入您的账户最多十个事件数据存储的限额内。
注意
如果设置了 --termination-protection-enabled
或其 FederationStatus
为 ENABLED
,则无法删除事件数据存储。
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
的有效值包括 QUEUED
、RUNNING
、FINISHED
、FAILED
或 CANCELLED
。
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)