
software.amazon.awscdk.services.cloudtrail.TrailProps Maven / Gradle / Ivy
package software.amazon.awscdk.services.cloudtrail;
/**
* Properties for an AWS CloudTrail trail.
*
* Example:
*
*
* Trail trail = Trail.Builder.create(this, "CloudTrail")
* // ...
* .managementEvents(ReadWriteType.READ_ONLY)
* .build();
*
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.74.0 (build 6d08790)", date = "2023-03-08T16:00:27.869Z")
@software.amazon.jsii.Jsii(module = software.amazon.awscdk.services.cloudtrail.$Module.class, fqn = "@aws-cdk/aws-cloudtrail.TrailProps")
@software.amazon.jsii.Jsii.Proxy(TrailProps.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public interface TrailProps extends software.amazon.jsii.JsiiSerializable {
/**
* The Amazon S3 bucket.
*
* Default: - if not supplied a bucket will be created with all the correct permisions
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.s3.IBucket getBucket() {
return null;
}
/**
* Log Group to which CloudTrail to push logs to.
*
* Ignored if sendToCloudWatchLogs is set to false.
*
* Default: - a new log group is created and used.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.logs.ILogGroup getCloudWatchLogGroup() {
return null;
}
/**
* How long to retain logs in CloudWatchLogs.
*
* Ignored if sendToCloudWatchLogs is false or if cloudWatchLogGroup is set.
*
* Default: logs.RetentionDays.ONE_YEAR
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.logs.RetentionDays getCloudWatchLogsRetention() {
return null;
}
/**
* To determine whether a log file was modified, deleted, or unchanged after CloudTrail delivered it, you can use CloudTrail log file integrity validation.
*
* This feature is built using industry standard algorithms: SHA-256 for hashing and SHA-256 with RSA for digital signing.
* This makes it computationally infeasible to modify, delete or forge CloudTrail log files without detection.
* You can use the AWS CLI to validate the files in the location where CloudTrail delivered them.
*
* Default: true
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getEnableFileValidation() {
return null;
}
/**
* The AWS Key Management Service (AWS KMS) key ID that you want to use to encrypt CloudTrail logs.
*
* Default: - No encryption.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.kms.IKey getEncryptionKey() {
return null;
}
/**
* For most services, events are recorded in the region where the action occurred.
*
* For global services such as AWS Identity and Access Management (IAM), AWS STS, Amazon CloudFront, and Route 53,
* events are delivered to any trail that includes global services, and are logged as occurring in US East (N. Virginia) Region.
*
* Default: true
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getIncludeGlobalServiceEvents() {
return null;
}
/**
* Whether or not this trail delivers log files from multiple regions to a single S3 bucket for a single account.
*
* Default: true
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getIsMultiRegionTrail() {
return null;
}
/**
* (deprecated) The AWS Key Management Service (AWS KMS) key ID that you want to use to encrypt CloudTrail logs.
*
* Default: - No encryption.
*
* @deprecated - use encryptionKey instead.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.kms.IKey getKmsKey() {
return null;
}
/**
* When an event occurs in your account, CloudTrail evaluates whether the event matches the settings for your trails.
*
* Only events that match your trail settings are delivered to your Amazon S3 bucket and Amazon CloudWatch Logs log group.
*
* This method sets the management configuration for this trail.
*
* Management events provide insight into management operations that are performed on resources in your AWS account.
* These are also known as control plane operations.
* Management events can also include non-API events that occur in your account.
* For example, when a user logs in to your account, CloudTrail logs the ConsoleLogin event.
*
* Default: ReadWriteType.ALL
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.cloudtrail.ReadWriteType getManagementEvents() {
return null;
}
/**
* An Amazon S3 object key prefix that precedes the name of all log files.
*
* Default: - No prefix.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getS3KeyPrefix() {
return null;
}
/**
* If CloudTrail pushes logs to CloudWatch Logs in addition to S3.
*
* Disabled for cost out of the box.
*
* Default: false
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.Boolean getSendToCloudWatchLogs() {
return null;
}
/**
* SNS topic that is notified when new log files are published.
*
* Default: - No notifications.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.sns.ITopic getSnsTopic() {
return null;
}
/**
* The name of the trail.
*
* We recommend customers do not set an explicit name.
*
* Default: - AWS CloudFormation generated name.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getTrailName() {
return null;
}
/**
* @return a {@link Builder} of {@link TrailProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
static Builder builder() {
return new Builder();
}
/**
* A builder for {@link TrailProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static final class Builder implements software.amazon.jsii.Builder {
software.amazon.awscdk.services.s3.IBucket bucket;
software.amazon.awscdk.services.logs.ILogGroup cloudWatchLogGroup;
software.amazon.awscdk.services.logs.RetentionDays cloudWatchLogsRetention;
java.lang.Boolean enableFileValidation;
software.amazon.awscdk.services.kms.IKey encryptionKey;
java.lang.Boolean includeGlobalServiceEvents;
java.lang.Boolean isMultiRegionTrail;
software.amazon.awscdk.services.kms.IKey kmsKey;
software.amazon.awscdk.services.cloudtrail.ReadWriteType managementEvents;
java.lang.String s3KeyPrefix;
java.lang.Boolean sendToCloudWatchLogs;
software.amazon.awscdk.services.sns.ITopic snsTopic;
java.lang.String trailName;
/**
* Sets the value of {@link TrailProps#getBucket}
* @param bucket The Amazon S3 bucket.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder bucket(software.amazon.awscdk.services.s3.IBucket bucket) {
this.bucket = bucket;
return this;
}
/**
* Sets the value of {@link TrailProps#getCloudWatchLogGroup}
* @param cloudWatchLogGroup Log Group to which CloudTrail to push logs to.
* Ignored if sendToCloudWatchLogs is set to false.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder cloudWatchLogGroup(software.amazon.awscdk.services.logs.ILogGroup cloudWatchLogGroup) {
this.cloudWatchLogGroup = cloudWatchLogGroup;
return this;
}
/**
* Sets the value of {@link TrailProps#getCloudWatchLogsRetention}
* @param cloudWatchLogsRetention How long to retain logs in CloudWatchLogs.
* Ignored if sendToCloudWatchLogs is false or if cloudWatchLogGroup is set.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder cloudWatchLogsRetention(software.amazon.awscdk.services.logs.RetentionDays cloudWatchLogsRetention) {
this.cloudWatchLogsRetention = cloudWatchLogsRetention;
return this;
}
/**
* Sets the value of {@link TrailProps#getEnableFileValidation}
* @param enableFileValidation To determine whether a log file was modified, deleted, or unchanged after CloudTrail delivered it, you can use CloudTrail log file integrity validation.
* This feature is built using industry standard algorithms: SHA-256 for hashing and SHA-256 with RSA for digital signing.
* This makes it computationally infeasible to modify, delete or forge CloudTrail log files without detection.
* You can use the AWS CLI to validate the files in the location where CloudTrail delivered them.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder enableFileValidation(java.lang.Boolean enableFileValidation) {
this.enableFileValidation = enableFileValidation;
return this;
}
/**
* Sets the value of {@link TrailProps#getEncryptionKey}
* @param encryptionKey The AWS Key Management Service (AWS KMS) key ID that you want to use to encrypt CloudTrail logs.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder encryptionKey(software.amazon.awscdk.services.kms.IKey encryptionKey) {
this.encryptionKey = encryptionKey;
return this;
}
/**
* Sets the value of {@link TrailProps#getIncludeGlobalServiceEvents}
* @param includeGlobalServiceEvents For most services, events are recorded in the region where the action occurred.
* For global services such as AWS Identity and Access Management (IAM), AWS STS, Amazon CloudFront, and Route 53,
* events are delivered to any trail that includes global services, and are logged as occurring in US East (N. Virginia) Region.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder includeGlobalServiceEvents(java.lang.Boolean includeGlobalServiceEvents) {
this.includeGlobalServiceEvents = includeGlobalServiceEvents;
return this;
}
/**
* Sets the value of {@link TrailProps#getIsMultiRegionTrail}
* @param isMultiRegionTrail Whether or not this trail delivers log files from multiple regions to a single S3 bucket for a single account.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder isMultiRegionTrail(java.lang.Boolean isMultiRegionTrail) {
this.isMultiRegionTrail = isMultiRegionTrail;
return this;
}
/**
* Sets the value of {@link TrailProps#getKmsKey}
* @param kmsKey The AWS Key Management Service (AWS KMS) key ID that you want to use to encrypt CloudTrail logs.
* @return {@code this}
* @deprecated - use encryptionKey instead.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Deprecated)
@Deprecated
public Builder kmsKey(software.amazon.awscdk.services.kms.IKey kmsKey) {
this.kmsKey = kmsKey;
return this;
}
/**
* Sets the value of {@link TrailProps#getManagementEvents}
* @param managementEvents When an event occurs in your account, CloudTrail evaluates whether the event matches the settings for your trails.
* Only events that match your trail settings are delivered to your Amazon S3 bucket and Amazon CloudWatch Logs log group.
*
* This method sets the management configuration for this trail.
*
* Management events provide insight into management operations that are performed on resources in your AWS account.
* These are also known as control plane operations.
* Management events can also include non-API events that occur in your account.
* For example, when a user logs in to your account, CloudTrail logs the ConsoleLogin event.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder managementEvents(software.amazon.awscdk.services.cloudtrail.ReadWriteType managementEvents) {
this.managementEvents = managementEvents;
return this;
}
/**
* Sets the value of {@link TrailProps#getS3KeyPrefix}
* @param s3KeyPrefix An Amazon S3 object key prefix that precedes the name of all log files.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder s3KeyPrefix(java.lang.String s3KeyPrefix) {
this.s3KeyPrefix = s3KeyPrefix;
return this;
}
/**
* Sets the value of {@link TrailProps#getSendToCloudWatchLogs}
* @param sendToCloudWatchLogs If CloudTrail pushes logs to CloudWatch Logs in addition to S3.
* Disabled for cost out of the box.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder sendToCloudWatchLogs(java.lang.Boolean sendToCloudWatchLogs) {
this.sendToCloudWatchLogs = sendToCloudWatchLogs;
return this;
}
/**
* Sets the value of {@link TrailProps#getSnsTopic}
* @param snsTopic SNS topic that is notified when new log files are published.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder snsTopic(software.amazon.awscdk.services.sns.ITopic snsTopic) {
this.snsTopic = snsTopic;
return this;
}
/**
* Sets the value of {@link TrailProps#getTrailName}
* @param trailName The name of the trail.
* We recommend customers do not set an explicit name.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder trailName(java.lang.String trailName) {
this.trailName = trailName;
return this;
}
/**
* Builds the configured instance.
* @return a new instance of {@link TrailProps}
* @throws NullPointerException if any required attribute was not provided
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@Override
public TrailProps build() {
return new Jsii$Proxy(this);
}
}
/**
* An implementation for {@link TrailProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@software.amazon.jsii.Internal
final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements TrailProps {
private final software.amazon.awscdk.services.s3.IBucket bucket;
private final software.amazon.awscdk.services.logs.ILogGroup cloudWatchLogGroup;
private final software.amazon.awscdk.services.logs.RetentionDays cloudWatchLogsRetention;
private final java.lang.Boolean enableFileValidation;
private final software.amazon.awscdk.services.kms.IKey encryptionKey;
private final java.lang.Boolean includeGlobalServiceEvents;
private final java.lang.Boolean isMultiRegionTrail;
private final software.amazon.awscdk.services.kms.IKey kmsKey;
private final software.amazon.awscdk.services.cloudtrail.ReadWriteType managementEvents;
private final java.lang.String s3KeyPrefix;
private final java.lang.Boolean sendToCloudWatchLogs;
private final software.amazon.awscdk.services.sns.ITopic snsTopic;
private final java.lang.String trailName;
/**
* Constructor that initializes the object based on values retrieved from the JsiiObject.
* @param objRef Reference to the JSII managed object.
*/
protected Jsii$Proxy(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
this.bucket = software.amazon.jsii.Kernel.get(this, "bucket", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.IBucket.class));
this.cloudWatchLogGroup = software.amazon.jsii.Kernel.get(this, "cloudWatchLogGroup", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.logs.ILogGroup.class));
this.cloudWatchLogsRetention = software.amazon.jsii.Kernel.get(this, "cloudWatchLogsRetention", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.logs.RetentionDays.class));
this.enableFileValidation = software.amazon.jsii.Kernel.get(this, "enableFileValidation", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.encryptionKey = software.amazon.jsii.Kernel.get(this, "encryptionKey", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.kms.IKey.class));
this.includeGlobalServiceEvents = software.amazon.jsii.Kernel.get(this, "includeGlobalServiceEvents", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.isMultiRegionTrail = software.amazon.jsii.Kernel.get(this, "isMultiRegionTrail", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.kmsKey = software.amazon.jsii.Kernel.get(this, "kmsKey", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.kms.IKey.class));
this.managementEvents = software.amazon.jsii.Kernel.get(this, "managementEvents", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.cloudtrail.ReadWriteType.class));
this.s3KeyPrefix = software.amazon.jsii.Kernel.get(this, "s3KeyPrefix", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.sendToCloudWatchLogs = software.amazon.jsii.Kernel.get(this, "sendToCloudWatchLogs", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.snsTopic = software.amazon.jsii.Kernel.get(this, "snsTopic", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.sns.ITopic.class));
this.trailName = software.amazon.jsii.Kernel.get(this, "trailName", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
}
/**
* Constructor that initializes the object based on literal property values passed by the {@link Builder}.
*/
protected Jsii$Proxy(final Builder builder) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
this.bucket = builder.bucket;
this.cloudWatchLogGroup = builder.cloudWatchLogGroup;
this.cloudWatchLogsRetention = builder.cloudWatchLogsRetention;
this.enableFileValidation = builder.enableFileValidation;
this.encryptionKey = builder.encryptionKey;
this.includeGlobalServiceEvents = builder.includeGlobalServiceEvents;
this.isMultiRegionTrail = builder.isMultiRegionTrail;
this.kmsKey = builder.kmsKey;
this.managementEvents = builder.managementEvents;
this.s3KeyPrefix = builder.s3KeyPrefix;
this.sendToCloudWatchLogs = builder.sendToCloudWatchLogs;
this.snsTopic = builder.snsTopic;
this.trailName = builder.trailName;
}
@Override
public final software.amazon.awscdk.services.s3.IBucket getBucket() {
return this.bucket;
}
@Override
public final software.amazon.awscdk.services.logs.ILogGroup getCloudWatchLogGroup() {
return this.cloudWatchLogGroup;
}
@Override
public final software.amazon.awscdk.services.logs.RetentionDays getCloudWatchLogsRetention() {
return this.cloudWatchLogsRetention;
}
@Override
public final java.lang.Boolean getEnableFileValidation() {
return this.enableFileValidation;
}
@Override
public final software.amazon.awscdk.services.kms.IKey getEncryptionKey() {
return this.encryptionKey;
}
@Override
public final java.lang.Boolean getIncludeGlobalServiceEvents() {
return this.includeGlobalServiceEvents;
}
@Override
public final java.lang.Boolean getIsMultiRegionTrail() {
return this.isMultiRegionTrail;
}
@Override
public final software.amazon.awscdk.services.kms.IKey getKmsKey() {
return this.kmsKey;
}
@Override
public final software.amazon.awscdk.services.cloudtrail.ReadWriteType getManagementEvents() {
return this.managementEvents;
}
@Override
public final java.lang.String getS3KeyPrefix() {
return this.s3KeyPrefix;
}
@Override
public final java.lang.Boolean getSendToCloudWatchLogs() {
return this.sendToCloudWatchLogs;
}
@Override
public final software.amazon.awscdk.services.sns.ITopic getSnsTopic() {
return this.snsTopic;
}
@Override
public final java.lang.String getTrailName() {
return this.trailName;
}
@Override
@software.amazon.jsii.Internal
public com.fasterxml.jackson.databind.JsonNode $jsii$toJson() {
final com.fasterxml.jackson.databind.ObjectMapper om = software.amazon.jsii.JsiiObjectMapper.INSTANCE;
final com.fasterxml.jackson.databind.node.ObjectNode data = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
if (this.getBucket() != null) {
data.set("bucket", om.valueToTree(this.getBucket()));
}
if (this.getCloudWatchLogGroup() != null) {
data.set("cloudWatchLogGroup", om.valueToTree(this.getCloudWatchLogGroup()));
}
if (this.getCloudWatchLogsRetention() != null) {
data.set("cloudWatchLogsRetention", om.valueToTree(this.getCloudWatchLogsRetention()));
}
if (this.getEnableFileValidation() != null) {
data.set("enableFileValidation", om.valueToTree(this.getEnableFileValidation()));
}
if (this.getEncryptionKey() != null) {
data.set("encryptionKey", om.valueToTree(this.getEncryptionKey()));
}
if (this.getIncludeGlobalServiceEvents() != null) {
data.set("includeGlobalServiceEvents", om.valueToTree(this.getIncludeGlobalServiceEvents()));
}
if (this.getIsMultiRegionTrail() != null) {
data.set("isMultiRegionTrail", om.valueToTree(this.getIsMultiRegionTrail()));
}
if (this.getKmsKey() != null) {
data.set("kmsKey", om.valueToTree(this.getKmsKey()));
}
if (this.getManagementEvents() != null) {
data.set("managementEvents", om.valueToTree(this.getManagementEvents()));
}
if (this.getS3KeyPrefix() != null) {
data.set("s3KeyPrefix", om.valueToTree(this.getS3KeyPrefix()));
}
if (this.getSendToCloudWatchLogs() != null) {
data.set("sendToCloudWatchLogs", om.valueToTree(this.getSendToCloudWatchLogs()));
}
if (this.getSnsTopic() != null) {
data.set("snsTopic", om.valueToTree(this.getSnsTopic()));
}
if (this.getTrailName() != null) {
data.set("trailName", om.valueToTree(this.getTrailName()));
}
final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
struct.set("fqn", om.valueToTree("@aws-cdk/aws-cloudtrail.TrailProps"));
struct.set("data", data);
final com.fasterxml.jackson.databind.node.ObjectNode obj = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
obj.set("$jsii.struct", struct);
return obj;
}
@Override
public final boolean equals(final Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
TrailProps.Jsii$Proxy that = (TrailProps.Jsii$Proxy) o;
if (this.bucket != null ? !this.bucket.equals(that.bucket) : that.bucket != null) return false;
if (this.cloudWatchLogGroup != null ? !this.cloudWatchLogGroup.equals(that.cloudWatchLogGroup) : that.cloudWatchLogGroup != null) return false;
if (this.cloudWatchLogsRetention != null ? !this.cloudWatchLogsRetention.equals(that.cloudWatchLogsRetention) : that.cloudWatchLogsRetention != null) return false;
if (this.enableFileValidation != null ? !this.enableFileValidation.equals(that.enableFileValidation) : that.enableFileValidation != null) return false;
if (this.encryptionKey != null ? !this.encryptionKey.equals(that.encryptionKey) : that.encryptionKey != null) return false;
if (this.includeGlobalServiceEvents != null ? !this.includeGlobalServiceEvents.equals(that.includeGlobalServiceEvents) : that.includeGlobalServiceEvents != null) return false;
if (this.isMultiRegionTrail != null ? !this.isMultiRegionTrail.equals(that.isMultiRegionTrail) : that.isMultiRegionTrail != null) return false;
if (this.kmsKey != null ? !this.kmsKey.equals(that.kmsKey) : that.kmsKey != null) return false;
if (this.managementEvents != null ? !this.managementEvents.equals(that.managementEvents) : that.managementEvents != null) return false;
if (this.s3KeyPrefix != null ? !this.s3KeyPrefix.equals(that.s3KeyPrefix) : that.s3KeyPrefix != null) return false;
if (this.sendToCloudWatchLogs != null ? !this.sendToCloudWatchLogs.equals(that.sendToCloudWatchLogs) : that.sendToCloudWatchLogs != null) return false;
if (this.snsTopic != null ? !this.snsTopic.equals(that.snsTopic) : that.snsTopic != null) return false;
return this.trailName != null ? this.trailName.equals(that.trailName) : that.trailName == null;
}
@Override
public final int hashCode() {
int result = this.bucket != null ? this.bucket.hashCode() : 0;
result = 31 * result + (this.cloudWatchLogGroup != null ? this.cloudWatchLogGroup.hashCode() : 0);
result = 31 * result + (this.cloudWatchLogsRetention != null ? this.cloudWatchLogsRetention.hashCode() : 0);
result = 31 * result + (this.enableFileValidation != null ? this.enableFileValidation.hashCode() : 0);
result = 31 * result + (this.encryptionKey != null ? this.encryptionKey.hashCode() : 0);
result = 31 * result + (this.includeGlobalServiceEvents != null ? this.includeGlobalServiceEvents.hashCode() : 0);
result = 31 * result + (this.isMultiRegionTrail != null ? this.isMultiRegionTrail.hashCode() : 0);
result = 31 * result + (this.kmsKey != null ? this.kmsKey.hashCode() : 0);
result = 31 * result + (this.managementEvents != null ? this.managementEvents.hashCode() : 0);
result = 31 * result + (this.s3KeyPrefix != null ? this.s3KeyPrefix.hashCode() : 0);
result = 31 * result + (this.sendToCloudWatchLogs != null ? this.sendToCloudWatchLogs.hashCode() : 0);
result = 31 * result + (this.snsTopic != null ? this.snsTopic.hashCode() : 0);
result = 31 * result + (this.trailName != null ? this.trailName.hashCode() : 0);
return result;
}
}
}