in packages/constructs/L3/ai/sm-studio-domain-l3-construct/lib/sm-studio-domain-l3-construct.ts [217:283]
constructor(scope: Construct, id: string, props: SagemakerStudioDomainL3ConstructProps) {
super(scope, id, props);
this.props = props;
const resolvableDefaultExecutionRole = props.domain.defaultExecutionRole
? this.props.roleHelper.resolveRoleRefWithRefId(props.domain.defaultExecutionRole, 'ex-role')
: undefined;
const defaultExecutionRole = resolvableDefaultExecutionRole
? MdaaRole.fromRoleArn(this, 'ex-role', resolvableDefaultExecutionRole.arn())
: this.createDefaultExecutionRole();
const resolvableDeploymentRole = props.domain.domainBucket
? this.props.roleHelper.resolveRoleRefWithRefId(
props.domain.domainBucket.assetDeploymentRole,
`asset-deployment-role`,
)
: undefined;
const assetDeploymentRole = resolvableDeploymentRole
? MdaaRole.fromRoleArn(this, `asset-deployment-role`, resolvableDeploymentRole.arn())
: this.createAssetDeploymentRole();
this.kmsKey = props.domain.kmsKeyArn
? Key.fromKeyArn(this, 'kmsKey', props.domain.kmsKeyArn)
: this.createDomainEfsKmsKey(defaultExecutionRole, assetDeploymentRole);
const notebookSharingPrefix = props.domain.notebookSharingPrefix || 'sharing/';
const assetPrefix = props.domain.assetPrefix || 'lifecycle-assets';
const domainBucket: IBucket = props.domain.domainBucket
? Bucket.fromBucketName(this, 'existing-domain-bucket', props.domain.domainBucket.domainBucketName)
: this.createDomainBucket(
this.kmsKey,
defaultExecutionRole,
notebookSharingPrefix,
assetPrefix,
assetDeploymentRole,
);
this.securityGroup = props.domain.securityGroupId
? SecurityGroup.fromSecurityGroupId(this, `domain-sg`, props.domain.securityGroupId)
: this.createDomainSecurityGroup(
this.props.domain.vpcId,
this.props.domain.subnetIds,
this.props.domain.securityGroupIngress,
this.props.domain.securityGroupEgress,
);
this.domain = this.createDomain(
defaultExecutionRole,
this.securityGroup,
this.kmsKey,
domainBucket,
assetPrefix,
assetDeploymentRole,
props.domain.assetDeploymentMemoryLimitMB,
);
this.createBasicExecutionPolicy(this.domain.attrDomainId, defaultExecutionRole, this.kmsKey);
this.createSageMakerStudioUserProfiles(
defaultExecutionRole,
this.kmsKey,
domainBucket,
this.domain.attrDomainId,
notebookSharingPrefix,
);
}