
software.amazon.awsconstructs.services.s3sqs.S3ToSqsProps Maven / Gradle / Ivy
package software.amazon.awsconstructs.services.s3sqs;
/**
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.54.0 (build b1b977a)", date = "2022-03-01T13:38:18.398Z")
@software.amazon.jsii.Jsii(module = software.amazon.awsconstructs.services.s3sqs.$Module.class, fqn = "@aws-solutions-constructs/aws-s3-sqs.S3ToSqsProps")
@software.amazon.jsii.Jsii.Proxy(S3ToSqsProps.Jsii$Proxy.class)
public interface S3ToSqsProps extends software.amazon.jsii.JsiiSerializable {
/**
* Optional user provided props to override the default props for the S3 Bucket.
*
* Default: - Default props are used
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.s3.BucketProps getBucketProps() {
return null;
}
/**
* Optional user provided properties for the dead letter queue.
*
* Default: - Default props are used
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.sqs.QueueProps getDeadLetterQueueProps() {
return null;
}
/**
* Whether to deploy a secondary queue to be used as a dead letter queue.
*
* Default: - true.
*/
default @org.jetbrains.annotations.Nullable java.lang.Boolean getDeployDeadLetterQueue() {
return null;
}
/**
* Use a KMS Key, either managed by this CDK app, or imported.
*
* If importing an encryption key, it must be specified in
* the encryptionKey property for this construct.
*
* Default: - true (encryption enabled, managed by this CDK app).
*/
default @org.jetbrains.annotations.Nullable java.lang.Boolean getEnableEncryptionWithCustomerManagedKey() {
return null;
}
/**
* Optional imported encryption key to encrypt the SQS queue.
*
* Default: - not specified.
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.kms.Key getEncryptionKey() {
return null;
}
/**
* Optional user provided props to override the default props for the encryption key.
*
* Default: - Default props are used.
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.kms.KeyProps getEncryptionKeyProps() {
return null;
}
/**
* Existing instance of S3 Bucket object, providing both this and `bucketProps` will cause an error.
*
* Default: - None
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.s3.Bucket getExistingBucketObj() {
return null;
}
/**
* Existing instance of SQS queue object, Providing both this and queueProps will cause an error.
*
* Default: - Default props are used
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.sqs.Queue getExistingQueueObj() {
return null;
}
/**
* Optional user provided props to override the default props for the S3 Logging Bucket.
*
* Default: - Default props are used
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.s3.BucketProps getLoggingBucketProps() {
return null;
}
/**
* Whether to turn on Access Logs for the S3 bucket with the associated storage costs.
*
* Enabling Access Logging is a best practice.
*
* Default: - true
*/
default @org.jetbrains.annotations.Nullable java.lang.Boolean getLogS3AccessLogs() {
return null;
}
/**
* The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
*
* Default: - required field if deployDeadLetterQueue=true.
*/
default @org.jetbrains.annotations.Nullable java.lang.Number getMaxReceiveCount() {
return null;
}
/**
* Optional user provided properties.
*
* Default: - Default props are used
*/
default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.sqs.QueueProps getQueueProps() {
return null;
}
/**
* S3 object key filter rules to determine which objects trigger this event.
*
* Default: - If not specified no filter rules will be applied.
*/
default @org.jetbrains.annotations.Nullable java.util.List getS3EventFilters() {
return null;
}
/**
* The S3 event types that will trigger the notification.
*
* Default: - If not specified the s3.EventType.OBJECT_CREATED event will trigger the notification.
*/
default @org.jetbrains.annotations.Nullable java.util.List getS3EventTypes() {
return null;
}
/**
* @return a {@link Builder} of {@link S3ToSqsProps}
*/
static Builder builder() {
return new Builder();
}
/**
* A builder for {@link S3ToSqsProps}
*/
public static final class Builder implements software.amazon.jsii.Builder {
software.amazon.awscdk.services.s3.BucketProps bucketProps;
software.amazon.awscdk.services.sqs.QueueProps deadLetterQueueProps;
java.lang.Boolean deployDeadLetterQueue;
java.lang.Boolean enableEncryptionWithCustomerManagedKey;
software.amazon.awscdk.services.kms.Key encryptionKey;
software.amazon.awscdk.services.kms.KeyProps encryptionKeyProps;
software.amazon.awscdk.services.s3.Bucket existingBucketObj;
software.amazon.awscdk.services.sqs.Queue existingQueueObj;
software.amazon.awscdk.services.s3.BucketProps loggingBucketProps;
java.lang.Boolean logS3AccessLogs;
java.lang.Number maxReceiveCount;
software.amazon.awscdk.services.sqs.QueueProps queueProps;
java.util.List s3EventFilters;
java.util.List s3EventTypes;
/**
* Sets the value of {@link S3ToSqsProps#getBucketProps}
* @param bucketProps Optional user provided props to override the default props for the S3 Bucket.
* @return {@code this}
*/
public Builder bucketProps(software.amazon.awscdk.services.s3.BucketProps bucketProps) {
this.bucketProps = bucketProps;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getDeadLetterQueueProps}
* @param deadLetterQueueProps Optional user provided properties for the dead letter queue.
* @return {@code this}
*/
public Builder deadLetterQueueProps(software.amazon.awscdk.services.sqs.QueueProps deadLetterQueueProps) {
this.deadLetterQueueProps = deadLetterQueueProps;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getDeployDeadLetterQueue}
* @param deployDeadLetterQueue Whether to deploy a secondary queue to be used as a dead letter queue.
* @return {@code this}
*/
public Builder deployDeadLetterQueue(java.lang.Boolean deployDeadLetterQueue) {
this.deployDeadLetterQueue = deployDeadLetterQueue;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getEnableEncryptionWithCustomerManagedKey}
* @param enableEncryptionWithCustomerManagedKey Use a KMS Key, either managed by this CDK app, or imported.
* If importing an encryption key, it must be specified in
* the encryptionKey property for this construct.
* @return {@code this}
*/
public Builder enableEncryptionWithCustomerManagedKey(java.lang.Boolean enableEncryptionWithCustomerManagedKey) {
this.enableEncryptionWithCustomerManagedKey = enableEncryptionWithCustomerManagedKey;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getEncryptionKey}
* @param encryptionKey Optional imported encryption key to encrypt the SQS queue.
* @return {@code this}
*/
public Builder encryptionKey(software.amazon.awscdk.services.kms.Key encryptionKey) {
this.encryptionKey = encryptionKey;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getEncryptionKeyProps}
* @param encryptionKeyProps Optional user provided props to override the default props for the encryption key.
* @return {@code this}
*/
public Builder encryptionKeyProps(software.amazon.awscdk.services.kms.KeyProps encryptionKeyProps) {
this.encryptionKeyProps = encryptionKeyProps;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getExistingBucketObj}
* @param existingBucketObj Existing instance of S3 Bucket object, providing both this and `bucketProps` will cause an error.
* @return {@code this}
*/
public Builder existingBucketObj(software.amazon.awscdk.services.s3.Bucket existingBucketObj) {
this.existingBucketObj = existingBucketObj;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getExistingQueueObj}
* @param existingQueueObj Existing instance of SQS queue object, Providing both this and queueProps will cause an error.
* @return {@code this}
*/
public Builder existingQueueObj(software.amazon.awscdk.services.sqs.Queue existingQueueObj) {
this.existingQueueObj = existingQueueObj;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getLoggingBucketProps}
* @param loggingBucketProps Optional user provided props to override the default props for the S3 Logging Bucket.
* @return {@code this}
*/
public Builder loggingBucketProps(software.amazon.awscdk.services.s3.BucketProps loggingBucketProps) {
this.loggingBucketProps = loggingBucketProps;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getLogS3AccessLogs}
* @param logS3AccessLogs Whether to turn on Access Logs for the S3 bucket with the associated storage costs.
* Enabling Access Logging is a best practice.
* @return {@code this}
*/
public Builder logS3AccessLogs(java.lang.Boolean logS3AccessLogs) {
this.logS3AccessLogs = logS3AccessLogs;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getMaxReceiveCount}
* @param maxReceiveCount The number of times a message can be unsuccessfully dequeued before being moved to the dead-letter queue.
* @return {@code this}
*/
public Builder maxReceiveCount(java.lang.Number maxReceiveCount) {
this.maxReceiveCount = maxReceiveCount;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getQueueProps}
* @param queueProps Optional user provided properties.
* @return {@code this}
*/
public Builder queueProps(software.amazon.awscdk.services.sqs.QueueProps queueProps) {
this.queueProps = queueProps;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getS3EventFilters}
* @param s3EventFilters S3 object key filter rules to determine which objects trigger this event.
* @return {@code this}
*/
@SuppressWarnings("unchecked")
public Builder s3EventFilters(java.util.List extends software.amazon.awscdk.services.s3.NotificationKeyFilter> s3EventFilters) {
this.s3EventFilters = (java.util.List)s3EventFilters;
return this;
}
/**
* Sets the value of {@link S3ToSqsProps#getS3EventTypes}
* @param s3EventTypes The S3 event types that will trigger the notification.
* @return {@code this}
*/
@SuppressWarnings("unchecked")
public Builder s3EventTypes(java.util.List extends software.amazon.awscdk.services.s3.EventType> s3EventTypes) {
this.s3EventTypes = (java.util.List)s3EventTypes;
return this;
}
/**
* Builds the configured instance.
* @return a new instance of {@link S3ToSqsProps}
* @throws NullPointerException if any required attribute was not provided
*/
@Override
public S3ToSqsProps build() {
return new Jsii$Proxy(this);
}
}
/**
* An implementation for {@link S3ToSqsProps}
*/
@software.amazon.jsii.Internal
final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements S3ToSqsProps {
private final software.amazon.awscdk.services.s3.BucketProps bucketProps;
private final software.amazon.awscdk.services.sqs.QueueProps deadLetterQueueProps;
private final java.lang.Boolean deployDeadLetterQueue;
private final java.lang.Boolean enableEncryptionWithCustomerManagedKey;
private final software.amazon.awscdk.services.kms.Key encryptionKey;
private final software.amazon.awscdk.services.kms.KeyProps encryptionKeyProps;
private final software.amazon.awscdk.services.s3.Bucket existingBucketObj;
private final software.amazon.awscdk.services.sqs.Queue existingQueueObj;
private final software.amazon.awscdk.services.s3.BucketProps loggingBucketProps;
private final java.lang.Boolean logS3AccessLogs;
private final java.lang.Number maxReceiveCount;
private final software.amazon.awscdk.services.sqs.QueueProps queueProps;
private final java.util.List s3EventFilters;
private final java.util.List s3EventTypes;
/**
* 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.bucketProps = software.amazon.jsii.Kernel.get(this, "bucketProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.BucketProps.class));
this.deadLetterQueueProps = software.amazon.jsii.Kernel.get(this, "deadLetterQueueProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.sqs.QueueProps.class));
this.deployDeadLetterQueue = software.amazon.jsii.Kernel.get(this, "deployDeadLetterQueue", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.enableEncryptionWithCustomerManagedKey = software.amazon.jsii.Kernel.get(this, "enableEncryptionWithCustomerManagedKey", 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.Key.class));
this.encryptionKeyProps = software.amazon.jsii.Kernel.get(this, "encryptionKeyProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.kms.KeyProps.class));
this.existingBucketObj = software.amazon.jsii.Kernel.get(this, "existingBucketObj", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.Bucket.class));
this.existingQueueObj = software.amazon.jsii.Kernel.get(this, "existingQueueObj", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.sqs.Queue.class));
this.loggingBucketProps = software.amazon.jsii.Kernel.get(this, "loggingBucketProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.BucketProps.class));
this.logS3AccessLogs = software.amazon.jsii.Kernel.get(this, "logS3AccessLogs", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class));
this.maxReceiveCount = software.amazon.jsii.Kernel.get(this, "maxReceiveCount", software.amazon.jsii.NativeType.forClass(java.lang.Number.class));
this.queueProps = software.amazon.jsii.Kernel.get(this, "queueProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.sqs.QueueProps.class));
this.s3EventFilters = software.amazon.jsii.Kernel.get(this, "s3EventFilters", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.NotificationKeyFilter.class)));
this.s3EventTypes = software.amazon.jsii.Kernel.get(this, "s3EventTypes", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.EventType.class)));
}
/**
* Constructor that initializes the object based on literal property values passed by the {@link Builder}.
*/
@SuppressWarnings("unchecked")
protected Jsii$Proxy(final Builder builder) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
this.bucketProps = builder.bucketProps;
this.deadLetterQueueProps = builder.deadLetterQueueProps;
this.deployDeadLetterQueue = builder.deployDeadLetterQueue;
this.enableEncryptionWithCustomerManagedKey = builder.enableEncryptionWithCustomerManagedKey;
this.encryptionKey = builder.encryptionKey;
this.encryptionKeyProps = builder.encryptionKeyProps;
this.existingBucketObj = builder.existingBucketObj;
this.existingQueueObj = builder.existingQueueObj;
this.loggingBucketProps = builder.loggingBucketProps;
this.logS3AccessLogs = builder.logS3AccessLogs;
this.maxReceiveCount = builder.maxReceiveCount;
this.queueProps = builder.queueProps;
this.s3EventFilters = (java.util.List)builder.s3EventFilters;
this.s3EventTypes = (java.util.List)builder.s3EventTypes;
}
@Override
public final software.amazon.awscdk.services.s3.BucketProps getBucketProps() {
return this.bucketProps;
}
@Override
public final software.amazon.awscdk.services.sqs.QueueProps getDeadLetterQueueProps() {
return this.deadLetterQueueProps;
}
@Override
public final java.lang.Boolean getDeployDeadLetterQueue() {
return this.deployDeadLetterQueue;
}
@Override
public final java.lang.Boolean getEnableEncryptionWithCustomerManagedKey() {
return this.enableEncryptionWithCustomerManagedKey;
}
@Override
public final software.amazon.awscdk.services.kms.Key getEncryptionKey() {
return this.encryptionKey;
}
@Override
public final software.amazon.awscdk.services.kms.KeyProps getEncryptionKeyProps() {
return this.encryptionKeyProps;
}
@Override
public final software.amazon.awscdk.services.s3.Bucket getExistingBucketObj() {
return this.existingBucketObj;
}
@Override
public final software.amazon.awscdk.services.sqs.Queue getExistingQueueObj() {
return this.existingQueueObj;
}
@Override
public final software.amazon.awscdk.services.s3.BucketProps getLoggingBucketProps() {
return this.loggingBucketProps;
}
@Override
public final java.lang.Boolean getLogS3AccessLogs() {
return this.logS3AccessLogs;
}
@Override
public final java.lang.Number getMaxReceiveCount() {
return this.maxReceiveCount;
}
@Override
public final software.amazon.awscdk.services.sqs.QueueProps getQueueProps() {
return this.queueProps;
}
@Override
public final java.util.List getS3EventFilters() {
return this.s3EventFilters;
}
@Override
public final java.util.List getS3EventTypes() {
return this.s3EventTypes;
}
@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.getBucketProps() != null) {
data.set("bucketProps", om.valueToTree(this.getBucketProps()));
}
if (this.getDeadLetterQueueProps() != null) {
data.set("deadLetterQueueProps", om.valueToTree(this.getDeadLetterQueueProps()));
}
if (this.getDeployDeadLetterQueue() != null) {
data.set("deployDeadLetterQueue", om.valueToTree(this.getDeployDeadLetterQueue()));
}
if (this.getEnableEncryptionWithCustomerManagedKey() != null) {
data.set("enableEncryptionWithCustomerManagedKey", om.valueToTree(this.getEnableEncryptionWithCustomerManagedKey()));
}
if (this.getEncryptionKey() != null) {
data.set("encryptionKey", om.valueToTree(this.getEncryptionKey()));
}
if (this.getEncryptionKeyProps() != null) {
data.set("encryptionKeyProps", om.valueToTree(this.getEncryptionKeyProps()));
}
if (this.getExistingBucketObj() != null) {
data.set("existingBucketObj", om.valueToTree(this.getExistingBucketObj()));
}
if (this.getExistingQueueObj() != null) {
data.set("existingQueueObj", om.valueToTree(this.getExistingQueueObj()));
}
if (this.getLoggingBucketProps() != null) {
data.set("loggingBucketProps", om.valueToTree(this.getLoggingBucketProps()));
}
if (this.getLogS3AccessLogs() != null) {
data.set("logS3AccessLogs", om.valueToTree(this.getLogS3AccessLogs()));
}
if (this.getMaxReceiveCount() != null) {
data.set("maxReceiveCount", om.valueToTree(this.getMaxReceiveCount()));
}
if (this.getQueueProps() != null) {
data.set("queueProps", om.valueToTree(this.getQueueProps()));
}
if (this.getS3EventFilters() != null) {
data.set("s3EventFilters", om.valueToTree(this.getS3EventFilters()));
}
if (this.getS3EventTypes() != null) {
data.set("s3EventTypes", om.valueToTree(this.getS3EventTypes()));
}
final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
struct.set("fqn", om.valueToTree("@aws-solutions-constructs/aws-s3-sqs.S3ToSqsProps"));
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;
S3ToSqsProps.Jsii$Proxy that = (S3ToSqsProps.Jsii$Proxy) o;
if (this.bucketProps != null ? !this.bucketProps.equals(that.bucketProps) : that.bucketProps != null) return false;
if (this.deadLetterQueueProps != null ? !this.deadLetterQueueProps.equals(that.deadLetterQueueProps) : that.deadLetterQueueProps != null) return false;
if (this.deployDeadLetterQueue != null ? !this.deployDeadLetterQueue.equals(that.deployDeadLetterQueue) : that.deployDeadLetterQueue != null) return false;
if (this.enableEncryptionWithCustomerManagedKey != null ? !this.enableEncryptionWithCustomerManagedKey.equals(that.enableEncryptionWithCustomerManagedKey) : that.enableEncryptionWithCustomerManagedKey != null) return false;
if (this.encryptionKey != null ? !this.encryptionKey.equals(that.encryptionKey) : that.encryptionKey != null) return false;
if (this.encryptionKeyProps != null ? !this.encryptionKeyProps.equals(that.encryptionKeyProps) : that.encryptionKeyProps != null) return false;
if (this.existingBucketObj != null ? !this.existingBucketObj.equals(that.existingBucketObj) : that.existingBucketObj != null) return false;
if (this.existingQueueObj != null ? !this.existingQueueObj.equals(that.existingQueueObj) : that.existingQueueObj != null) return false;
if (this.loggingBucketProps != null ? !this.loggingBucketProps.equals(that.loggingBucketProps) : that.loggingBucketProps != null) return false;
if (this.logS3AccessLogs != null ? !this.logS3AccessLogs.equals(that.logS3AccessLogs) : that.logS3AccessLogs != null) return false;
if (this.maxReceiveCount != null ? !this.maxReceiveCount.equals(that.maxReceiveCount) : that.maxReceiveCount != null) return false;
if (this.queueProps != null ? !this.queueProps.equals(that.queueProps) : that.queueProps != null) return false;
if (this.s3EventFilters != null ? !this.s3EventFilters.equals(that.s3EventFilters) : that.s3EventFilters != null) return false;
return this.s3EventTypes != null ? this.s3EventTypes.equals(that.s3EventTypes) : that.s3EventTypes == null;
}
@Override
public final int hashCode() {
int result = this.bucketProps != null ? this.bucketProps.hashCode() : 0;
result = 31 * result + (this.deadLetterQueueProps != null ? this.deadLetterQueueProps.hashCode() : 0);
result = 31 * result + (this.deployDeadLetterQueue != null ? this.deployDeadLetterQueue.hashCode() : 0);
result = 31 * result + (this.enableEncryptionWithCustomerManagedKey != null ? this.enableEncryptionWithCustomerManagedKey.hashCode() : 0);
result = 31 * result + (this.encryptionKey != null ? this.encryptionKey.hashCode() : 0);
result = 31 * result + (this.encryptionKeyProps != null ? this.encryptionKeyProps.hashCode() : 0);
result = 31 * result + (this.existingBucketObj != null ? this.existingBucketObj.hashCode() : 0);
result = 31 * result + (this.existingQueueObj != null ? this.existingQueueObj.hashCode() : 0);
result = 31 * result + (this.loggingBucketProps != null ? this.loggingBucketProps.hashCode() : 0);
result = 31 * result + (this.logS3AccessLogs != null ? this.logS3AccessLogs.hashCode() : 0);
result = 31 * result + (this.maxReceiveCount != null ? this.maxReceiveCount.hashCode() : 0);
result = 31 * result + (this.queueProps != null ? this.queueProps.hashCode() : 0);
result = 31 * result + (this.s3EventFilters != null ? this.s3EventFilters.hashCode() : 0);
result = 31 * result + (this.s3EventTypes != null ? this.s3EventTypes.hashCode() : 0);
return result;
}
}
}