io.github.randyridgley.cdk.datalake.constructs.DataLakeProperties Maven / Gradle / Ivy
Show all versions of cdk-datalake-constructs Show documentation
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 extends io.github.randyridgley.cdk.datalake.constructs.DataProduct> 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;
}
}
}