putInsightSelectors method

Future<PutInsightSelectorsResponse> putInsightSelectors({
  1. required List<InsightSelector> insightSelectors,
  2. String? eventDataStore,
  3. String? insightsDestination,
  4. String? trailName,
})

Lets you enable Insights event logging on specific event categories by specifying the Insights selectors that you want to enable on an existing trail or event data store. You also use PutInsightSelectors to turn off Insights event logging, by passing an empty list of Insights types. The valid Insights event types are ApiErrorRateInsight and ApiCallRateInsight, and valid EventCategories are Management and Data. To enable Insights on an event data store, you must specify the ARNs (or ID suffix of the ARNs) for the source event data store (EventDataStore) and the destination event data store (InsightsDestination). The source event data store logs management events and enables Insights. The destination event data store logs Insights events based upon the management event activity of the source event data store. The source and destination event data stores must belong to the same Amazon Web Services account.

To log Insights events for a trail, you must specify the name (TrailName) of the CloudTrail trail for which you want to change or add Insights selectors.

  • For Management events Insights: To log CloudTrail Insights on the API call rate, the trail or event data store must log write management events. To log CloudTrail Insights on the API error rate, the trail or event data store must log read or write management events.
  • For Data events Insights: To log CloudTrail Insights on the API call rate or API error rate, the trail must log read or write data events. Data events Insights are not supported on event data store.
To log CloudTrail Insights events on API call volume, the trail or event data store must log write management events. To log CloudTrail Insights events on API error rate, the trail or event data store must log read or write management events. You can call GetEventSelectors on a trail to check whether the trail logs management events. You can call GetEventDataStore on an event data store to check whether the event data store logs management events.

For more information, see Working with CloudTrail Insights in the CloudTrail User Guide.

May throw CloudTrailARNInvalidException. May throw InsufficientEncryptionPolicyException. May throw InsufficientS3BucketPolicyException. May throw InvalidHomeRegionException. May throw InvalidInsightSelectorsException. May throw InvalidParameterCombinationException. May throw InvalidParameterException. May throw InvalidTrailNameException. May throw KmsException. May throw NoManagementAccountSLRExistsException. May throw NotOrganizationMasterAccountException. May throw OperationNotPermittedException. May throw S3BucketDoesNotExistException. May throw ThrottlingException. May throw TrailNotFoundException. May throw UnsupportedOperationException.

Parameter insightSelectors : Contains the Insights types you want to log on a specific category of events on a trail or event data store. ApiCallRateInsight and ApiErrorRateInsight are valid Insight types.The EventCategory field can specify Management or Data events or both. For event data store, you can log Insights for management events only.

The ApiCallRateInsight Insights type analyzes write-only management API calls or read and write data API calls that are aggregated per minute against a baseline API call volume.

The ApiErrorRateInsight Insights type analyzes management and data API calls that result in error codes. The error is shown if the API call is unsuccessful.

Parameter eventDataStore : The ARN (or ID suffix of the ARN) of the source event data store for which you want to change or add Insights selectors. To enable Insights on an event data store, you must provide both the EventDataStore and InsightsDestination parameters.

You cannot use this parameter with the TrailName parameter.

Parameter insightsDestination : The ARN (or ID suffix of the ARN) of the destination event data store that logs Insights events. To enable Insights on an event data store, you must provide both the EventDataStore and InsightsDestination parameters.

You cannot use this parameter with the TrailName parameter.

Parameter trailName : The name of the CloudTrail trail for which you want to change or add Insights selectors.

You cannot use this parameter with the EventDataStore and InsightsDestination parameters.

Implementation

Future<PutInsightSelectorsResponse> putInsightSelectors({
  required List<InsightSelector> insightSelectors,
  String? eventDataStore,
  String? insightsDestination,
  String? trailName,
}) async {
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'CloudTrail_20131101.PutInsightSelectors'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'InsightSelectors': insightSelectors,
      if (eventDataStore != null) 'EventDataStore': eventDataStore,
      if (insightsDestination != null)
        'InsightsDestination': insightsDestination,
      if (trailName != null) 'TrailName': trailName,
    },
  );

  return PutInsightSelectorsResponse.fromJson(jsonResponse.body);
}