本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用高级事件选择器筛选数据事件
本节介绍如何使用高级事件选择器来创建细粒度的选择器,这些选择器通过仅记录感兴趣的特定数据事件来帮助您控制成本。
例如:
-
您可以通过在
eventName
字段上添加过滤器来包含或排除特定API呼叫。 -
您可以通过在
resources.ARN
字段上添加过滤器来包含或排除特定资源的日志记录。例如,如果您正在记录 S3 数据事件,则可以排除对跟踪的 S3 存储桶的日志记录。 -
通过在字段上添加筛选器,您可以选择仅记录只写事件或只读事件。
readOnly
下表提供了有关高级事件选择器的可配置字段的其他信息。
字段 | 必需 | 有效的运算符 | Description |
---|---|---|---|
|
是 |
|
此字段设置为 |
|
是 |
|
此字段用于选择要为其记录数据事件的资源类型。数据事件表显示了可能的值。 |
|
否 |
|
这是一个可选字段,用于根据 |
|
否 |
|
这是一个可选字段,用于筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。 如果你使用的是 AWS CLI,您可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 |
|
否 |
|
这是一个可选字段,用于通过提供来排除或包含特定资源的数据事件 如果你使用的是 AWS CLI,您可以通过用逗号分隔每个值来指定多个值。 如果您使用的是控制台,则可以通过为要筛选的每个 |
要使用 CloudTrail 控制台记录数据事件,请在创建或更新跟踪或事件数据存储时选择数据事件选项,然后选择感兴趣的数据事件类型。数据事件表显示了您可以在 CloudTrail 控制台上选择的可能的数据事件类型。
使用记录数据事件 AWS 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 存储桶的事件记录,如以下示例所示。Replace(替换) amzn-s3-demo-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:::
amzn-s3-demo-bucket
/"] } ] } ]'
您也可以为一个字段包含多个条件。有关如何评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
您可以使用高级事件选择器来记录管理事件和数据事件。要记录多种资源类型的数据事件,请为要为其记录数据事件的每种资源类型添加字段选择器语句。
注意
Trails 可以使用基本事件选择器或高级事件选择器,但不能同时使用两者。如果将高级事件选择器应用于跟踪,则所有现有的基本事件选择器都将被覆盖。
如何 CloudTrail 评估一个字段的多个条件
对于高级事件选择器,按 CloudTrail 如下方式计算字段的多个条件:
-
DESELECT运营AND商在一起。如果满足任何DESELECT操作员条件,则不会传送事件。以下是高级事件选择器的有效DESELECT运算符:
-
NotEndsWith
-
NotEquals
-
NotStartsWith
-
-
SELECT运算符是 OR 组合在一起的。以下是高级事件选择器的有效SELECT运算符:
-
EndsWith
-
Equals
-
StartsWith
-
-
SELECT和DESELECT运算符的组合遵循上述规则,两个组AND合在一起。
显示该resources.ARN
字段的多个条件的示例
以下示例事件选择器语句收集AWS::S3::Object
资源类型的数据事件,并对该resources.ARN
字段应用多个条件。
{ "Name": "S3Select", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "Equals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object1" ], "StartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/" ], "EndsWith": [ "object3" ], "NotStartsWith": [ "arn:aws:s3:::amzn-s3-demo-bucket/deselect" ], "NotEndsWith": [ "object5" ], "NotEquals": [ "arn:aws:s3:::amzn-s3-demo-bucket/object6" ] } ] }
在前面的示例中,在以下情况下,将交付AWS::S3::Object
资源的 Amazon S3 数据事件:
-
以下任何一个DESELECT操作员条件都不满足:
-
该
resources.ARN
字段NotStartsWith
的值arn:aws:s3:::amzn-s3-demo-bucket/deselect
-
该
resources.ARN
字段NotEndsWith
的值object5
-
该
resources.ARN
字段NotEquals
的值arn:aws:s3:::amzn-s3-demo-bucket/object6
-
-
至少满足以下运SELECT算符条件之一:
-
该
resources.ARN
字段Equals
的值arn:aws:s3:::amzn-s3-demo-bucket/object1
-
该
resources.ARN
字段StartsWith
的值arn:aws:s3:::amzn-s3-demo-bucket/
-
该
resources.ARN
字段EndsWith
的值object3
-
基于评估逻辑:
-
之所以
amzn-s3-demo-bucket/object1
会交付的数据事件,是因为它与Equals
运算符的值相匹配,并且与NotStartsWith
NotEndsWith
、和运NotEquals
算符的任何值都不匹配。 -
之所以
amzn-s3-demo-bucket/object2
会传送的数据事件,是因为它与StartsWith
运算符的值相匹配,并且与NotStartsWith
NotEndsWith
、和运NotEquals
算符的任何值都不匹配。 -
之所以
amzn-s3-demo-bucket1/object3
会传送的数据事件,是因为它与EndsWith
运算符匹配,并且与NotStartsWith
NotEndsWith
、和运NotEquals
算符的任何值都不匹配。 -
arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4
不会传送的数据事件,因为它与的条件相匹配,NotStartsWith
即使它与StartsWith
运算符的条件相匹配。 -
arn:aws:s3:::amzn-s3-demo-bucket/object5
不会传送的数据事件,因为它与的条件相匹配,NotEndsWith
即使它与StartsWith
运算符的条件相匹配。 -
arn:aws:s3:::amzn-s3-demo-bucket/object6
不会传送的数据事件,因为尽管它与运算符的条件相匹配,但它与NotEquals
运算StartsWith
符的条件相匹配。
筛选数据事件的依据 eventName
使用高级事件选择器,您可以根据eventName
字段的值包含或排除事件。筛选eventName
可以帮助控制成本,因为您可以避免在以下情况下产生成本 AWS 服务
您正在记录数据事件,以增加对新数据的支持APIs。
可以在该eventName
字段中使用任何运算符。您可以使用它来筛选或筛选出记录到的任何数据事件 CloudTrail,例如或。PutBucket
GetSnapshotBlock
eventName
使用筛选数据事件 AWS Management Console
按照以下步骤使用 CloudTrail 控制台对eventName
字段进行筛选。
-
按照步骤创建跟踪或事件数据存储时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器
Name
中列出,如果展开视图,则可以JSON查看。 -
在高级事件选择器中,执行以下操作以筛选:
eventName
-
对于 “字段”,选择eventName。
-
对于运算符,选择条件运算符。在此示例中,我们将选择 e quals,因为我们要记录特定的API呼叫。
-
在 “值” 中,输入要筛选的事件的名称。
-
要筛选其他条件
eventName
,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
-
-
选择 +Field 可在其他字段上添加筛选器。
-
eventName
使用筛选数据事件 AWS CLI
使用 AWS 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"] } ] } ]'
下一个示例创建了一个新的事件数据存储,用于记录 Di EBS rect 的数据事件,APIs但不包括ListChangedBlocks
API呼叫。你可以使用 update-event-data-store命令更新现有的事件数据存储。
aws cloudtrail create-event-data-store \ --name "
eventDataStoreName
" --advanced-event-selectors '[ { "Name": "Log all EBS Direct API data events except ListChangedBlocks", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] }, { "Field": "eventName", "NotEquals": ["ListChangedBlocks"] } ] } ]'
筛选数据事件的依据 resources.ARN
使用高级事件选择器,您可以根据resources.ARN
字段的值进行筛选。
您可以将任何运算符与一起使用resources.ARN
,但是如果您使用Equals
或NotEquals
,则该ARN值必须与您指定的resources.type
值的有效资源完全匹配。要记录特定 S3 存储桶中所有对象的所有数据事件,请使用StartsWith
运算符,并且仅包含该存储桶ARN作为匹配值。
下表显示了每种ARN格式的有效格式resources.type
。
注意
您不能使用该resources.ARN
字段筛选没有的资源类型ARNs。
resources.type | 资源。 ARN |
---|---|
AWS::DynamoDB::Table1 |
|
AWS::Lambda::Function |
|
|
|
AWS::AppConfig::Configuration |
|
AWS::B2BI::Transformer |
|
AWS::Bedrock::AgentAlias |
|
AWS::Bedrock::FlowAlias |
|
AWS::Bedrock::Guardrail |
|
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::One::UKey |
|
AWS::One::User |
|
AWS::PaymentCryptography::Alias |
|
AWS::PaymentCryptography::Key |
|
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::RUM::AppMonitor |
|
|
|
|
|
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
使用筛选数据事件 AWS Management Console
按照以下步骤使用 CloudTrail 控制台对resources.ARN
字段进行筛选。
-
按照步骤创建跟踪或事件数据存储时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请选择自定义。
-
(可选)在选择器名称中,输入用于标识选择器的名称。选择器名称是高级事件选择器的描述性名称,例如“仅记录两个 S3 桶的数据事件”。选择器名称在高级事件选择器
Name
中列出,如果展开视图,则可以JSON查看。 -
在高级事件选择器中,执行以下操作以筛选:
resources.ARN
-
对于字段,选择资源。 ARN。
-
对于运算符,选择条件运算符。在此示例中,我们将选择从开始,因为我们要记录特定 S3 存储桶的数据事件。
-
在 “值” 中,输入与ARN您的资源类型对应的(例如
arn:aws:s3:::amzn-s3-demo-bucket
). -
要筛选其他条件
resources.ARN
,请选择 + 条件。有关如何 CloudTrail 评估多个条件的信息,请参阅如何 CloudTrail 评估一个字段的多个条件。
-
-
选择 +Field 可在其他字段上添加筛选器。
-
resources.ARN
使用筛选数据事件 AWS CLI
使用 AWS 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值略有不同,因此必须添加的StartsWith
运算符resources.ARN
才能捕获所有事件。
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:::amzn-s3-demo-bucket
/"] } ] } ]'
按readOnly
值筛选数据事件
使用高级事件选择器,您可以根据readOnly
字段的值进行筛选。
您只能在readOnly
字段中使用Equals
运算符。您可以将该readOnly
值设置为true
或false
。如果不添加此字段,则会同时 CloudTrail 记录读取和写入事件。true
日志的值仅读取事件。false
日志的值仅写入事件。
使用按readOnly
值筛选数据事件 AWS Management Console
按照以下步骤使用 CloudTrail 控制台对readOnly
字段进行筛选。
-
按照步骤创建跟踪或事件数据存储时,请进行以下选择:
-
选择数据事件。
-
选择要为其记录数据事件的数据事件类型。
-
对于日志选择器模板,请为您的用例选择相应的模板。
如果你打算这样做 选择此日志选择器模板 仅记录读取事件,不应用其他过滤器(例如,对
resources.ARN
值进行筛选)。记录 readOnly 事件
仅记录写入事件,不应用其他筛选器(例如,对
resources.ARN
值进行筛选)。记录 writeOnly 事件
对
readOnly
值进行筛选并应用其他筛选器(例如,对resources.ARN
值进行筛选)。自定义
在高级事件选择器中,执行以下操作以筛选该
readOnly
值:记录写入事件
-
对于 “字段”,选择readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
false
。 -
选择 +Field 可在其他字段上添加筛选器。
记录读取事件
-
对于 “字段”,选择readOnly。
-
对于运算符,选择 equals。
-
对于值,请输入
true
。 -
选择 +Field 可在其他字段上添加筛选器。
-
-
使用按readOnly
值筛选数据事件 AWS CLI
使用 AWS 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"] } ] } ]'
下一个示例创建了一个新的事件数据存储,该存储仅记录 Direct 的只写数据事件。EBS APIs你可以使用 update-event-data-store命令更新现有的事件数据存储。
aws cloudtrail create-event-data-store \ --name "
eventDataStoreName
" \ --advanced-event-selectors \ '[ { "Name": "Log write-only EBS Direct API data events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::EC2::Snapshot"] }, { "Field": "readOnly", "Equals": ["false"] } ] } ]'