io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioProps Maven / Gradle / Ivy
Show all versions of cdk-emrserverless-quickdemo-with-delta-lake Show documentation
package io.github.hsiehshujeng.cdk.emrserverless.quickdemo;
/**
* Options for the EMR Studio, mainly for EMR Serverless applications.
*/
@javax.annotation.Generated(value = "jsii-pacmak/1.103.1 (build bef2dea)", date = "2024-09-01T01:08:41.104Z")
@software.amazon.jsii.Jsii(module = io.github.hsiehshujeng.cdk.emrserverless.quickdemo.$Module.class, fqn = "cdk-emrserverless-with-delta-lake.EmrStudioProps")
@software.amazon.jsii.Jsii.Proxy(EmrStudioProps.Jsii$Proxy.class)
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public interface EmrStudioProps extends software.amazon.jsii.JsiiSerializable {
/**
* The custom construct as the workspace S3 bucket.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@org.jetbrains.annotations.NotNull io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket getWorkSpaceBucket();
/**
* Specifies whether the Studio authenticates users using AWS SSO or IAM.
*
* Default: - StudioAuthMode.AWS_IAM.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode getAuthMode() {
return null;
}
/**
* A detailed description of the Amazon EMR Studio.
*
* Default: - 'EMR Studio Quick Launch - by scott.hsieh'
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getDescription() {
return null;
}
/**
* The ID of the Amazon EMR Studio Engine security group.
*
* The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by VpcId.
*
* Default: - a security group created by `EmrStudioEngineSecurityGroup`.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getEngineSecurityGroupId() {
return null;
}
/**
* Options for which kind of identity will be associated with the Product of the Porfolio in AWS Service Catalog for EMR cluster templates.
*
* You can choose either an IAM group, IAM role, or IAM user. If you leave it empty, an IAM user named Administrator
with the AdministratorAccess
power needs to be created first.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps getServiceCatalogProps() {
return null;
}
/**
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getServiceRoleArn() {
return null;
}
/**
* A name for the service role of an EMR Studio.
*
* For valid values, see the RoleName parameter for the CreateRole action in the IAM API Reference.
*
* IMPORTANT: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
*
* If you specify a name, you must specify the CAPABILITY_NAMED_IAM value to acknowledge your template's capabilities. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates.
*
* Default: - 'emr-studio-service-role'
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getServiceRoleName() {
return null;
}
/**
* A descriptive name for the Amazon EMR Studio.
*
* Default: - 'emr-sutdio-quicklaunch'
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getStudioName() {
return null;
}
/**
* The subnet IDs for the EMR studio.
*
* You can select the subnets from the default VPC in your AWS account.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.util.List getSubnetIds() {
return null;
}
/**
* The custom user role for the EMR Studio when authentication is AWS SSO.
*
* Currently, if you choose to establish an EMR serverless application where the authentication mechanism used by the EMR Studio is AWS SSO, you need to create a user role by yourself and assign the role arn to this argument if AWS SSO is chosen as authentication for the EMR Studio;
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getUserRoleArn() {
return null;
}
/**
* Used by the EMR Studio.
*
* Default: - 'The default VPC will be used.'
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getVpcId() {
return null;
}
/**
* The ID of the security group used by the workspace.
*
* Default: - a security group created by `EmrStudioWorkspaceSecurityGroup`.
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
default @org.jetbrains.annotations.Nullable java.lang.String getWorkSpaceSecurityGroupId() {
return null;
}
/**
* @return a {@link Builder} of {@link EmrStudioProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
static Builder builder() {
return new Builder();
}
/**
* A builder for {@link EmrStudioProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public static final class Builder implements software.amazon.jsii.Builder {
io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket workSpaceBucket;
io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode authMode;
java.lang.String description;
java.lang.String engineSecurityGroupId;
io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps serviceCatalogProps;
java.lang.String serviceRoleArn;
java.lang.String serviceRoleName;
java.lang.String studioName;
java.util.List subnetIds;
java.lang.String userRoleArn;
java.lang.String vpcId;
java.lang.String workSpaceSecurityGroupId;
/**
* Sets the value of {@link EmrStudioProps#getWorkSpaceBucket}
* @param workSpaceBucket The custom construct as the workspace S3 bucket. This parameter is required.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder workSpaceBucket(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket workSpaceBucket) {
this.workSpaceBucket = workSpaceBucket;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getAuthMode}
* @param authMode Specifies whether the Studio authenticates users using AWS SSO or IAM.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder authMode(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode authMode) {
this.authMode = authMode;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getDescription}
* @param description A detailed description of the Amazon EMR Studio.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder description(java.lang.String description) {
this.description = description;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getEngineSecurityGroupId}
* @param engineSecurityGroupId The ID of the Amazon EMR Studio Engine security group.
* The Engine security group allows inbound network traffic from the Workspace security group, and it must be in the same VPC specified by VpcId.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder engineSecurityGroupId(java.lang.String engineSecurityGroupId) {
this.engineSecurityGroupId = engineSecurityGroupId;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getServiceCatalogProps}
* @param serviceCatalogProps Options for which kind of identity will be associated with the Product of the Porfolio in AWS Service Catalog for EMR cluster templates.
* You can choose either an IAM group, IAM role, or IAM user. If you leave it empty, an IAM user named Administrator
with the AdministratorAccess
power needs to be created first.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder serviceCatalogProps(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps serviceCatalogProps) {
this.serviceCatalogProps = serviceCatalogProps;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getServiceRoleArn}
* @param serviceRoleArn the value to be set.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder serviceRoleArn(java.lang.String serviceRoleArn) {
this.serviceRoleArn = serviceRoleArn;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getServiceRoleName}
* @param serviceRoleName A name for the service role of an EMR Studio.
* For valid values, see the RoleName parameter for the CreateRole action in the IAM API Reference.
*
* IMPORTANT: If you specify a name, you cannot perform updates that require replacement of this resource. You can perform updates that require no or some interruption. If you must replace the resource, specify a new name.
*
* If you specify a name, you must specify the CAPABILITY_NAMED_IAM value to acknowledge your template's capabilities. For more information, see Acknowledging IAM Resources in AWS CloudFormation Templates.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder serviceRoleName(java.lang.String serviceRoleName) {
this.serviceRoleName = serviceRoleName;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getStudioName}
* @param studioName A descriptive name for the Amazon EMR Studio.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder studioName(java.lang.String studioName) {
this.studioName = studioName;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getSubnetIds}
* @param subnetIds The subnet IDs for the EMR studio.
* You can select the subnets from the default VPC in your AWS account.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder subnetIds(java.util.List subnetIds) {
this.subnetIds = subnetIds;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getUserRoleArn}
* @param userRoleArn The custom user role for the EMR Studio when authentication is AWS SSO.
* Currently, if you choose to establish an EMR serverless application where the authentication mechanism used by the EMR Studio is AWS SSO, you need to create a user role by yourself and assign the role arn to this argument if AWS SSO is chosen as authentication for the EMR Studio;
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder userRoleArn(java.lang.String userRoleArn) {
this.userRoleArn = userRoleArn;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getVpcId}
* @param vpcId Used by the EMR Studio.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder vpcId(java.lang.String vpcId) {
this.vpcId = vpcId;
return this;
}
/**
* Sets the value of {@link EmrStudioProps#getWorkSpaceSecurityGroupId}
* @param workSpaceSecurityGroupId The ID of the security group used by the workspace.
* @return {@code this}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
public Builder workSpaceSecurityGroupId(java.lang.String workSpaceSecurityGroupId) {
this.workSpaceSecurityGroupId = workSpaceSecurityGroupId;
return this;
}
/**
* Builds the configured instance.
* @return a new instance of {@link EmrStudioProps}
* @throws NullPointerException if any required attribute was not provided
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@Override
public EmrStudioProps build() {
return new Jsii$Proxy(this);
}
}
/**
* An implementation for {@link EmrStudioProps}
*/
@software.amazon.jsii.Stability(software.amazon.jsii.Stability.Level.Stable)
@software.amazon.jsii.Internal
final class Jsii$Proxy extends software.amazon.jsii.JsiiObject implements EmrStudioProps {
private final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket workSpaceBucket;
private final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode authMode;
private final java.lang.String description;
private final java.lang.String engineSecurityGroupId;
private final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps serviceCatalogProps;
private final java.lang.String serviceRoleArn;
private final java.lang.String serviceRoleName;
private final java.lang.String studioName;
private final java.util.List subnetIds;
private final java.lang.String userRoleArn;
private final java.lang.String vpcId;
private final java.lang.String workSpaceSecurityGroupId;
/**
* 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.workSpaceBucket = software.amazon.jsii.Kernel.get(this, "workSpaceBucket", software.amazon.jsii.NativeType.forClass(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket.class));
this.authMode = software.amazon.jsii.Kernel.get(this, "authMode", software.amazon.jsii.NativeType.forClass(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode.class));
this.description = software.amazon.jsii.Kernel.get(this, "description", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.engineSecurityGroupId = software.amazon.jsii.Kernel.get(this, "engineSecurityGroupId", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.serviceCatalogProps = software.amazon.jsii.Kernel.get(this, "serviceCatalogProps", software.amazon.jsii.NativeType.forClass(io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps.class));
this.serviceRoleArn = software.amazon.jsii.Kernel.get(this, "serviceRoleArn", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.serviceRoleName = software.amazon.jsii.Kernel.get(this, "serviceRoleName", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.studioName = software.amazon.jsii.Kernel.get(this, "studioName", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.subnetIds = software.amazon.jsii.Kernel.get(this, "subnetIds", software.amazon.jsii.NativeType.listOf(software.amazon.jsii.NativeType.forClass(java.lang.String.class)));
this.userRoleArn = software.amazon.jsii.Kernel.get(this, "userRoleArn", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.vpcId = software.amazon.jsii.Kernel.get(this, "vpcId", software.amazon.jsii.NativeType.forClass(java.lang.String.class));
this.workSpaceSecurityGroupId = software.amazon.jsii.Kernel.get(this, "workSpaceSecurityGroupId", 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.workSpaceBucket = java.util.Objects.requireNonNull(builder.workSpaceBucket, "workSpaceBucket is required");
this.authMode = builder.authMode;
this.description = builder.description;
this.engineSecurityGroupId = builder.engineSecurityGroupId;
this.serviceCatalogProps = builder.serviceCatalogProps;
this.serviceRoleArn = builder.serviceRoleArn;
this.serviceRoleName = builder.serviceRoleName;
this.studioName = builder.studioName;
this.subnetIds = builder.subnetIds;
this.userRoleArn = builder.userRoleArn;
this.vpcId = builder.vpcId;
this.workSpaceSecurityGroupId = builder.workSpaceSecurityGroupId;
}
@Override
public final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.WorkSpaceBucket getWorkSpaceBucket() {
return this.workSpaceBucket;
}
@Override
public final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.StudioAuthMode getAuthMode() {
return this.authMode;
}
@Override
public final java.lang.String getDescription() {
return this.description;
}
@Override
public final java.lang.String getEngineSecurityGroupId() {
return this.engineSecurityGroupId;
}
@Override
public final io.github.hsiehshujeng.cdk.emrserverless.quickdemo.EmrStudioDeveloperStackProps getServiceCatalogProps() {
return this.serviceCatalogProps;
}
@Override
public final java.lang.String getServiceRoleArn() {
return this.serviceRoleArn;
}
@Override
public final java.lang.String getServiceRoleName() {
return this.serviceRoleName;
}
@Override
public final java.lang.String getStudioName() {
return this.studioName;
}
@Override
public final java.util.List getSubnetIds() {
return this.subnetIds;
}
@Override
public final java.lang.String getUserRoleArn() {
return this.userRoleArn;
}
@Override
public final java.lang.String getVpcId() {
return this.vpcId;
}
@Override
public final java.lang.String getWorkSpaceSecurityGroupId() {
return this.workSpaceSecurityGroupId;
}
@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("workSpaceBucket", om.valueToTree(this.getWorkSpaceBucket()));
if (this.getAuthMode() != null) {
data.set("authMode", om.valueToTree(this.getAuthMode()));
}
if (this.getDescription() != null) {
data.set("description", om.valueToTree(this.getDescription()));
}
if (this.getEngineSecurityGroupId() != null) {
data.set("engineSecurityGroupId", om.valueToTree(this.getEngineSecurityGroupId()));
}
if (this.getServiceCatalogProps() != null) {
data.set("serviceCatalogProps", om.valueToTree(this.getServiceCatalogProps()));
}
if (this.getServiceRoleArn() != null) {
data.set("serviceRoleArn", om.valueToTree(this.getServiceRoleArn()));
}
if (this.getServiceRoleName() != null) {
data.set("serviceRoleName", om.valueToTree(this.getServiceRoleName()));
}
if (this.getStudioName() != null) {
data.set("studioName", om.valueToTree(this.getStudioName()));
}
if (this.getSubnetIds() != null) {
data.set("subnetIds", om.valueToTree(this.getSubnetIds()));
}
if (this.getUserRoleArn() != null) {
data.set("userRoleArn", om.valueToTree(this.getUserRoleArn()));
}
if (this.getVpcId() != null) {
data.set("vpcId", om.valueToTree(this.getVpcId()));
}
if (this.getWorkSpaceSecurityGroupId() != null) {
data.set("workSpaceSecurityGroupId", om.valueToTree(this.getWorkSpaceSecurityGroupId()));
}
final com.fasterxml.jackson.databind.node.ObjectNode struct = com.fasterxml.jackson.databind.node.JsonNodeFactory.instance.objectNode();
struct.set("fqn", om.valueToTree("cdk-emrserverless-with-delta-lake.EmrStudioProps"));
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;
EmrStudioProps.Jsii$Proxy that = (EmrStudioProps.Jsii$Proxy) o;
if (!workSpaceBucket.equals(that.workSpaceBucket)) return false;
if (this.authMode != null ? !this.authMode.equals(that.authMode) : that.authMode != null) return false;
if (this.description != null ? !this.description.equals(that.description) : that.description != null) return false;
if (this.engineSecurityGroupId != null ? !this.engineSecurityGroupId.equals(that.engineSecurityGroupId) : that.engineSecurityGroupId != null) return false;
if (this.serviceCatalogProps != null ? !this.serviceCatalogProps.equals(that.serviceCatalogProps) : that.serviceCatalogProps != null) return false;
if (this.serviceRoleArn != null ? !this.serviceRoleArn.equals(that.serviceRoleArn) : that.serviceRoleArn != null) return false;
if (this.serviceRoleName != null ? !this.serviceRoleName.equals(that.serviceRoleName) : that.serviceRoleName != null) return false;
if (this.studioName != null ? !this.studioName.equals(that.studioName) : that.studioName != null) return false;
if (this.subnetIds != null ? !this.subnetIds.equals(that.subnetIds) : that.subnetIds != null) return false;
if (this.userRoleArn != null ? !this.userRoleArn.equals(that.userRoleArn) : that.userRoleArn != null) return false;
if (this.vpcId != null ? !this.vpcId.equals(that.vpcId) : that.vpcId != null) return false;
return this.workSpaceSecurityGroupId != null ? this.workSpaceSecurityGroupId.equals(that.workSpaceSecurityGroupId) : that.workSpaceSecurityGroupId == null;
}
@Override
public final int hashCode() {
int result = this.workSpaceBucket.hashCode();
result = 31 * result + (this.authMode != null ? this.authMode.hashCode() : 0);
result = 31 * result + (this.description != null ? this.description.hashCode() : 0);
result = 31 * result + (this.engineSecurityGroupId != null ? this.engineSecurityGroupId.hashCode() : 0);
result = 31 * result + (this.serviceCatalogProps != null ? this.serviceCatalogProps.hashCode() : 0);
result = 31 * result + (this.serviceRoleArn != null ? this.serviceRoleArn.hashCode() : 0);
result = 31 * result + (this.serviceRoleName != null ? this.serviceRoleName.hashCode() : 0);
result = 31 * result + (this.studioName != null ? this.studioName.hashCode() : 0);
result = 31 * result + (this.subnetIds != null ? this.subnetIds.hashCode() : 0);
result = 31 * result + (this.userRoleArn != null ? this.userRoleArn.hashCode() : 0);
result = 31 * result + (this.vpcId != null ? this.vpcId.hashCode() : 0);
result = 31 * result + (this.workSpaceSecurityGroupId != null ? this.workSpaceSecurityGroupId.hashCode() : 0);
return result;
}
}
}