All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.github.randyridgley.cdk.datalake.constructs.DataLakeProperties Maven / Gradle / Ivy

There is a newer version: 0.0.64
Show newest version
package io.github.randyridgley.cdk.datalake.constructs;

/**
 */
@javax.annotation.Generated(value = "jsii-pacmak/1.58.0 (build f8ba112)", date = "2022-05-10T19:23:44.603Z")
@software.amazon.jsii.Jsii(module = io.github.randyridgley.cdk.datalake.constructs.$Module.class, fqn = "@randyridgley/cdk-datalake-constructs.DataLakeProperties")
@software.amazon.jsii.Jsii.Proxy(DataLakeProperties.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public interface DataLakeProperties extends software.amazon.jsii.JsiiSerializable {

    /**
     * The Type of DataLake this instance is.
     * 

* This can be a DATA_PRODUCT only, CENTRAL_CATALOG, CONSUMER, or DATA_PRODUCT_AND_CATALOG type. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @org.jetbrains.annotations.NotNull io.github.randyridgley.cdk.datalake.constructs.LakeKind getLakeKind(); /** * The name of the DataLake. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @org.jetbrains.annotations.NotNull java.lang.String getName(); /** * The Stage the DataLake will be deployed. */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @org.jetbrains.annotations.NotNull io.github.randyridgley.cdk.datalake.constructs.Stage getStageName(); /** * Create default Athena workgroup for querying data lake resources. *

* Default: - false */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable java.lang.Boolean getCreateAthenaWorkgroup() { return null; } /** * Create default glue database for the data lake. *

* Default: false */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable java.lang.Boolean getCreateDefaultDatabse() { return null; } /** * Cross account AWS account IDs. *

* Default: - No cross account ids *

* @see https://aws.amazon.com/premiumsupport/knowledge-center/glue-data-catalog-cross-account-access/ */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties getCrossAccountAccess() { return null; } /** * Data Lake Admin role. *

* Default: - Admin role created based on best practices *

* @see https://docs.aws.amazon.com/lake-formation/latest/dg/permissions-reference.html */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.iam.Role getDatalakeAdminRole() { return null; } /** * Data Lake Database Creator role. *

* Default: - Database creator role created based on best practices *

* @see https://docs.aws.amazon.com/lake-formation/latest/dg/permissions-reference.html */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.iam.Role getDatalakeCreatorRole() { return null; } /** * The List of DataProducts for this account. *

* Default: - No data products */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable java.util.List getDataProducts() { return null; } /** * Security group to attach to Glue jobs. *

* Default: - No security group *

* @see https://docs.aws.amazon.com/glue/latest/dg/setup-vpc-for-glue-access.html */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.SecurityGroup getGlueSecurityGroup() { return null; } /** */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.s3.BucketProps getLogBucketProps() { return null; } /** * List of Lake Formation TBAC policy tags. *

* Default: - No tags *

* @see https://docs.aws.amazon.com/lake-formation/latest/dg/TBAC-section.html */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable java.util.Map getPolicyTags() { return null; } /** * VPC for Glue jobs. *

* Default: - No vpc */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) default @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.Vpc getVpc() { return null; } /** * @return a {@link Builder} of {@link DataLakeProperties} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) static Builder builder() { return new Builder(); } /** * A builder for {@link DataLakeProperties} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public static final class Builder implements software.amazon.jsii.Builder { io.github.randyridgley.cdk.datalake.constructs.LakeKind lakeKind; java.lang.String name; io.github.randyridgley.cdk.datalake.constructs.Stage stageName; java.lang.Boolean createAthenaWorkgroup; java.lang.Boolean createDefaultDatabse; io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties crossAccountAccess; software.amazon.awscdk.services.iam.Role datalakeAdminRole; software.amazon.awscdk.services.iam.Role datalakeCreatorRole; java.util.List dataProducts; software.amazon.awscdk.services.ec2.SecurityGroup glueSecurityGroup; software.amazon.awscdk.services.s3.BucketProps logBucketProps; java.util.Map policyTags; software.amazon.awscdk.services.ec2.Vpc vpc; /** * Sets the value of {@link DataLakeProperties#getLakeKind} * @param lakeKind The Type of DataLake this instance is. This parameter is required. * This can be a DATA_PRODUCT only, CENTRAL_CATALOG, CONSUMER, or DATA_PRODUCT_AND_CATALOG type. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder lakeKind(io.github.randyridgley.cdk.datalake.constructs.LakeKind lakeKind) { this.lakeKind = lakeKind; return this; } /** * Sets the value of {@link DataLakeProperties#getName} * @param name The name of the DataLake. This parameter is required. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder name(java.lang.String name) { this.name = name; return this; } /** * Sets the value of {@link DataLakeProperties#getStageName} * @param stageName The Stage the DataLake will be deployed. This parameter is required. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder stageName(io.github.randyridgley.cdk.datalake.constructs.Stage stageName) { this.stageName = stageName; return this; } /** * Sets the value of {@link DataLakeProperties#getCreateAthenaWorkgroup} * @param createAthenaWorkgroup Create default Athena workgroup for querying data lake resources. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder createAthenaWorkgroup(java.lang.Boolean createAthenaWorkgroup) { this.createAthenaWorkgroup = createAthenaWorkgroup; return this; } /** * Sets the value of {@link DataLakeProperties#getCreateDefaultDatabse} * @param createDefaultDatabse Create default glue database for the data lake. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder createDefaultDatabse(java.lang.Boolean createDefaultDatabse) { this.createDefaultDatabse = createDefaultDatabse; return this; } /** * Sets the value of {@link DataLakeProperties#getCrossAccountAccess} * @param crossAccountAccess Cross account AWS account IDs. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder crossAccountAccess(io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties crossAccountAccess) { this.crossAccountAccess = crossAccountAccess; return this; } /** * Sets the value of {@link DataLakeProperties#getDatalakeAdminRole} * @param datalakeAdminRole Data Lake Admin role. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder datalakeAdminRole(software.amazon.awscdk.services.iam.Role datalakeAdminRole) { this.datalakeAdminRole = datalakeAdminRole; return this; } /** * Sets the value of {@link DataLakeProperties#getDatalakeCreatorRole} * @param datalakeCreatorRole Data Lake Database Creator role. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder datalakeCreatorRole(software.amazon.awscdk.services.iam.Role datalakeCreatorRole) { this.datalakeCreatorRole = datalakeCreatorRole; return this; } /** * Sets the value of {@link DataLakeProperties#getDataProducts} * @param dataProducts The List of DataProducts for this account. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @SuppressWarnings("unchecked") public Builder dataProducts(java.util.List dataProducts) { this.dataProducts = (java.util.List)dataProducts; return this; } /** * Sets the value of {@link DataLakeProperties#getGlueSecurityGroup} * @param glueSecurityGroup Security group to attach to Glue jobs. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder glueSecurityGroup(software.amazon.awscdk.services.ec2.SecurityGroup glueSecurityGroup) { this.glueSecurityGroup = glueSecurityGroup; return this; } /** * Sets the value of {@link DataLakeProperties#getLogBucketProps} * @param logBucketProps the value to be set. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder logBucketProps(software.amazon.awscdk.services.s3.BucketProps logBucketProps) { this.logBucketProps = logBucketProps; return this; } /** * Sets the value of {@link DataLakeProperties#getPolicyTags} * @param policyTags List of Lake Formation TBAC policy tags. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder policyTags(java.util.Map policyTags) { this.policyTags = policyTags; return this; } /** * Sets the value of {@link DataLakeProperties#getVpc} * @param vpc VPC for Glue jobs. * @return {@code this} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) public Builder vpc(software.amazon.awscdk.services.ec2.Vpc vpc) { this.vpc = vpc; return this; } /** * Builds the configured instance. * @return a new instance of {@link DataLakeProperties} * @throws NullPointerException if any required attribute was not provided */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @Override public DataLakeProperties build() { return new Jsii$Proxy(this); } } /** * An implementation for {@link DataLakeProperties} */ @software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable) @software.amazon.jsii.Internal final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements DataLakeProperties { private final io.github.randyridgley.cdk.datalake.constructs.LakeKind lakeKind; private final java.lang.String name; private final io.github.randyridgley.cdk.datalake.constructs.Stage stageName; private final java.lang.Boolean createAthenaWorkgroup; private final java.lang.Boolean createDefaultDatabse; private final io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties crossAccountAccess; private final software.amazon.awscdk.services.iam.Role datalakeAdminRole; private final software.amazon.awscdk.services.iam.Role datalakeCreatorRole; private final java.util.List dataProducts; private final software.amazon.awscdk.services.ec2.SecurityGroup glueSecurityGroup; private final software.amazon.awscdk.services.s3.BucketProps logBucketProps; private final java.util.Map policyTags; private final software.amazon.awscdk.services.ec2.Vpc vpc; /** * 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.lakeKind = software.amazon.jsii.Kernel.get(this, "lakeKind", software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.LakeKind.class)); this.name = software.amazon.jsii.Kernel.get(this, "name", software.amazon.jsii.NativeType.forClass(java.lang.String.class)); this.stageName = software.amazon.jsii.Kernel.get(this, "stageName", software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.Stage.class)); this.createAthenaWorkgroup = software.amazon.jsii.Kernel.get(this, "createAthenaWorkgroup", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); this.createDefaultDatabse = software.amazon.jsii.Kernel.get(this, "createDefaultDatabse", software.amazon.jsii.NativeType.forClass(java.lang.Boolean.class)); this.crossAccountAccess = software.amazon.jsii.Kernel.get(this, "crossAccountAccess", software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties.class)); this.datalakeAdminRole = software.amazon.jsii.Kernel.get(this, "datalakeAdminRole", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.Role.class)); this.datalakeCreatorRole = software.amazon.jsii.Kernel.get(this, "datalakeCreatorRole", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.Role.class)); this.dataProducts = software.amazon.jsii.Kernel.get(this, "dataProducts", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.DataProduct.class))); this.glueSecurityGroup = software.amazon.jsii.Kernel.get(this, "glueSecurityGroup", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.SecurityGroup.class)); this.logBucketProps = software.amazon.jsii.Kernel.get(this, "logBucketProps", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.BucketProps.class)); this.policyTags = software.amazon.jsii.Kernel.get(this, "policyTags", software.amazon.jsii.NativeType.mapOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class))); this.vpc = software.amazon.jsii.Kernel.get(this, "vpc", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.Vpc.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.lakeKind = java.util.Objects.requireNonNull(builder.lakeKind, "lakeKind is required"); this.name = java.util.Objects.requireNonNull(builder.name, "name is required"); this.stageName = java.util.Objects.requireNonNull(builder.stageName, "stageName is required"); this.createAthenaWorkgroup = builder.createAthenaWorkgroup; this.createDefaultDatabse = builder.createDefaultDatabse; this.crossAccountAccess = builder.crossAccountAccess; this.datalakeAdminRole = builder.datalakeAdminRole; this.datalakeCreatorRole = builder.datalakeCreatorRole; this.dataProducts = (java.util.List)builder.dataProducts; this.glueSecurityGroup = builder.glueSecurityGroup; this.logBucketProps = builder.logBucketProps; this.policyTags = builder.policyTags; this.vpc = builder.vpc; } @Override public final io.github.randyridgley.cdk.datalake.constructs.LakeKind getLakeKind() { return this.lakeKind; } @Override public final java.lang.String getName() { return this.name; } @Override public final io.github.randyridgley.cdk.datalake.constructs.Stage getStageName() { return this.stageName; } @Override public final java.lang.Boolean getCreateAthenaWorkgroup() { return this.createAthenaWorkgroup; } @Override public final java.lang.Boolean getCreateDefaultDatabse() { return this.createDefaultDatabse; } @Override public final io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties getCrossAccountAccess() { return this.crossAccountAccess; } @Override public final software.amazon.awscdk.services.iam.Role getDatalakeAdminRole() { return this.datalakeAdminRole; } @Override public final software.amazon.awscdk.services.iam.Role getDatalakeCreatorRole() { return this.datalakeCreatorRole; } @Override public final java.util.List getDataProducts() { return this.dataProducts; } @Override public final software.amazon.awscdk.services.ec2.SecurityGroup getGlueSecurityGroup() { return this.glueSecurityGroup; } @Override public final software.amazon.awscdk.services.s3.BucketProps getLogBucketProps() { return this.logBucketProps; } @Override public final java.util.Map getPolicyTags() { return this.policyTags; } @Override public final software.amazon.awscdk.services.ec2.Vpc getVpc() { return this.vpc; } @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(); data.set("lakeKind", om.valueToTree(this.getLakeKind())); data.set("name", om.valueToTree(this.getName())); data.set("stageName", om.valueToTree(this.getStageName())); if (this.getCreateAthenaWorkgroup() != null) { data.set("createAthenaWorkgroup", om.valueToTree(this.getCreateAthenaWorkgroup())); } if (this.getCreateDefaultDatabse() != null) { data.set("createDefaultDatabse", om.valueToTree(this.getCreateDefaultDatabse())); } if (this.getCrossAccountAccess() != null) { data.set("crossAccountAccess", om.valueToTree(this.getCrossAccountAccess())); } if (this.getDatalakeAdminRole() != null) { data.set("datalakeAdminRole", om.valueToTree(this.getDatalakeAdminRole())); } if (this.getDatalakeCreatorRole() != null) { data.set("datalakeCreatorRole", om.valueToTree(this.getDatalakeCreatorRole())); } if (this.getDataProducts() != null) { data.set("dataProducts", om.valueToTree(this.getDataProducts())); } if (this.getGlueSecurityGroup() != null) { data.set("glueSecurityGroup", om.valueToTree(this.getGlueSecurityGroup())); } if (this.getLogBucketProps() != null) { data.set("logBucketProps", om.valueToTree(this.getLogBucketProps())); } if (this.getPolicyTags() != null) { data.set("policyTags", om.valueToTree(this.getPolicyTags())); } if (this.getVpc() != null) { data.set("vpc", om.valueToTree(this.getVpc())); } final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode(); struct.set("fqn", om.valueToTree("@randyridgley/cdk-datalake-constructs.DataLakeProperties")); 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; DataLakeProperties.Jsii$Proxy that = (DataLakeProperties.Jsii$Proxy) o; if (!lakeKind.equals(that.lakeKind)) return false; if (!name.equals(that.name)) return false; if (!stageName.equals(that.stageName)) return false; if (this.createAthenaWorkgroup != null ? !this.createAthenaWorkgroup.equals(that.createAthenaWorkgroup) : that.createAthenaWorkgroup != null) return false; if (this.createDefaultDatabse != null ? !this.createDefaultDatabse.equals(that.createDefaultDatabse) : that.createDefaultDatabse != null) return false; if (this.crossAccountAccess != null ? !this.crossAccountAccess.equals(that.crossAccountAccess) : that.crossAccountAccess != null) return false; if (this.datalakeAdminRole != null ? !this.datalakeAdminRole.equals(that.datalakeAdminRole) : that.datalakeAdminRole != null) return false; if (this.datalakeCreatorRole != null ? !this.datalakeCreatorRole.equals(that.datalakeCreatorRole) : that.datalakeCreatorRole != null) return false; if (this.dataProducts != null ? !this.dataProducts.equals(that.dataProducts) : that.dataProducts != null) return false; if (this.glueSecurityGroup != null ? !this.glueSecurityGroup.equals(that.glueSecurityGroup) : that.glueSecurityGroup != null) return false; if (this.logBucketProps != null ? !this.logBucketProps.equals(that.logBucketProps) : that.logBucketProps != null) return false; if (this.policyTags != null ? !this.policyTags.equals(that.policyTags) : that.policyTags != null) return false; return this.vpc != null ? this.vpc.equals(that.vpc) : that.vpc == null; } @Override public final int hashCode() { int result = this.lakeKind.hashCode(); result = 31 * result + (this.name.hashCode()); result = 31 * result + (this.stageName.hashCode()); result = 31 * result + (this.createAthenaWorkgroup != null ? this.createAthenaWorkgroup.hashCode() : 0); result = 31 * result + (this.createDefaultDatabse != null ? this.createDefaultDatabse.hashCode() : 0); result = 31 * result + (this.crossAccountAccess != null ? this.crossAccountAccess.hashCode() : 0); result = 31 * result + (this.datalakeAdminRole != null ? this.datalakeAdminRole.hashCode() : 0); result = 31 * result + (this.datalakeCreatorRole != null ? this.datalakeCreatorRole.hashCode() : 0); result = 31 * result + (this.dataProducts != null ? this.dataProducts.hashCode() : 0); result = 31 * result + (this.glueSecurityGroup != null ? this.glueSecurityGroup.hashCode() : 0); result = 31 * result + (this.logBucketProps != null ? this.logBucketProps.hashCode() : 0); result = 31 * result + (this.policyTags != null ? this.policyTags.hashCode() : 0); result = 31 * result + (this.vpc != null ? this.vpc.hashCode() : 0); return result; } } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy