/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace CloudTrail { namespace Model { /** *

Use event selectors to further specify the management and data event settings * for your trail. By default, trails created without specific event selectors will * be configured to log all read and write management events, and no data events. * When an event occurs in your account, CloudTrail evaluates the event selector * for all trails. For each trail, if the event matches any event selector, the * trail processes and logs the event. If the event doesn't match any event * selector, the trail doesn't log the event.

You can configure up to five * event selectors for a trail.

You cannot apply both event selectors and * advanced event selectors to a trail.

See Also:

AWS * API Reference

*/ class EventSelector { public: AWS_CLOUDTRAIL_API EventSelector(); AWS_CLOUDTRAIL_API EventSelector(Aws::Utils::Json::JsonView jsonValue); AWS_CLOUDTRAIL_API EventSelector& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_CLOUDTRAIL_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline const ReadWriteType& GetReadWriteType() const{ return m_readWriteType; } /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline bool ReadWriteTypeHasBeenSet() const { return m_readWriteTypeHasBeenSet; } /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline void SetReadWriteType(const ReadWriteType& value) { m_readWriteTypeHasBeenSet = true; m_readWriteType = value; } /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline void SetReadWriteType(ReadWriteType&& value) { m_readWriteTypeHasBeenSet = true; m_readWriteType = std::move(value); } /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline EventSelector& WithReadWriteType(const ReadWriteType& value) { SetReadWriteType(value); return *this;} /** *

Specify if you want your trail to log read-only events, write-only events, or * all. For example, the EC2 GetConsoleOutput is a read-only API * operation and RunInstances is a write-only API operation.

* By default, the value is All.

*/ inline EventSelector& WithReadWriteType(ReadWriteType&& value) { SetReadWriteType(std::move(value)); return *this;} /** *

Specify if you want your event selector to include management events for your * trail.

For more information, see Management * Events in the CloudTrail User Guide.

By default, the value is * true.

The first copy of management events is free. You are * charged for additional copies of management events that you are logging on any * subsequent trail in the same Region. For more information about CloudTrail * pricing, see CloudTrail * Pricing.

*/ inline bool GetIncludeManagementEvents() const{ return m_includeManagementEvents; } /** *

Specify if you want your event selector to include management events for your * trail.

For more information, see Management * Events in the CloudTrail User Guide.

By default, the value is * true.

The first copy of management events is free. You are * charged for additional copies of management events that you are logging on any * subsequent trail in the same Region. For more information about CloudTrail * pricing, see CloudTrail * Pricing.

*/ inline bool IncludeManagementEventsHasBeenSet() const { return m_includeManagementEventsHasBeenSet; } /** *

Specify if you want your event selector to include management events for your * trail.

For more information, see Management * Events in the CloudTrail User Guide.

By default, the value is * true.

The first copy of management events is free. You are * charged for additional copies of management events that you are logging on any * subsequent trail in the same Region. For more information about CloudTrail * pricing, see CloudTrail * Pricing.

*/ inline void SetIncludeManagementEvents(bool value) { m_includeManagementEventsHasBeenSet = true; m_includeManagementEvents = value; } /** *

Specify if you want your event selector to include management events for your * trail.

For more information, see Management * Events in the CloudTrail User Guide.

By default, the value is * true.

The first copy of management events is free. You are * charged for additional copies of management events that you are logging on any * subsequent trail in the same Region. For more information about CloudTrail * pricing, see CloudTrail * Pricing.

*/ inline EventSelector& WithIncludeManagementEvents(bool value) { SetIncludeManagementEvents(value); return *this;} /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline const Aws::Vector& GetDataResources() const{ return m_dataResources; } /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline bool DataResourcesHasBeenSet() const { return m_dataResourcesHasBeenSet; } /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline void SetDataResources(const Aws::Vector& value) { m_dataResourcesHasBeenSet = true; m_dataResources = value; } /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline void SetDataResources(Aws::Vector&& value) { m_dataResourcesHasBeenSet = true; m_dataResources = std::move(value); } /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline EventSelector& WithDataResources(const Aws::Vector& value) { SetDataResources(value); return *this;} /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline EventSelector& WithDataResources(Aws::Vector&& value) { SetDataResources(std::move(value)); return *this;} /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline EventSelector& AddDataResources(const DataResource& value) { m_dataResourcesHasBeenSet = true; m_dataResources.push_back(value); return *this; } /** *

CloudTrail supports data event logging for Amazon S3 objects, Lambda * functions, and Amazon DynamoDB tables with basic event selectors. You can * specify up to 250 resources for an individual event selector, but the total * number of data resources cannot exceed 250 across all event selectors in a * trail. This limit does not apply if you configure resource logging for all data * events.

For more information, see Data * Events and Limits * in CloudTrail in the CloudTrail User Guide.

*/ inline EventSelector& AddDataResources(DataResource&& value) { m_dataResourcesHasBeenSet = true; m_dataResources.push_back(std::move(value)); return *this; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline const Aws::Vector& GetExcludeManagementEventSources() const{ return m_excludeManagementEventSources; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline bool ExcludeManagementEventSourcesHasBeenSet() const { return m_excludeManagementEventSourcesHasBeenSet; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline void SetExcludeManagementEventSources(const Aws::Vector& value) { m_excludeManagementEventSourcesHasBeenSet = true; m_excludeManagementEventSources = value; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline void SetExcludeManagementEventSources(Aws::Vector&& value) { m_excludeManagementEventSourcesHasBeenSet = true; m_excludeManagementEventSources = std::move(value); } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline EventSelector& WithExcludeManagementEventSources(const Aws::Vector& value) { SetExcludeManagementEventSources(value); return *this;} /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline EventSelector& WithExcludeManagementEventSources(Aws::Vector&& value) { SetExcludeManagementEventSources(std::move(value)); return *this;} /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline EventSelector& AddExcludeManagementEventSources(const Aws::String& value) { m_excludeManagementEventSourcesHasBeenSet = true; m_excludeManagementEventSources.push_back(value); return *this; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline EventSelector& AddExcludeManagementEventSources(Aws::String&& value) { m_excludeManagementEventSourcesHasBeenSet = true; m_excludeManagementEventSources.push_back(std::move(value)); return *this; } /** *

An optional list of service event sources from which you do not want * management events to be logged on your trail. In this release, the list can be * empty (disables the filter), or it can filter out Key Management Service or * Amazon RDS Data API events by containing kms.amazonaws.com or * rdsdata.amazonaws.com. By default, * ExcludeManagementEventSources is empty, and KMS and Amazon RDS Data * API events are logged to your trail. You can exclude management event sources * only in Regions that support the event source.

*/ inline EventSelector& AddExcludeManagementEventSources(const char* value) { m_excludeManagementEventSourcesHasBeenSet = true; m_excludeManagementEventSources.push_back(value); return *this; } private: ReadWriteType m_readWriteType; bool m_readWriteTypeHasBeenSet = false; bool m_includeManagementEvents; bool m_includeManagementEventsHasBeenSet = false; Aws::Vector m_dataResources; bool m_dataResourcesHasBeenSet = false; Aws::Vector m_excludeManagementEventSources; bool m_excludeManagementEventSourcesHasBeenSet = false; }; } // namespace Model } // namespace CloudTrail } // namespace Aws