

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 高度なイベントセレクタを使用してデータイベントをフィルタする
<a name="filtering-data-events"></a>

このセクションでは、高度なイベントセレクタを使用して、データイベントをログ記録するための詳細なセレクタを作成する方法について説明します。これにより、目的のデータイベントのみをログに記録することができるようになり、コストを管理できます。

例えば、次のようになります。
+ `eventName` フィールドにフィルターを追加することで、特定の API コールを含めることも除外することもできます。
+ `resources.ARN` フィールドにフィルターを追加することで、特定のリソースのログ記録を含めることも除外することもできます。例えば、S3 データイベントをログに記録している場合、証跡の S3 バケットのログ記録を除外することができます。
+ `readOnly` フィールドにフィルターを追加することで、書き込み専用イベントのみまたは読み取り専用イベントのみをログに記録することができます。

次の表は、データイベントをフィルタリングするためにサポートされているフィールドを示しています。各 CloudTrail イベントタイプでサポートされているフィールドのリストについては、「*AWS CloudTrail API リファレンス*」の「[AdvancedEventSelector](https://docs.aws.amazon.com/awscloudtrail/latest/APIReference/API_AdvancedEventSelector.html)」を参照してください。


| フィールド | 必要 | 有効な演算子: | [Description] (説明) | 
| --- | --- | --- | --- | 
|  **`eventCategory` **  |  はい  |  `Equals`  |  このフィールドは、データイベントを記録するように `Data` に設定されています。  | 
|  **`resources.type`**  |  はい  |  `Equals`  |  このフィールドは、データイベントを記録するリソースタイプを選択する際に使用します。[データイベント](logging-data-events-with-cloudtrail.md#logging-data-events)テーブルには、使用可能な値が表示されます。  | 
|  **`readOnly`**  |  いいえ  |  `Equals`  |  これは、`readOnly` 値に基づいてデータイベントを含めるまたは除外するために使用するオプションのフィールドです。値が `true` の場合は読み取りイベントのログのみを記録します。値が `false` の場合は書き込みイベントのログのみを記録します。このフィールドを追加しない場合、CloudTrail は読み取りと書き込みの両方のイベントのログを記録します。  | 
|  **`eventName`**  |  いいえ  |  `EndsWith` `Equals` `NotEndsWith` `NotEquals` `NotStartsWith` `StartsWith`  |  これは、`PutBucket` または `GetSnapshotBlock` などの CloudTrail にログ記録されるデータイベントを、含めるか除外するために使用するオプションのフィールドです。 を使用している場合は AWS CLI、各値をカンマで区切って複数の値を指定できます。 コンソールを使用している場合、フィルタリングする各 `eventName` に対して条件を作成することで、複数の値を指定できます。  | 
|  **`resources.ARN`**  |  いいえ  |  `EndsWith` `Equals` `NotEndsWith` `NotEquals` `NotStartsWith` `StartsWith`  |  これは、`resources.ARN` を指定することで、特定のリソースのデータイベントを除外するか含めるために使用するオプションのフィールドです。`resources.ARN` には任意の演算子を使用することができますが、`Equals` または `NotEquals` を使用する場合、指定した `resources.type` の有効なリソースの ARN と値が完全に一致する必要があります。特定の S3 バケット内のすべてのオブジェクトのすべてのデータイベントをログ記録するには、`StartsWith` 演算子を使用し、一致する値としてバケット ARN のみを含めます。 を使用している場合は AWS CLI、各値をカンマで区切って複数の値を指定できます。 コンソールを使用している場合、フィルタリングする各 `resources.ARN` に対して条件を作成することで、複数の値を指定できます。  | 
|  **`eventSource`**  |  いいえ  |  `EndsWith` `Equals` `NotEndsWith` `NotEquals` `NotStartsWith` `StartsWith`  |  これを使用して、特定のイベントソースを含めたり除外したりできます。`eventSource` は通常、スペースなしのサービス名の短縮形に `.amazonaws.com` を付けたものです。例えば、`eventSource` `Equals` を `ec2.amazonaws.com` に設定して、Amazon EC2 データイベントのみをログに記録できます。  | 
|  **`eventType`**  |  いいえ  |  `EndsWith` `Equals` `NotEndsWith` `NotEquals` `NotStartsWith` `StartsWith`  |  含めるまたは除外する[イベントタイプ](cloudtrail-event-reference-record-contents.md#ct-event-type)。例えば、このフィールドを `NotEquals` `AwsServiceEvent` に設定して、[AWS のサービス イベント](non-api-aws-service-events.md)を除外できます。  | 
|  **`sessionCredentialFromConsole`**  |  いいえ  |  `Equals` `NotEquals`  |   AWS マネジメントコンソール セッションから発生するイベントを含めるか除外します。このフィールドは、`true` の値で `Equals` または `NotEquals` に設定できます。  | 
|  **`userIdentity.arn`**  |  いいえ  |  `EndsWith` `Equals` `NotEndsWith` `NotEquals` `NotStartsWith` `StartsWith`  |  特定の IAM アイデンティティによって実行されたアクションのイベントを含めるか、除外します。詳細については、[CloudTrail userIdentity 要素](https://docs.aws.amazon.com/awscloudtrail/latest/userguide/cloudtrail-event-reference-user-identity.html)を参照してください。  | 

CloudTrail コンソールを使用してデータイベントのログを記録するには、証跡またはイベントデータストアを作成または更新するときに、**[データイベント]** オプションを選択し、目的の **[リソースタイプ]** を選択します。[[データイベント]](logging-data-events-with-cloudtrail.md#logging-data-events) テーブルには、CloudTrail コンソールで選択できるリソースタイプが表示されます。

![\[コンソール上での [SNS トピック] リソースタイプの選択。\]](http://docs.aws.amazon.com/ja_jp/awscloudtrail/latest/userguide/images/cloudtrail-data-event-type.png)


を使用してデータイベントをログに記録するには AWS CLI、 `--advanced-event-selector`パラメータを設定して、データイベントをログに記録するリソースタイプの値`eventCategory`と等しい `Data`と`resources.type`値を設定します。[[データイベント]](logging-data-events-with-cloudtrail.md#logging-data-events) テーブルには、使用可能なリソースタイプが一覧表示されます。

例えば、すべての 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 バケットのイベントログは除外するように高度なイベントセレクタを設定することができます。*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 がフィールドの複数の条件を評価する方法](#filtering-data-events-conditions)」を参照してください。

高度なイベントセレクタを使用すれば、管理イベントとデータイベントの両方をログに記録できます。複数のリソースタイプのデータイベントのログを記録するには、データイベントのログを記録するリソースタイプごとにフィールドセレクタステートメントを追加します。

**注記**  
ベーシックなイベントセレクターまたは高度なイベントセレクターのいずれかを使用できますが、両方を使用することはできません。高度なイベントセレクターを証跡に適用すると、既存の基本的なイベントセレクターは上書きされます。  
セレクタは、`*` のようなワイルドカードの使用をサポートしていません。複数の値を 1 つの条件と一致させるには、`StartsWith`、`EndsWith`、`NotStartsWith`、または `NotEndsWith` を使用して、イベントフィールドの先頭または末尾を明示的に一致させることができます。

**Topics**
+ [CloudTrail がフィールドの複数の条件を評価する方法](#filtering-data-events-conditions)
+ [AWS CLI データイベントをフィルタリングするための例](#filtering-data-events-examples)

## CloudTrail がフィールドの複数の条件を評価する方法
<a name="filtering-data-events-conditions"></a>

高度なイベントセレクタの場合、CloudTrail は フィールドの複数の条件を次のように評価します。
+ DESELECT 演算子は AND で複数条件を評価します。DESELECT 演算子の条件のいずれかが満たされた場合、イベントは配信されません。高度なイベントセレクタで利用可能な DESELECT 演算子は次のとおりです。
  + `NotEndsWith`
  + `NotEquals`
  + `NotStartsWith`
+ SELECT 演算子は OR で複数条件を評価します。高度なイベントセレクタで利用可能な SELECT 演算子は次のとおりです。
  + `EndsWith`
  + `Equals`
  + `StartsWith`
+ SELECT 演算子と DESELECT 演算子を組み合わせた場合も、上記のルールが適用され、両方のグループの条件を AND で評価します。

### `resources.ARN` フィールドの複数の条件を示す例
<a name="filtering-data-events-conditions-ex"></a>

次のイベントセレクタステートメント例では、`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 データイベントは、次の場合に配信されます。

1. これらの 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`

1. これらの SELECT 演算子条件の少なくとも 1 つが満たされている。
   + `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`

評価ロジックに基づいて次のようになります。

1. `amzn-s3-demo-bucket/object1` のデータイベントは、`Equals` 演算子の値と一致し、`NotStartsWith`、`NotEndsWith`、`NotEquals` 演算子の値のいずれにも一致しないため配信されます。

1. `amzn-s3-demo-bucket/object2` のデータイベントは、`StartsWith` 演算子の値と一致し、`NotStartsWith`、`NotEndsWith`、`NotEquals` 演算子の値のいずれにも一致しないため配信されます。

1. `amzn-s3-demo-bucket1/object3` のデータイベントは、`EndsWith` 演算子と一致し、`NotStartsWith`、`NotEndsWith`、`NotEquals` 演算子の値のいずれにも一致しないため配信されます。

1. `arn:aws:s3:::amzn-s3-demo-bucket/deselectObject4` のデータイベントは、`StartsWith` 演算子の条件と一致するものの、`NotStartsWith` の条件とも一致するため配信されません。

1. `arn:aws:s3:::amzn-s3-demo-bucket/object5` のデータイベントは、`StartsWith` 演算子の条件と一致するものの、`NotEndsWith` の条件とも一致するため配信されません。

1. `arn:aws:s3:::amzn-s3-demo-bucket/object6` のデータイベントは、`StartsWith` 演算子の条件と一致するものの、`NotEquals` 演算子の条件とも一致するため配信されません。

## AWS CLI データイベントをフィルタリングするための例
<a name="filtering-data-events-examples"></a>

このセクションでは、さまざまなフィールドでデータイベントをフィルタリングする方法 AWS CLI の例を示します。その他の AWS CLI 例については、[高度なイベントセレクタを使用して証跡のデータイベントをログに記録する](logging-data-events-with-cloudtrail.md#creating-data-event-selectors-advanced)「」および「」を参照してください[を使用したイベントデータストアのデータイベントのログ記録 AWS CLI](logging-data-events-with-cloudtrail.md#logging-data-events-CLI-eds-examples)。

コンソールを使用してデータイベントをログに記録する方法の詳細については、「[を使用したデータイベントのログ記録 AWS マネジメントコンソール](logging-data-events-with-cloudtrail.md#logging-data-events-console)」を参照してください。

**Topics**
+ [例 1: `eventName` フィールドでのフィルタリング](#filtering-data-events-eventname)
+ [例 2: `resources.ARN` および `userIdentity.arn` フィールドでのフィルタリング](#filtering-data-events-useridentityarn)
+ [例 3: `resources.type` および `eventName` フィールドでフィルタリングして、Amazon S3 DeleteObjects イベントによって削除された個々のオブジェクトを除外する](#filtering-data-events-deleteobjects)

### 例 1: `eventName` フィールドでのフィルタリング
<a name="filtering-data-events-eventname"></a>

最初の例では、証跡の `--advanced-event-selectors` は、汎用バケットの Amazon S3 オブジェクトの `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"] }
    ]
  }
]'
```

次の例では、EBS Direct API のデータイベントは含めるものの、`ListChangedBlocks` API コールは除外してログを記録する新しいイベントデータストアを作成しています。[https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html](https://docs.aws.amazon.com/cli/latest/reference/cloudtrail/update-event-data-store.html) コマンドを使用して、既存のイベントデータストアを更新できます。

```
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"] }
         ]
    }
]'
```

### 例 2: `resources.ARN` および `userIdentity.arn` フィールドでのフィルタリング
<a name="filtering-data-events-useridentityarn"></a>

次の例は、特定の汎用 S3 バケット内のすべての Amazon S3 オブジェクトのデータイベントを含めますが、`bucket-scanner-role` `userIdentity` によって生成されたイベントを除外する方法を示しています。`resources.type` の S3 イベントの値フィールドは `AWS::S3::Object` です。S3 オブジェクトと S3 バケットの ARN 値はわずかに異なるため、`resources.ARN` の `StartsWith` 演算子を追加する必要があります。

```
aws cloudtrail put-event-selectors \
--trail-name trailName \
--advanced-event-selectors \
'[
    {
        "Name": "S3EventSelector",
        "FieldSelectors": [
            { "Field": "eventCategory", "Equals": ["Data"] },
            { "Field": "resources.type", "Equals": ["AWS::S3::Object"] },
            { "Field": "resources.ARN", "StartsWith": ["arn:partition:s3:::amzn-s3-demo-bucket/"] },
            { "Field": "userIdentity.arn", "NotStartsWith": ["arn:aws:sts::123456789012:assumed-role/bucket-scanner-role"]}
        ]
    }
]'
```

### 例 3: `resources.type` および `eventName` フィールドでフィルタリングして、Amazon S3 DeleteObjects イベントによって削除された個々のオブジェクトを除外する
<a name="filtering-data-events-deleteobjects"></a>

次の例は、特定の汎用 Amazon S3 バケットのすべての Amazon S3 オブジェクトのすべてのデータイベントを含めますが、`DeleteObject` オペレーションによって削除された個々のオブジェクトを除外する方法を示しています。`resources.type` の S3 イベントの値フィールドは `AWS::S3::Object` です。イベント名の値は `DeleteObject` です。

```
aws cloudtrail put-event-selectors \
--trail-name trailName \
--advanced-event-selectors \

{
    "Name": "Exclude Events for DeleteObject operation",
    "FieldSelectors": [
      {
        "Field": "eventCategory",
        "Equals": [
          "Data"
        ]
      },
      {
        "Field": "resources.type",
        "Equals": [
          "AWS::S3::Object"
        ]
      },
      {
        "Field": "eventName",
        "NotEquals": [
          "DeleteObject"
        ]
      }
    ]
  },
  {
    "Name": "Exclude DeleteObject Events for individual objects deleted by DeleteObjects Operation",
    "FieldSelectors": [
      {
        "Field": "eventCategory",
        "Equals": [
          "Data"
        ]
      },
      {
        "Field": "resources.type",
        "Equals": [
          "AWS::S3::Object"
        ]
      },
      {
        "Field": "eventName",
        "Equals": [
          "DeleteObject"
        ]
      },
      {
        "Field": "eventType",
        "NotEquals": [
          "AwsServiceEvent"
        ]
      }
    ]
  }
] (edited)
```