io.github.randyridgley.cdk.datalake.constructs.DataLake Maven / Gradle / Ivy
Show all versions of cdk-datalake-constructs Show documentation
package io.github.randyridgley.cdk.datalake.constructs;
/**
* A CDK construct to create a DataLake.
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.58.0 (build f8ba112)", date = "2022-05-10T19:23:44.594Z")
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@software.amazon.jsii.Jsii(module = io.github.randyridgley.cdk.datalake.constructs.$Module.class, fqn = "@randyridgley/cdk-datalake-constructs.DataLake")
public class DataLake extends software.constructs.Construct {
protected DataLake(final software.amazon.jsii.JsiiObjectRef objRef) {
super(objRef);
}
protected DataLake(final software.amazon.jsii.JsiiObject.InitializationMode initializationMode) {
super(initializationMode);
}
/**
* @param scope This parameter is required.
* @param id This parameter is required.
* @param props This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public DataLake(final @org.jetbrains.annotations.NotNull software.constructs.Construct scope, final @org.jetbrains.annotations.NotNull java.lang.String id, final @org.jetbrains.annotations.NotNull io.github.randyridgley.cdk.datalake.constructs.DataLakeProperties props) {
super(software.amazon.jsii.JsiiObject.InitializationMode.JSII);
software.amazon.jsii.JsiiEngine.getInstance().createNewObject(this, new Object[] { java.util.Objects.requireNonNull(scope, "scope is required"), java.util.Objects.requireNonNull(id, "id is required"), java.util.Objects.requireNonNull(props, "props is required") });
}
/**
* @param consumerAccountIds This parameter is required.
* @param dataCatalogOwnerAccountId This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
protected void createCrossAccountGlueCatalogResourcePolicy(final @org.jetbrains.annotations.NotNull java.util.List consumerAccountIds, final @org.jetbrains.annotations.NotNull java.lang.String dataCatalogOwnerAccountId) {
software.amazon.jsii.Kernel.call(this, "createCrossAccountGlueCatalogResourcePolicy", software.amazon.jsii.NativeType.VOID, new Object[] { java.util.Objects.requireNonNull(consumerAccountIds, "consumerAccountIds is required"), java.util.Objects.requireNonNull(dataCatalogOwnerAccountId, "dataCatalogOwnerAccountId is required") });
}
/**
* @param stageName This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public void createDownloaderCustomResource(final @org.jetbrains.annotations.NotNull java.lang.String stageName) {
software.amazon.jsii.Kernel.call(this, "createDownloaderCustomResource", software.amazon.jsii.NativeType.VOID, new Object[] { java.util.Objects.requireNonNull(stageName, "stageName is required") });
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull java.util.Map getDatabases() {
return java.util.Collections.unmodifiableMap(software.amazon.jsii.Kernel.get(this, "databases", software.amazon.jsii.NativeType.mapOf(software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.glue.alpha.Database.class))));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull software.amazon.awscdk.services.iam.IRole getDatalakeAdminRole() {
return software.amazon.jsii.Kernel.get(this, "datalakeAdminRole", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.IRole.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull software.amazon.awscdk.services.iam.IRole getDatalakeDbCreatorRole() {
return software.amazon.jsii.Kernel.get(this, "datalakeDbCreatorRole", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.iam.IRole.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull io.github.randyridgley.cdk.datalake.constructs.LakeKind getLakeKind() {
return software.amazon.jsii.Kernel.get(this, "lakeKind", software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.LakeKind.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull software.amazon.awscdk.services.s3.Bucket getLogBucket() {
return software.amazon.jsii.Kernel.get(this, "logBucket", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.s3.Bucket.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.NotNull io.github.randyridgley.cdk.datalake.constructs.Stage getStageName() {
return software.amazon.jsii.Kernel.get(this, "stageName", software.amazon.jsii.NativeType.forClass(io.github.randyridgley.cdk.datalake.constructs.Stage.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.athena.CfnWorkGroup getAthenaWorkgroup() {
return software.amazon.jsii.Kernel.get(this, "athenaWorkgroup", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.athena.CfnWorkGroup.class));
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public @org.jetbrains.annotations.Nullable software.amazon.awscdk.services.ec2.Vpc getVpc() {
return software.amazon.jsii.Kernel.get(this, "vpc", software.amazon.jsii.NativeType.forClass(software.amazon.awscdk.services.ec2.Vpc.class));
}
/**
* A fluent builder for {@link io.github.randyridgley.cdk.datalake.constructs.DataLake}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static final class Builder implements software.amazon.jsii.Builder {
/**
* @return a new instance of {@link Builder}.
* @param scope This parameter is required.
* @param id This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static Builder create(final software.constructs.Construct scope, final java.lang.String id) {
return new Builder(scope, id);
}
private final software.constructs.Construct scope;
private final java.lang.String id;
private final io.github.randyridgley.cdk.datalake.constructs.DataLakeProperties.Builder props;
private Builder(final software.constructs.Construct scope, final java.lang.String id) {
this.scope = scope;
this.id = id;
this.props = new io.github.randyridgley.cdk.datalake.constructs.DataLakeProperties.Builder();
}
/**
* The Type of DataLake this instance is.
*
* This can be a DATA_PRODUCT only, CENTRAL_CATALOG, CONSUMER, or DATA_PRODUCT_AND_CATALOG type.
*
* @return {@code this}
* @param lakeKind The Type of DataLake this instance is. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder lakeKind(final io.github.randyridgley.cdk.datalake.constructs.LakeKind lakeKind) {
this.props.lakeKind(lakeKind);
return this;
}
/**
* The name of the DataLake.
*
* @return {@code this}
* @param name The name of the DataLake. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder name(final java.lang.String name) {
this.props.name(name);
return this;
}
/**
* The Stage the DataLake will be deployed.
*
* @return {@code this}
* @param stageName The Stage the DataLake will be deployed. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder stageName(final io.github.randyridgley.cdk.datalake.constructs.Stage stageName) {
this.props.stageName(stageName);
return this;
}
/**
* Create default Athena workgroup for querying data lake resources.
*
* Default: - false
*
* @return {@code this}
* @param createAthenaWorkgroup Create default Athena workgroup for querying data lake resources. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder createAthenaWorkgroup(final java.lang.Boolean createAthenaWorkgroup) {
this.props.createAthenaWorkgroup(createAthenaWorkgroup);
return this;
}
/**
* Create default glue database for the data lake.
*
* Default: false
*
* @return {@code this}
* @param createDefaultDatabse Create default glue database for the data lake. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder createDefaultDatabse(final java.lang.Boolean createDefaultDatabse) {
this.props.createDefaultDatabse(createDefaultDatabse);
return this;
}
/**
* Cross account AWS account IDs.
*
* Default: - No cross account ids
*
* @return {@code this}
* @see https://aws.amazon.com/premiumsupport/knowledge-center/glue-data-catalog-cross-account-access/
* @param crossAccountAccess Cross account AWS account IDs. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder crossAccountAccess(final io.github.randyridgley.cdk.datalake.constructs.CrossAccountProperties crossAccountAccess) {
this.props.crossAccountAccess(crossAccountAccess);
return this;
}
/**
* Data Lake Admin role.
*
* Default: - Admin role created based on best practices
*
* @return {@code this}
* @see https://docs.aws.amazon.com/lake-formation/latest/dg/permissions-reference.html
* @param datalakeAdminRole Data Lake Admin role. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder datalakeAdminRole(final software.amazon.awscdk.services.iam.Role datalakeAdminRole) {
this.props.datalakeAdminRole(datalakeAdminRole);
return this;
}
/**
* Data Lake Database Creator role.
*
* Default: - Database creator role created based on best practices
*
* @return {@code this}
* @see https://docs.aws.amazon.com/lake-formation/latest/dg/permissions-reference.html
* @param datalakeCreatorRole Data Lake Database Creator role. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder datalakeCreatorRole(final software.amazon.awscdk.services.iam.Role datalakeCreatorRole) {
this.props.datalakeCreatorRole(datalakeCreatorRole);
return this;
}
/**
* The List of DataProducts for this account.
*
* Default: - No data products
*
* @return {@code this}
* @param dataProducts The List of DataProducts for this account. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder dataProducts(final java.util.List extends io.github.randyridgley.cdk.datalake.constructs.DataProduct> dataProducts) {
this.props.dataProducts(dataProducts);
return this;
}
/**
* Security group to attach to Glue jobs.
*
* Default: - No security group
*
* @return {@code this}
* @see https://docs.aws.amazon.com/glue/latest/dg/setup-vpc-for-glue-access.html
* @param glueSecurityGroup Security group to attach to Glue jobs. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder glueSecurityGroup(final software.amazon.awscdk.services.ec2.SecurityGroup glueSecurityGroup) {
this.props.glueSecurityGroup(glueSecurityGroup);
return this;
}
/**
* @return {@code this}
* @param logBucketProps This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder logBucketProps(final software.amazon.awscdk.services.s3.BucketProps logBucketProps) {
this.props.logBucketProps(logBucketProps);
return this;
}
/**
* List of Lake Formation TBAC policy tags.
*
* Default: - No tags
*
* @return {@code this}
* @see https://docs.aws.amazon.com/lake-formation/latest/dg/TBAC-section.html
* @param policyTags List of Lake Formation TBAC policy tags. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder policyTags(final java.util.Map policyTags) {
this.props.policyTags(policyTags);
return this;
}
/**
* VPC for Glue jobs.
*
* Default: - No vpc
*
* @return {@code this}
* @param vpc VPC for Glue jobs. This parameter is required.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder vpc(final software.amazon.awscdk.services.ec2.Vpc vpc) {
this.props.vpc(vpc);
return this;
}
/**
* @returns a newly built instance of {@link io.github.randyridgley.cdk.datalake.constructs.DataLake}.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@Override
public io.github.randyridgley.cdk.datalake.constructs.DataLake build() {
return new io.github.randyridgley.cdk.datalake.constructs.DataLake(
this.scope,
this.id,
this.props.build()
);
}
}
}