本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用高级事件选择器筛选数据事件
本节介绍如何使用高级事件选择器来创建细粒度的选择器,这些选择器通过仅记录感兴趣的特定数据事件来帮助您控制成本。
例如:
-
您可以通过在
eventName
字段上添加过滤器来包含或排除特定的 API 调用。 -
您可以通过在
resources.ARN
字段上添加过滤器来包含或排除特定资源的日志记录。例如,如果您正在记录 S3 数据事件,则可以排除对跟踪的 S3 存储桶的日志记录。 -
通过在字段上添加筛选器,您可以选择仅记录只写事件或只读事件。
readOnly
下表提供了有关高级事件选择器的可配置字段的其他信息。
字段 | 必需 | 有效的运算符 | Description |
---|---|---|---|
|
是 |
|
此字段设置为 |
|
是 |
|
此字段用于选择要为其记录数据事件的资源类型。数据事件表显示了可能的值。 |
|
否 |
|
这是一个可选字段,用于根据 |
|
否 |
任何 |
这是一个可选字段,用于筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。 如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 |
|
否 |
任何 |
这是一个可选字段,用于通过提供来排除或包含特定资源的数据事件 如果您使用的是 Amazon CLI,则可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 |
要使用 CloudTrail 控制台记录数据事件,请选择数据事件选项,然后在创建或更新跟踪时选择感兴趣的数据事件类型。数据事件表显示了您可以在 CloudTrail 控制台上选择的可能的数据事件类型。
要使用记录数据事件 Amazon CLI,请将--advanced-event-selector
参数配置为将eventCategory
等于,将resources.type
值设置为等于Data
且值等于您要记录数据事件的资源类型值。数据事件表列出了可用的资源类型。
例如,如果您想记录所有 Cognito 身份池的数据事件,则可以将--advanced-event-selectors
参数配置为如下所示:
--advanced-event-selectors '[ { "Name": "Log Cognito data events on Identity pools", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::Cognito::IdentityPool"] } ] } ]'
前面的示例记录了身份池上的所有 Cognito 数据事件。您可以进一步细化高级事件选择器,以筛选eventName
readOnly
、和resources.ARN
字段,以记录感兴趣的特定事件或排除不感兴趣的事件。
您可以配置高级事件选择器,以根据多个条件筛选数据事件。例如,您可以将高级事件选择器配置为记录所有 Amazon S3 PutObject
和 DeleteObject
API 调用,但不包括特定 S3 存储桶的事件记录,如以下示例所示。将 DOC-EXAMPLE-BUCKET
替换为您的存储桶的名称。
--advanced-event-selectors '[ { "Name": "Log PutObject and DeleteObject events for all but one bucket", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "NotStartsWith": ["arn:aws:s3:::
DOC-EXAMPLE-BUCKET
/"] } ] } ]'
您可以使用高级事件选择器来记录管理事件和数据事件。要记录多种资源类型的数据事件,请为要记录其数据事件的每种资源类型添加字段选择器语句。
注意
Trails 可以使用基本事件选择器或高级事件选择器,但不能同时使用两者。如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。
筛选数据事件的依据 eventName
使用高级事件选择器,您可以根据eventName
字段的值包含或排除事件。筛选eventName
可以帮助控制成本,因为在记录数据事件时可以避免产生成本,从而增加对新数据 API 的支持。 Amazon Web Service
可以在该eventName
字段中使用任何运算符。您可以使用它来筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。PutBucket
GetSnapshotBlock
eventName
使用筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对eventName
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
按照步骤创建跟踪时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器中列为
Name
,展开 JSON 视图即可查看该名称。 -
在高级事件选择器中,执行以下操作以筛选:
eventName
-
对于 “字段”,选择 “事件名称”。
-
对于运算符,选择条件运算符。在此示例中,我们将选择 e quals,因为我们要记录特定的 API 调用。
-
在 “值” 中,输入要筛选的事件的名称。
-
要筛选其他条件
eventName
,请选择 + 条件。
-
-
选择 +Field 可在其他字段上添加筛选器。
-
eventName
使用筛选数据事件 Amazon CLI
使用 Amazon CLI,您可以对eventName
字段进行筛选,以包含或排除特定事件。
如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors
命令来获取当前的事件选择器。get-event-data-store
然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。
以下示例记录了跟踪上的 S3 数据事件。配置--advanced-event-selectors
为仅记录GetObject
PutObject
、和 DeleteObject
API 调用的数据事件。
aws cloudtrail put-event-selectors \ --trail-name
trailName
\ --advanced-event-selectors '[ { "Name": "Log GetObject, PutObject and DeleteObject S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["GetObject","PutObject","DeleteObject"] } ] } ]'
筛选数据事件的依据 resources.ARN
使用高级事件选择器,您可以根据resources.ARN
字段的值进行筛选。
您可以将任何运算符与一起使用resources.ARN
,但是如果您使用Equals
或NotEquals
,则该值必须与您指定的resources.type
值的有效资源的 ARN 完全匹配。要记录特定 S3 桶中所有对象的所有数据事件,请使用 StartsWith
运算符,并且仅包含存储桶 ARN 作为匹配值。
下表显示每个 resources.type
的有效 ARN 格式。
注意
您不能使用该resources.ARN
字段筛选没有 ARN 的资源类型。
resources.type | resources.ARN |
---|---|
AWS::DynamoDB::Table1 |
|
AWS::Lambda::Function |
|
|
|
AWS::AppConfig::Configuration |
|
AWS::B2BI::Transformer |
|
AWS::Bedrock::AgentAlias |
|
AWS::Bedrock::KnowledgeBase |
|
AWS::Cassandra::Table |
|
AWS::CloudFront::KeyValueStore |
|
AWS::CloudTrail::Channel |
|
AWS::CodeWhisperer::Customization |
|
AWS::CodeWhisperer::Profile |
|
AWS::Cognito::IdentityPool |
|
AWS::DynamoDB::Stream |
|
AWS::EC2::Snapshot |
|
AWS::EMRWAL::Workspace |
|
AWS::FinSpace::Environment |
|
AWS::Glue::Table |
|
AWS::GreengrassV2::ComponentVersion |
|
AWS::GreengrassV2::Deployment |
|
AWS::GuardDuty::Detector |
|
AWS::IoT::Certificate |
|
AWS::IoT::Thing |
|
AWS::IoTSiteWise::Asset |
|
AWS::IoTSiteWise::TimeSeries |
|
AWS::IoTTwinMaker::Entity |
|
AWS::IoTTwinMaker::Workspace |
|
AWS::KendraRanking::ExecutionPlan |
|
AWS::Kinesis::Stream |
|
AWS::Kinesis::StreamConsumer |
|
AWS::KinesisVideo::Stream |
|
AWS::MachineLearning::MlModel |
|
AWS::ManagedBlockchain::Network |
|
AWS::ManagedBlockchain::Node |
|
AWS::MedicalImaging::Datastore |
|
AWS::NeptuneGraph::Graph |
|
AWS::PCAConnectorAD::Connector |
|
AWS::PCAConnectorSCEP::Connector |
|
AWS::QApps:QApp |
|
AWS::QBusiness::Application |
|
AWS::QBusiness::DataSource |
|
AWS::QBusiness::Index |
|
AWS::QBusiness::WebExperience |
|
AWS::RDS::DBCluster |
|
|
|
AWS::S3ObjectLambda::AccessPoint |
|
AWS::S3Outposts::Object |
|
AWS::SageMaker::Endpoint |
|
AWS::SageMaker::ExperimentTrialComponent |
|
AWS::SageMaker::FeatureGroup |
|
AWS::SCN::Instance |
|
AWS::ServiceDiscovery::Namespace |
|
AWS::ServiceDiscovery::Service |
|
AWS::SNS::PlatformEndpoint |
|
AWS::SNS::Topic |
|
AWS::SQS::Queue |
|
AWS::SSM::ManagedNode |
ARN 必须采用以下格式之一:
|
AWS::SSMMessages::ControlChannel |
|
AWS::StepFunctions::StateMachine |
ARN 必须采用以下格式之一:
|
AWS::SWF::Domain |
|
AWS::ThinClient::Device |
|
AWS::ThinClient::Environment |
|
AWS::Timestream::Database |
|
AWS::Timestream::Table |
|
AWS::VerifiedPermissions::PolicyStore |
|
1 对于启用了流的表,数据事件中的 resources
字段同时包含 AWS::DynamoDB::Stream
和 AWS::DynamoDB::Table
。如果您为 resources.type
指定 AWS::DynamoDB::Table
,则原定设置情况下,它将同时记录 DynamoDB 表和 DynamoDB 流事件。要排除直播事件,请eventName
在该字段上添加过滤器。
2 要记录特定 S3 存储桶中所有对象的所有数据事件,请使用 StartsWith
运算符,并且仅包含存储桶 ARN 作为匹配值。刻意使用尾部斜杠;切勿排除它。
3 要记录 S3 接入点中的所有对象的事件,建议您仅使用接入点 ARN,而不要包含对象路径,并且使用 StartsWith
或 NotStartsWith
运算符。
resources.ARN
使用筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对resources.ARN
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
按照步骤创建跟踪时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器中列为
Name
,展开 JSON 视图即可查看该名称。 -
在高级事件选择器中,执行以下操作以筛选:
resources.ARN
-
对于字段,选择 resources.ARN。
-
对于运算符,选择条件运算符。在此示例中,我们将选择从开始,因为我们要记录特定 S3 存储桶的数据事件。
-
在值中,输入您的资源类型的 ARN(例如,arn
: aws: s3::: DOC-EXAMPLE-BUCK
ET)。 -
要筛选其他条件
resources.ARN
,请选择 + 条件。
-
-
选择 +Field 可在其他字段上添加筛选器。
-
resources.ARN
使用筛选数据事件 Amazon CLI
使用 Amazon CLI,您可以对该resources.ARN
字段进行筛选以记录特定 ARN 的事件或排除特定 ARN 的日志记录。
如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors
命令来获取当前的事件选择器。get-event-data-store
然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。
以下示例说明如何配置您的跟踪以包含特定 S3 存储桶中的所有 Simple Storage Service(Amazon S3)对象的所有数据事件。S3 事件在 resources.type
字段中的值为 AWS::S3::Object
。由于 S3 对象和 S3 存储桶的 ARN 值略有不同,因此必须为 resources.ARN
添加 StartsWith
运算符以捕获所有事件。
aws cloudtrail put-event-selectors \ --trail-name
TrailName
\ --regionregion
\ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::DOC-EXAMPLE-BUCKET
/"] } ] } ]'
按readOnly
值筛选数据事件
使用高级事件选择器,您可以根据readOnly
字段的值进行筛选。
您只能在readOnly
字段中使用Equals
运算符。您可以将该readOnly
值设置为true
或false
。如果不添加此字段,则会同时 CloudTrail 记录读取和写入事件。true
日志的值仅读取事件。false
日志的值仅写入事件。
使用按readOnly
值筛选数据事件 Amazon Web Services Management Console
按照以下步骤使用 CloudTrail 控制台对readOnly
字段进行筛选。
-
按照创建跟踪过程中的步骤进行操作。
-
按照步骤创建跟踪时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请为您的用例选择相应的模板。
如果你打算这样做 选择此日志选择器模板 仅记录读取事件,不应用其他过滤器(例如,对
resources.ARN
值进行筛选)。记录只读事件
仅记录写入事件,不应用其他筛选器(例如,对
resources.ARN
值进行筛选)。记录只写事件
对
readOnly
值进行筛选并应用其他筛选器(例如,对resources.ARN
值进行筛选)。自定义
在高级事件选择器中,执行以下操作以筛选该
readOnly
值:记录写入事件
-
对于字段,选择 readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
false
。 -
选择 +Field 可在其他字段上添加筛选器。
记录读取事件
-
对于字段,选择 readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
true
。 -
选择 +Field 可在其他字段上添加筛选器。
-
-
使用按readOnly
值筛选数据事件 Amazon CLI
使用 Amazon CLI,您可以对readOnly
字段进行筛选。
您只能在readOnly
字段中使用Equals
运算符。您可以将该readOnly
值设置为true
或false
。如果不添加此字段,则会同时 CloudTrail记录读取和写入事件。true
日志的值仅读取事件。false
日志的值仅写入事件。
如果您要更新现有的跟踪或事件数据存储以记录其他事件选择器,请通过运行跟踪命令或事件数据存储get-event-selectors
命令来获取当前的事件选择器。get-event-data-store
然后,更新您的事件选择器,为您要记录的每种数据资源类型添加一个字段选择器。
以下示例说明如何配置您的跟踪以记录所有 Amazon S3 对象的只读数据事件。
aws cloudtrail put-event-selectors \ --trail-name
TrailName
\ --regionregion
\ --advanced-event-selectors '[ { "Name": "Log read-only S3 data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "readOnly", "Equals": ["true"] } ] } ]'