

# 使用 AWS CloudTrail 日志监控 S3 on Outposts
<a name="S3OutpostsCloudtrail"></a>

Amazon S3 on Outposts 与 AWS CloudTrail 集成，后者是在 S3 on Outposts 中提供用户、角色或 AWS 服务所采取操作的记录的服务。您可以使用 AWS CloudTrail 获取关于 S3 on Outposts 桶级别请求以及对象级别请求的信息，这些请求旨在审计和记录您的 S3 on Outposts 事件活动。

要为所有 Outposts 桶或特定 Outposts 桶的列表启用 CloudTrail 数据事件，您必须[在 CloudTrail 中手动创建跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-create-a-trail-using-the-console-first-time.html)。有关 CloudTrail 日志文件条目的更多信息，请参阅 [S3 on Outposts 日志文件条目](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging-understanding-s3-entries.html#cloudtrail-logging-understanding-s3outposts-entries)。

有关 S3 on Outposts 的 CloudTrail 数据事件的完整列表，请参阅《Amazon S3 用户指南》**中的 [CloudTrail 中的 Amazon S3 数据事件](https://docs.aws.amazon.com/AmazonS3/latest/userguide/cloudtrail-logging-s3-info.html#cloudtrail-data-events)。

**注意**  
最佳实践是为 AWS CloudTrail 数据事件 Outposts 桶创建生命周期策略。配置生命周期策略，以便在您需要审计日志文件的时间段之后定期删除这些日志文件。这样做可以减少 Amazon Athena 为每个查询分析的数据量。有关更多信息，请参阅 [为 Amazon S3 on Outposts 桶创建和管理生命周期配置](S3OutpostsLifecycleManaging.md)。
有关如何查询 CloudTrail 日志的示例，请参阅 *AWS 大数据博客*文章[使用 AWS CloudTrail 和 Amazon Athena 分析安全性、合规性和操作活动](https://aws.amazon.com/blogs/big-data/aws-cloudtrail-and-amazon-athena-dive-deep-to-analyze-security-compliance-and-operational-activity/)。

## 为 S3 on Outposts 桶中的对象启用 CloudTrail 日志记录
<a name="s3-outposts-add-bucket-events-cloudtrail"></a>

您可以使用 Amazon S3 控制台配置 AWS CloudTrail 跟踪来记录 Amazon S3 on Outposts 桶中对象的数据事件。CloudTrail 支持记录 S3 on Outposts 对象级别 API 操作，例如 `GetObject`、`DeleteObject` 和 `PutObject`。这些事件称为*数据事件*。

原定设置情况下，CloudTrail 跟踪不记录数据事件。但是，可以将跟踪配置为记录您指定的 S3 on Outposts 存储桶的数据事件，或记录 AWS 账户中所有 S3 on Outposts 存储桶的数据事件。

CloudTrail 不会在 CloudTrail 事件历史记录中填充数据事件。此外，并非所有 S3 on Outposts 桶级别 API 操作都会填充在 CloudTrail 事件历史记录中。有关如何查询 CloudTrail 日志的更多信息，请参阅 AWS 知识中心上的[使用 Amazon CloudWatch Logs 筛选条件模式和 Amazon Athena 查询 CloudTrail 日志](https://aws.amazon.com/premiumsupport/knowledge-center/find-cloudtrail-object-level-events/)。

要配置跟踪以记录某个 S3 on Outposts 桶的数据事件，您可以使用 AWS CloudTrail 控制台或 Amazon S3 控制台。如果您要配置跟踪以记录您的 AWS 账户中所有 S3 on Outposts 桶的数据事件，使用 CloudTrail 控制台会更轻松。有关使用 CloudTrail 控制台配置跟踪以记录 S3 on Outposts 数据事件的信息，请参阅《AWS CloudTrail 用户指南》**中的[数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)。

**重要**  
记录数据事件将收取额外费用。有关更多信息，请参阅 [AWS CloudTrail 定价](https://aws.amazon.com/cloudtrail/pricing/)。

以下过程演示如何使用 Amazon S3 控制台配置 CloudTrail 跟踪来记录 S3 on Outposts 桶的数据事件。

**注意**  
创建桶的 AWS 账户拥有该桶，并且是唯一可以配置要发送到 AWS CloudTrail 的 S3 on Outposts 数据事件的账户。

**为 S3 on Outposts 桶中的对象启用 CloudTrail 数据事件日志记录**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 Amazon S3 控制台：[https://console.aws.amazon.com/s3/](https://console.aws.amazon.com/s3/)。

1. 在左侧导航窗格中，选择 **Outposts buckets**（Outposts 桶）。

1. 选择要使用 CloudTrail 记录其数据事件的 Outposts 桶的名称。

1. 选择**属性**。

1. 在 **AWS CloudTrail 数据事件**部分中，选择**在 CloudTrail 中配置**。

   AWS CloudTrail 控制台将打开。

   您可以创建新的 CloudTrail 跟踪或重用现有跟踪，并配置要在跟踪中记录的 S3 on Outposts 数据事件。

1. 在 CloudTrail 控制台的**控制面板**页面上，选择**创建跟踪**。

1. 在**步骤 1 选择跟踪属性**页面上，提供跟踪的名称，选择用于存储跟踪日志的 S3 桶，指定所需的任何其他设置，然后选择**下一步**。

1. 在**步骤 2 选择日志事件**页面的**事件类型**下，选择**数据事件**。

   对于**数据事件类型**，选择 **S3 Outposts**。选择**下一步**。
**注意**  
当为 S3 on Outposts 创建跟踪和配置数据事件日志记录时，必须正确指定数据事件类型。  
如果您使用 CloudTrail 控制台，请对于**数据事件类型**选择 **S3 Outposts**。有关如何在 CloudTrail 控制台中创建跟踪的信息，请参阅 *AWS CloudTrail 用户指南*中的[使用控制台创建和更新跟踪](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events)。有关如何在 CloudTrail 控制台中配置 S3 on Outposts 数据事件日志记录的信息，请参阅《AWS CloudTrail 用户指南》**中的[记录 Amazon S3 对象的数据事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#logging-data-events-examples)。
如果您使用 AWS Command Line Interface（AWS CLI）或 AWS SDK，请将 `resources.type` 字段设置为 `AWS::S3Outposts::Object`。有关如何使用 AWS CLI 记录 S3 on Outposts 数据事件的更多信息，请参阅《AWS CloudTrail 用户指南》**中的[记录 S3 on Outposts 事件](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/logging-data-events-with-cloudtrail.html#creating-data-event-selectors-CLI-outposts)。
如果您使用 CloudTrail 控制台或 Amazon S3 控制台配置某个跟踪以记录 S3 on Outposts 桶的数据事件，Amazon S3 控制台将显示已为该桶启用对象级别日志记录。

1. 在**步骤 3 查看和创建**页面上，查看您配置的跟踪属性和日志事件。然后，选择**创建跟踪**。

**为 S3 on Outposts 桶中的对象禁用 CloudTrail 数据事件日志记录**

1. 登录到 AWS 管理控制台，然后通过以下网址打开 CloudTrail 控制台：[https://console.aws.amazon.com/cloudtrail](https://console.aws.amazon.com/cloudtrail/)。

1. 在左侧导航窗格中，选择**跟踪**。

1. 选择您创建用于记录 S3 on Outposts 桶的事件的跟踪名称。

1. 在跟踪的详细信息页面上，选择右上角的**停止记录**。

1. 在随后显示的对话框中，选择**停止记录**。

## Amazon S3 on Outposts AWS CloudTrail 日志文件条目
<a name="s3-outposts-cloudtrail-logs"></a>

Amazon S3 on Outposts 管理事件可通过 AWS CloudTrail 提供。此外，您还可以选择性地[为 AWS CloudTrail 中的数据事件启用日志记录](https://docs.aws.amazon.com/AmazonS3/latest/user-guide/enable-cloudtrail-events.html)。

 *跟踪*是一种配置，可用于将事件作为日志文件传送到您指定的区域的 S3 存储桶中。Outposts 存储桶的 CloudTrail 日志包括一个新字段 `edgeDeviceDetails`，该字段用于识别指定存储桶所在的 Outpost。

其他日志字段包括请求的操作、操作的日期和时间以及请求参数。CloudTrail 日志文件不是公用 API 调用的有序堆栈跟踪，因此它们不会按任何特定顺序显示。

下面的示例显示了一个 CloudTrail 日志条目，该条目说明了 `s3-outposts` 上的 [PutObject](https://docs.aws.amazon.com/AmazonS3/latest/API/API_PutObject.html) 操作。

```
{
      "eventVersion": "1.08",
      "userIdentity": {
        "type": "IAMUser",
        "principalId": "111122223333",
        "arn": "arn:aws:iam::111122223333:user/yourUserName",
        "accountId": "222222222222",
        "accessKeyId": "AKIAIOSFODNN7EXAMPLE",
        "userName": "yourUserName"
      },
      "eventTime": "2020-11-30T15:44:33Z",
      "eventSource": "s3-outposts.amazonaws.com",
      "eventName": "PutObject",
      "awsRegion": "us-east-1",
      "sourceIPAddress": "26.29.66.20",
      "userAgent": "aws-cli/1.18.39 Python/3.4.10 Darwin/18.7.0 botocore/1.15.39",
      "requestParameters": {
        "expires": "Wed, 21 Oct 2020 07:28:00 GMT",
        "Content-Language": "english",
        "x-amz-server-side-encryption-customer-key-MD5": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "ObjectCannedACL": "BucketOwnerFullControl",
        "x-amz-server-side-encryption": "Aes256",
        "Content-Encoding": "gzip",
        "Content-Length": "10",
        "Cache-Control": "no-cache",
        "Content-Type": "text/html; charset=UTF-8",
        "Content-Disposition": "attachment",
        "Content-MD5": "je7MtGbClwBF/2Zp9Utk/h3yCo8nvbEXAMPLEKEY",
        "x-amz-storage-class": "Outposts",
        "x-amz-server-side-encryption-customer-algorithm": "Aes256",
        "bucketName": "amzn-s3-demo-bucket1",
        "Key": "path/upload.sh"
      },
      "responseElements": {
        "x-amz-server-side-encryption-customer-key-MD5": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY",
        "x-amz-server-side-encryption": "Aes256",
        "x-amz-version-id": "001",
        "x-amz-server-side-encryption-customer-algorithm": "Aes256",
        "ETag": "d41d8cd98f00b204e9800998ecf8427f"
      },
      "additionalEventData": {
        "CipherSuite": "ECDHE-RSA-AES128-SHA",
        "bytesTransferredIn": 10,
        "x-amz-id-2": "29xXQBV2O+xOHKItvzY1suLv1i6A52E0zOX159fpfsItYd58JhXwKxXAXI4IQkp6",
        "SignatureVersion": "SigV4",
        "bytesTransferredOut": 20,
        "AuthenticationMethod": "AuthHeader"
      },
      "requestID": "8E96D972160306FA",
      "eventID": "ee3b4e0c-ab12-459b-9998-0a5a6f2e4015",
      "readOnly": false,
      "resources": [
        {
          "accountId": "222222222222",
          "type": "AWS::S3Outposts::Object",
          "ARN": "arn:aws:s3-outposts:us-east-1:YYY:outpost/op-01ac5d28a6a232904/bucket/path/upload.sh"
        },
        {
          "accountId": "222222222222",
          "type": "AWS::S3Outposts::Bucket",
          "ARN": "arn:aws:s3-outposts:us-east-1:YYY:outpost/op-01ac5d28a6a232904/bucket/"
        }
      ],
      "eventType": "AwsApiCall",
      "managementEvent": false,
      "recipientAccountId": "444455556666",
      "sharedEventID": "02759a4c-c040-4758-b84b-7cbaaf17747a",
      "edgeDeviceDetails": {
        "type": "outposts",
        "deviceId": "op-01ac5d28a6a232904"
      },
      "eventCategory": "Data"
    }
```