记录跟踪的数据事件 - Amazon CloudTrail
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

记录跟踪的数据事件

默认情况下,跟踪不记录数据事件。记录数据事件将收取额外费用。有关更多信息,请参阅 Amazon CloudTrail 定价

注意

您的跟踪记录的事件在 Amazon CloudWatch Events 中。例如,如果您将跟踪配置为记录 S3 对象的数据事件而非管理事件,则您的跟踪将仅处理和记录指定的 S3 对象的数据事件。这些 S3 对象的数据事件在 Amazon CloudWatch Events 中。有关更多信息,请参阅 。AmazonAPI 调用事件中的Amazon CloudWatch Events 用户指南

数据事件

通过数据事件,可以了解对资源执行的或在资源内执行的资源操作。这些也称为数据层面操作。数据事件通常是高容量活动。

记录以下数据类型:

  • Amazon S3 对象级别活动 (例如,GetObjectDeleteObject, 和PutObjectAPI 操作)

  • Amazon Lambda 函数执行活动 (Invoke API)

  • Amazon DynamoDB 对象级别活动 (例如,PutItemDeleteItem, 和UpdateItemAPI 操作)。

  • 上的 S3 对象级别活动AmazonOutposts。此数据类型仅适用于高级事件选择器。

  • Amazon Managed Blockchain JSON-RPC 调用以太坊节点,如eth_getBalance或者eth_getBlockByNumber。此数据类型仅适用于高级事件选择器。

  • S3 对象 Lambda 访问点上的 API 活动,例如对CompleteMultipartUploadGetObject。此数据类型仅适用于高级事件选择器。

默认情况下,在您创建跟踪时,不记录数据事件。要记录 CloudTrail 数据事件,您必须明确将要为其收集活动的受支持的资源或资源类型添加到跟踪。有关更多信息,请参阅 创建跟踪

在单区域跟踪上,您只能记录可以在该区域访问的资源的数据事件。尽管 S3 存储桶是全局存储桶,Amazon Lambda函数和 DynamoDB 表是区域性的。

记录数据事件将收取额外费用。有关 CloudTrail 定价,请参阅Amazon CloudTrail定价

记录数据事件的步骤取决于您是否在跟踪上启用了高级事件选择器。使用本节中的过程,该过程与您在跟踪上启用的事件选择器类型相匹配。

  1. 打开跟踪页面并选择跟踪名称。

    注意

    虽然您可以编辑现有跟踪以添加日志记录数据事件,但作为最佳实践,请考虑专门创建单独的跟踪以记录数据事件。

  2. 适用于数据事件中,选择编辑

  3. 对于 Amazon S3 存储桶:

    1. 适用于数据事件源中,选择S3

    2. 您可以选择登录所有当前和未来的 S3 存储桶,也可以指定单个存储桶或函数。默认情况下,会记录所有当前和未来 S3 存储桶的数据事件。

      注意

      保留默认所有当前和未来的 S3 存储桶选项会为您的所有存储桶启用数据事件日志记录。Amazon帐户和您创建完跟踪后创建的任何存储桶。它也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的存储桶执行的。

      如果您正在为单个区域创建跟踪(通过使用AmazonCLI),选择选择账户中的所有 S3 存储桶选项会为跟踪所在的区域中的所有存储桶和您后来在该区域中创建的任何存储桶启用数据事件日志记录。不会为您的其他区域中的 Amazon S3 存储桶记录数据事件。Amazonaccount.

    3. 如果您保留默认值 ()所有当前和未来的 S3 存储桶,选择记录Read事件,写入事件或两者。

    4. 要选择单独的存储桶,请清空Read写入复选框所有当前和未来的 S3 存储桶。In单个存储桶选择中,浏览要在其上记录数据事件的存储桶。要查找特定存储桶,请键入所需存储桶的存储桶前缀。您可以在此窗口中选择多个存储桶。选择添加存储桶记录更多存储桶的数据事件。选择要记录Read事件,例如GetObject写入事件,例如PutObject或代表这两者的。

      此设置优先于为各个存储桶配置的个别设置。例如,如果指定记录所有 S3 存储桶的 Read 事件,然后选择为数据事件日志记录添加一个特定存储桶,则所添加存储桶的 Read 已经是选中状态。您无法清除此选择。只能配置 Write 选项。

      要从日志记录中删除存储桶,请选择X

  4. 要添加用于记录数据事件的其他数据类型,请选择添加数据事件类型

  5. 对于 Lambda 函数:

    1. 适用于数据事件源中,选择Lambda

    2. InLambda 函数中,选择所有区域记录所有 Lambda 函数,或者输入函数作为 ARN记录特定函数上的数据事件。

      要记录您的所有 Lambda 函数的数据事件,请参阅Amazon帐户中,选择记录所有当前和将来的函数。此设置优先于为各个函数配置的个别设置。将记录所有函数,即便这些函数未显示。

      注意

      如果为所有区域创建了一个跟踪,则此选择将为您的Amazon账户以及您在创建跟踪后可能在任何区域中创建的任何 Lambda 函数。如果您正在为单个区域创建跟踪(通过使用AmazonCLI),此选择将启用数据事件日志记录当前位于Amazon帐户以及完成跟踪创建后可能在该区域中创建的任何 Lambda 函数。它不会为在其他区域中创建的 Lambda 函数启用数据事件日志记录。

      所有函数的日志记录数据事件也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的函数执行的。

    3. 如果选择输入函数作为 ARN中,输入 Lambda 函数的 ARN。

      注意

      如果您的账户中有 15000 个以上的 Lambda 函数,则在创建跟踪时,您无法在 CloudTrail 控制台中查看或选择所有函数。您仍可以选择该选项来记录所有函数,即使未显示这些函数也是如此。如果您要记录特定函数的数据事件,则可手动添加一个函数 (如果您知道其 ARN)。您也可以在控制台中完成跟踪的创建操作,然后使用AmazonCLI 和put-event-selectors命令为特定 Lambda 函数配置数据事件日志记录。有关更多信息,请参阅 管理跟踪AmazonCLI

  6. 要添加用于记录数据事件的其他数据类型,请选择添加数据事件类型

  7. 对于 DynamoDB 表:

    1. 适用于数据事件源中,选择DynamoDB

    2. InDynamoDB 表选择器中,选择浏览选择一个表,或粘贴到您有权访问的 DynamoDB 表的 ARN 中。DynamoDB 表 ARN 采用以下格式:

      arn:partition:dynamodb:region:account_ID:table/table_name

      要添加另一个表,请选择添加行,然后浏览某个表或粘贴到您有权访问的表的 ARN 中。

  8. 选择更新跟踪

在Amazon Web Services Management Console,如果启用了高级事件选择器,则可以从预定义模板中进行选择,以记录选定资源上的所有数据事件(Amazon S3 存储桶、Lambda 函数、AmazonOutposts 站,用于托管区块链节点的以太坊,或 S3 对象 Lambda 接入点)。选择日志选择器模板后,您可以自定义模板,以仅包含最希望查看的数据事件。有关使用高级事件选择器的详细信息和提示,请参阅使用高级事件选择器记录事件在本主题中。

  1. 在存储库的控制面板或者跟踪页面中,选择跟踪名称以将其打开。

  2. 在跟踪的详细信息页面上,在数据事件中,选择编辑

  3. 如果您尚未记录数据事件,请选择数据事件”复选框。

  4. 适用于数据事件类型中,选择数据事件资源类型(S3 存储桶、动态数据表、Amazon您想要记录的 Outposts 站、托管区块链节点、Lambda 接入点上的 S3 对象或 Lambda 函数)。

  5. 选择日志选择器模板。CloudTrail 包括用于记录资源类型的所有数据事件的预定义模板。要构建自定义日志选择器模板,请选择Custom (自定义)

    注意

    为 S3 存储桶选择预定义模板可以为当前位于Amazon帐户和您创建完跟踪后创建的任何存储桶。它也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的存储桶执行的。

    如果跟踪仅应用于一个区域,则选择一个记录所有 S3 存储桶的预定义模板会为跟踪所在的区域中的所有存储桶和您后来在该区域中创建的任何存储桶启用数据事件日志记录。不会为您的其他区域中的 Amazon S3 存储桶记录数据事件。Amazonaccount.

    如果为所有区域创建跟踪,则为 Lambda 函数选择一个预定义的模板会为您的Amazon账户以及您在创建跟踪后可能在任何区域中创建的任何 Lambda 函数。如果您正在为单个区域创建跟踪(通过使用AmazonCLI),此选择将启用数据事件日志记录当前位于Amazon帐户以及完成跟踪创建后可能在该区域中创建的任何 Lambda 函数。它不会为在其他区域中创建的 Lambda 函数启用数据事件日志记录。

    所有函数的日志记录数据事件也将为由 Amazon 账户中的任何用户或角色执行的数据事件活动启用日志记录,即使该活动是对属于其他 Amazon 账户的函数执行的。

  6. 如果要应用预定义的日志选择器模板,并且不想添加其他数据事件资源类型,请选择保存更改。。您无需遵循此过程的剩余部分。要应用自定义日志选择器模板,请继续执行下一步。

  7. 要创建自定义日志选择器模板,请在日志选择器模板下拉列表中,选择Custom (自定义)

  8. (可选)输入自定义日志选择器模板的名称。

  9. In高级事件选择器,为特定的 S3 存储桶、动态 B表/S3 对象构建一个表达式AmazonOutposts、Lambda 接入点上的 S3 对象、托管区块链节点或要收集数据事件的 Lambda 函数。

    1. 从以下字段中进行选择。对于接受数组(多个值)的字段,CloudTrail 会在值之间添加 OR。

      • readOnly-readOnly可以设置为等于值为true或者false。只读数据事件是不会更改资源状态的事件,例如Get*或者Describe*事件. 写入事件添加、更改或删除资源、属性或对象,例如Put*Delete*,或者Write*事件. 记录两者的操作readwrite事件,请不要添加readOnly选择器。

      • eventName-eventName可以使用任何运算符。您可以使用它来包含或排除记录到 CloudTrail 的任何数据事件,例如PutBucket或者GetItem。您可以有多个值,以逗号分隔。

      • resources.type-在控制台中,不会出现此字段,因为它已经由您从数据事件类型下拉列表中)。在AmazonCLI 和软件开发工具包,resources.type只能使用等于运算符,值可以是以下之一:AWS::S3::ObjectAWS::S3Outposts::ObjectAWS::Lambda::FunctionAWS::DynamoDB::TableAWS::ManagedBlockchain::Node,或者AWS::S3ObjectLambda::AccessPoint

      • resources.ARN-您可以使用任意运算符resources.ARN,但是如果您使用等于或者笔记,则该值必须与您在模板中指定的类型的有效资源的 ARN 完全匹配,resources.type。例如,如果resources.typeequalsAWS። S3። 对象,ARN 必须采用以下格式之一。要记录特定 S3 存储桶中所有对象的所有数据事件,请使用StartsWith运算符,并且仅包含存储桶 ARN 作为匹配值。

        尾部斜杠是故意的;不要排除它。

        arn:partition:s3:::bucket_name/ arn:partition:s3:::bucket_name/object_or_file_name/

        何时resources.typeequalsAWS። 哨站። 对象,并且运算符被设置为等于或者笔记,ARN 必须采用以下格式:

        arn:partition:s3-outposts:region:account_ID:object_path

        何时resources.typeequalsAWS::Lambda::Function,并且运算符被设置为等于或者笔记,ARN 必须采用以下格式:

        arn:partition:lambda:region:account_ID:function:function_name

        何时resources.typeequalsAWS::DynamoDB::Table,并且运算符被设置为等于或者笔记,ARN 必须采用以下格式:

        arn:partition:dynamodb:region:account_ID:table/table_name

        何时resources.typeequalsAWS::ManagedBlockchain::Node,并且运算符被设置为等于或者笔记,ARN 必须采用以下格式:

        arn:partition:managedblockchain:region:account_ID:nodes/node_ID

        何时resources.typeequalsAWS። S3 对象 Lambda። AccessPoint,并且运算符被设置为等于或者笔记,ARN 必须采用以下格式:

        arn:partition:s3-object-lambda:region:account_ID:accesspoint/access_point_name

      有关数据事件资源的 ARN 格式的更多信息,请参阅Amazon S3 定义的资源类型定义的资源类型Amazon Lambda, 和Amazon DynamoDB 定义的资源类型中的AWS Identity and Access Management 用户指南

    2. 对于每个字段,请选择+ 条件可根据需要添加任意数量的条件,最多可为所有条件添加 500 个指定值。例如,要从跟踪记录的数据事件中排除两个 S3 存储桶的数据事件,您可以将字段设置为资源 .ARN,请将运算符设置为笔记,然后粘贴到 S3 存储桶 ARN 中,或浏览查找不想为其记录事件的 S3 存储桶。

      要添加第二个 S3 存储桶,请选择+ 条件,然后重复上述指令,在 ARN 中粘贴或浏览其他存储桶。

      注意

      您最多可以有 500 个跟踪上的所有选择器。这包括一个选择器的多个值的数组,例如eventName。如果所有选择器都有单个值,则最多可以向选择器添加 500 个条件。

      如果您的账户中有 15000 个以上的 Lambda 函数,则在创建跟踪时,您无法在 CloudTrail 控制台中查看或选择所有函数。您仍可以使用预定义选择器模板记录所有函数,即使未显示这些函数也是如此。如果您要记录特定函数的数据事件,则可手动添加一个函数 (如果您知道其 ARN)。您也可以在控制台中完成跟踪的创建操作,然后使用AmazonCLI 和put-event-selectors命令为特定 Lambda 函数配置数据事件日志记录。有关更多信息,请参阅 管理跟踪AmazonCLI

    3. 选择+ 字段以根据需要添加其他字段。为避免错误,请不要为字段设置冲突或重复的值。例如,不要将一个选择器中的 ARN 指定为等于某个值,然后在另一个选择器中指定 ARN 不等于相同的值。

    4. 保存对自定义选择器模板的更改,方法是选择下一步。不要选择其他日志选择器模板,或离开此页面,否则您的自定义选择器将丢失。

  10. 要添加用于记录数据事件的其他数据类型,请选择添加数据事件类型。重复步骤 4 到此步骤,为数据事件类型配置高级事件选择器。

  11. 在您选择下一步, 在步骤 2: 选择 Log 事件中,查看您选择的日志选择器模板选项。选择编辑返回并进行更改。

  12. 在您查看并验证您的选择后,选择更新跟踪如果这是一个现有的跟踪,或者创建跟踪(如果您正在创建新跟踪)。

示例:记录 Amazon S3 对象的数据事件

记录一个 S3 存储桶中的所有 S3 对象的数据事件

下面的示例演示在为一个名为 bucket-1 的 S3 存储桶中的所有数据事件配置日志记录时日志记录是如何工作的。在此示例中,CloudTrail 用户指定了一个空前缀,以及用于记录Read写入数据事件。

  1. 用户将对象上传到 bucket-1

  2. PutObject API 操作是 Amazon S3 对象级别的 API。它在 CloudTrail 中记录为数据事件。由于 CloudTrail 用户指定带空前缀的 S3 存储桶,因此将记录该存储桶中的任何对象上发生的事件。跟踪将处理和记录事件。

  3. 另一个用户将对象上传到 bucket-2

  4. PutObject API 操作发生在您未指定跟踪的 S3 存储桶中的某个对象上。跟踪不会记录此事件。

记录特定 S3 对象的数据事件

下面的示例演示在您为特定 S3 对象配置事件日志记录跟踪时日志记录是如何工作的。在此示例中,CloudTrail 用户指定了一个名为桶 3,使用前缀my-images,并选择仅记录写入数据事件。

  1. 一个用户在存储桶中检测到一个以 my-images 前缀开头的对象,例如 arn:aws:s3:::bucket-3/my-images/example.jpg

  2. DeleteObject API 操作是 Amazon S3 对象级别的 API。它被记录为写入CloudTrail 中的数据事件。该事件发生在与您在跟踪中指定的 S3 存储桶和前缀匹配的对象上。跟踪将处理和记录事件。

  3. 另一个用户删除了 S3 存储桶中一个带不同前缀的对象,例如 arn:aws:s3:::bucket-3/my-videos/example.avi

  4. 该事件发生在与您在跟踪中指定的前缀不匹配的对象上。跟踪不会记录此事件。

  5. 一个用户对对象 arn:aws:s3:::bucket-3/my-images/example.jpg 调用 GetObject API 操作。

  6. 虽然事件发生在跟踪中指定的存储桶和前缀上,但 GetObject 是读取类型的 Amazon S3 对象级 API。它被记录为Read数据事件,而跟踪未配置为记录Read事件. 跟踪不会记录此事件。

注意

如果您记录特定 Amazon S3 存储桶的数据事件,建议您不要使用将记录其数据事件的 Amazon S3 存储桶来接收您在数据事件部分中指定的日志文件。使用相同的 Amazon S3 存储桶会导致您的跟踪在日志文件每次传输到 Amazon S3 存储桶时都记录数据事件。日志文件是按时间间隔传输的聚合事件,因此,事件与日志文件的比率不是 1:1;事件将记录到下一个日志文件中。例如,当跟踪传送日志时,PutObject 事件会在 S3 存储桶上发生。如果还在数据事件部分中指定了 S3 存储桶,跟踪将处理 PutObject 事件并将其记录为数据事件。该操作是另一个 PutObject 事件,并且跟踪将重新处理和记录此事件。有关更多信息,请参阅 CloudTrail 的工作方式

为避免记录您用于接收日志文件的 Amazon S3 存储桶的数据事件(如果您将跟踪配置为记录您的所有 Amazon S3 数据事件)Amazon账户,请考虑将日志文件传输到属于其他 Amazon S3 存储桶Amazonaccount. 有关更多信息,请参阅 接收多个账户中的 CloudTrail 日志文件

记录其他中的 S3 对象的数据事件Amazon账户

在将跟踪配置为记录数据事件时,您还可以指定属于其他 Amazon 账户的 S3 对象。当事件在指定对象上发生时,CloudTrail 将评估事件是否与每个账户中的任何跟踪匹配。如果事件与某个跟踪设置匹配,则跟踪将处理并记录该账户的事件。通常,API 调用者和资源所有者都可以接收事件。

如果您拥有一个 S3 对象并且在跟踪中指定此对象,则您的跟踪将记录在您的账户中的对象上发生的事件。由于您拥有该对象,因此您的跟踪还将在其他账户调用该对象时记录事件。

如果您在跟踪中指定一个 S3 对象,并且其他账户拥有此对象,则您的跟踪仅记录在您的账户中的此对象上发生的事件。您的跟踪不会记录其他账户中发生的事件。

示例:记录两个对象的 S3 对象的数据事件Amazon账户

下面的示例演示两个Amazon账户配置 CloudTrail 以记录同一 S3 对象的事件。

  1. 在您的账户中,您希望您的跟踪记录名为 owner-bucket 的 S3 存储桶中所有对象的数据事件。通过指定带空对象前缀的 S3 存储桶来配置跟踪。

  2. Bob 拥有一个单独的账户,该账户已获得对 S3 存储桶的访问权限。Bob 还希望记录同一 S3 存储桶中所有对象的数据事件。对于其跟踪,他配置了跟踪并指定带空对象前缀的同一 S3 存储桶。

  3. Bob 使用 PutObject API 操作将对象上传到 S3 存储桶。

  4. 此事件在他的账户中发生,并且与他的跟踪设置匹配。Bob 的跟踪将处理和记录该事件。

  5. 由于您拥有 S3 存储桶并且事件与您的跟踪设置匹配,因此您的跟踪也将处理和记录同一事件。因为现在有两个事件副本(一个记录在 Bob 的跟踪中,一个记录在您的跟踪中),所以 CloudTrail 对数据事件的两个副本收取费用。

  6. 您将一个对象上传到 S3 存储桶。

  7. 此事件在您的账户中发生并且与您的跟踪设置匹配。您的跟踪将处理和记录此事件。

  8. 由于事件未在 Bob 的账户中发生,并且他不拥有 S3 存储桶,因此他的跟踪不会记录事件。CloudTrail 仅为此数据事件的一个副本收费。

示例:记录所有存储桶的数据事件,包括两个存储桶Amazon账户

以下示例说明:选择账户中的所有 S3 存储桶为收集数据事件的跟踪启用Amazonaccount.

  1. 在您的账户中,您希望您的跟踪记录所有 S3 存储桶的数据事件。您可以通过选择Read事件,写入事件,或两者所有当前和未来的 S3 存储桶数据事件

  2. Bob 拥有一个单独的账户,该账户已被授予对您账户中 S3 存储桶的访问权限。他想记录他有权访问的存储桶的数据事件。他配置他的跟踪以获取所有 S3 存储桶的数据事件。

  3. Bob 使用 PutObject API 操作将对象上传到 S3 存储桶。

  4. 此事件在他的账户中发生,并且与他的跟踪设置匹配。Bob 的跟踪将处理和记录该事件。

  5. 由于您拥有 S3 存储桶并且事件与您跟踪的设置匹配,因此您的跟踪也将处理和记录此事件。因为现在有两个事件副本(一个记录在 Bob 的跟踪中,一个记录在您的跟踪中),所以 CloudTrail 针对数据事件的一个副本对每个账户收取费用。

  6. 您将一个对象上传到 S3 存储桶。

  7. 此事件在您的账户中发生并且与您的跟踪设置匹配。您的跟踪将处理和记录此事件。

  8. 由于事件未在 Bob 的账户中发生,并且他不拥有 S3 存储桶,因此他的跟踪不会记录事件。CloudTrail 仅为您账户中此数据事件的一个副本收费。

  9. 第三个用户 Mary 可以访问 S3 存储桶,并在存储桶上运行 GetObject 操作。她有一个跟踪配置为记录其账户中所有 S3 存储桶上的数据事件。因为她是 API 调用者,所以 CloudTrail 在她的跟踪中记录数据事件。虽然 Bob 有权访问该存储桶,但他不是资源所有者,因此这次未在他的跟踪中记录任何事件。作为资源所有者,您会在跟踪中收到一个关于GetObject操作,玛丽调用。CloudTrail 针对数据事件的每个副本对您的账户和 Mary 的账户收取费用:一个在 Mary 的跟踪中,一个在您的跟踪中。

只读和只写事件

在配置您的跟踪以记录数据事件和管理事件时,您可以指定是需要只读事件、或只写事件还是两者。

  • Read

    Read事件包括将读取您的资源但不进行更改的 API 操作。例如,只读事件包括 Amazon EC2DescribeSecurityGroupsDescribeSubnetsAPI 操作。这些操作仅返回有关 Amazon EC2 资源的信息,不更改您的配置。

  • 写入

    写入事件包括将修改(或可能修改)您的资源的 API 操作。例如,Amazon EC2RunInstancesTerminateInstancesAPI 操作将修改您的实例。

示例:记录单独跟踪的读取和写入事件

以下示例说明如何将跟踪配置为将账户的日志活动拆分到单独的 S3 存储桶中:一个存储桶接收只读事件,另一个存储桶接收只写事件。

  1. 您创建一个跟踪并选择一个名为 read-only-bucket 的 S3 存储桶来接收日志文件。然后,您更新跟踪以指定您需要Read管理事件和数据事件。

  2. 您创建另一个跟踪并选择一个名为 write-only-bucket 的 S3 存储桶来接收日志文件。然后,您更新跟踪以指定您需要写入管理事件和数据事件。

  3. Amazon EC2DescribeInstancesTerminateInstancesAPI 操作将在您的账户中执行。

  4. DescribeInstances API 操作是只读事件,它匹配第一个跟踪的设置。跟踪将记录事件并将事件传送到 read-only-bucket

  5. TerminateInstances API 操作是只写事件,它匹配第二个跟踪的设置。跟踪将记录事件并将事件传送到 write-only-bucket

记录数据事件与Amazon命令行界面

您可以使用配置您的跟踪以记录管理事件和数据事件。AmazonCLI。要查看您的跟踪是否正在记录管理事件和数据事件,请运行get-event-selectors命令。

注意

请注意,如果您的账户正在记录多个管理事件副本,您将产生费用。记录数据事件将收取费用。有关更多信息,请参阅 Amazon CloudTrail 定价

aws cloudtrail get-event-selectors --trail-name TrailName

命令返回跟踪的默认设置。

使用基本事件选择器记录事件

下面是get-event-selectors命令显示基本事件选择器。默认情况下,在使用AmazonCLI,跟踪将记录所有管理事件。默认情况下,跟踪不记录数据事件。

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

要将跟踪配置为记录管理事件和数据事件,请运行 put-event-selectors 命令。

以下示例说明如何使用基本事件选择器配置您的跟踪以包含两个 S3 对象的所有管理事件和数据事件。您可以为一个跟踪指定 1 至 5 个事件选择器。您可以为一个跟踪指定 1 至 250 个数据资源。

注意

如果您选择使用基本事件选择器限制数据事件,则最多只能有 250 个 S3 数据资源。

aws cloudtrail put-event-selectors --trail-name TrailName --event-selectors '[{ "ReadWriteType": "All", "IncludeManagementEvents":true, "DataResources": [{ "Type": "AWS::S3::Object", "Values": ["arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2"] }] }]'

命令返回为跟踪配置的事件选择器。

{ "EventSelectors": [ { "IncludeManagementEvents": true, "DataResources": [ { "Values": [ "arn:aws:s3:::mybucket/prefix", "arn:aws:s3:::mybucket2/prefix2", ], "Type": "AWS::S3::Object" } ], "ReadWriteType": "All" } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

使用高级事件选择器记录事件

如果您选择使用高级事件选择器,get-event-selectors命令将返回类似于以下内容的结果。默认情况下,不会为跟踪配置高级事件选择器。

{ "AdvancedEventSelectors": [], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

以下示例说明如何使用高级事件选择器记录所有管理事件(readOnlywriteOnly),并包含PutObjectDeleteObject事件中的两个 S3 存储桶前缀中的 S3 对象。如此处所示,您可以使用高级事件选择器不仅选择 ARN 的 S3 前缀名称,还可以选择要记录的特定事件的名称。您可以将多达 500 个条件添加到每个跟踪的高级事件选择器,包括所有选择器值。您可以为一个跟踪指定 1 至 250 个数据资源。

aws cloudtrail put-event-selectors --trail-name TrailName \ --advanced-event-selectors '[ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Management"] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "eventName", "Equals": ["PutObject","DeleteObject"] }, { "Field": "resources.ARN", "StartsWith": ["arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2"] } ] } ]'

结果显示为跟踪配置的高级事件选择器。

{ "AdvancedEventSelectors": [ { "Name": "Log readOnly and writeOnly management events", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Management" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] } ] }, { "Name": "Log PutObject and DeleteObject events for two S3 prefixes", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ], "StartsWith": [], "EndsWith": [], "NotEquals": [], "NotStartsWith": [], "NotEndsWith": [] }, { "Field": "resources.ARN", "Equals": [], "StartsWith": [ "arn:aws:s3:::mybucket/prefix","arn:aws:s3:::mybucket2/prefix2" ], "EndsWith": [], "Equals": [], "NotStartsWith": [], "NotEndsWith": [] } ] } ], "TrailARN": "arn:aws:cloudtrail:us-east-2:123456789012:trail/TrailName" }

使用高级事件选择器记录存储桶的所有 Amazon S3 事件

以下示例说明如何配置您的跟踪以包含特定 S3 存储桶中所有 Amazon S3 对象的所有数据事件。S3 事件的值resources.type字段为AWS::S3::Object。由于 S3 对象和 S3 存储桶的 ARN 值略有不同,因此添加StartsWith运算符resources.ARN捕获所有事件。

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3::Object"] }, { "Field": "resources.ARN", "StartsWith": ["arn:partition:s3:::bucket_name/"] } ] } ]'

该命令返回以下示例输出。

{ "AdvancedEventSelectors": [ { "Name": "S3EventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3::Object" ] }, { "Field": "resources.ARN", "StartsWith": [ "arn:partition:s3:::bucket_name/" ] } ] } ], "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName" }

登录 Amazon S3Amazon使用高级事件选择器发送事件

以下示例说明如何配置您的跟踪以包含您的 Outposts 中所有 Amazon S3 上的前哨对象的所有数据事件。在此版本 Outposts 用于resources.type字段为AWS::S3Outposts::Object

aws cloudtrail put-event-selectors --trail-name TrailName --region region \ --advanced-event-selectors \ '[ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": ["Data"] }, { "Field": "resources.type", "Equals": ["AWS::S3Outposts::Object"] } ] } ]'

该命令返回以下示例输出。

{ "AdvancedEventSelectors": [ { "Name": "OutpostsEventSelector", "FieldSelectors": [ { "Field": "eventCategory", "Equals": [ "Data" ] }, { "Field": "resources.type", "Equals": [ "AWS::S3Outposts::Object" ] } ] } ], "TrailARN": "arn:aws:cloudtrail:region:account_ID:trail/TrailName" }

使用记录事件Amazon开发工具包

运行获取 GetEventSelectors操作以查看您的跟踪是否正在记录跟踪的数据事件。您可以配置您的跟踪以记录数据事件。PutEventSelectorsoperation. 有关详细信息,请参阅 Amazon CloudTrail API 参考

将事件发送到 Amazon CloudWatch Logs

CloudTrail 支持将数据事件发送到 CloudWatch Logs。在配置您的跟踪以将事件发送到 CloudWatch Logs 日志组时,CloudTrail 仅发送您在跟踪中指定的事件。例如,如果您将跟踪配置为仅记录数据事件,则您的跟踪仅将数据事件传送至 CloudWatch Logs 日志组。有关更多信息,请参阅 使用 Amazon CloudTrail ch Logs 监控 CloudWatch Logs 日志文件