/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the sagemaker-2017-07-24.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.SageMaker.Model
{
///
/// Container for the parameters to the CreateDomain operation.
/// Creates a Domain
used by Amazon SageMaker Studio. A domain consists of
/// an associated Amazon Elastic File System (EFS) volume, a list of authorized users,
/// and a variety of security, application, policy, and Amazon Virtual Private Cloud (VPC)
/// configurations. Users within a domain can share notebook files and other artifacts
/// with each other.
///
///
///
/// EFS storage
///
///
///
/// When a domain is created, an EFS volume is created for use by all of the users within
/// the domain. Each user receives a private home directory within the EFS volume for
/// notebooks, Git repositories, and data files.
///
///
///
/// SageMaker uses the Amazon Web Services Key Management Service (Amazon Web Services
/// KMS) to encrypt the EFS volume attached to the domain with an Amazon Web Services
/// managed key by default. For more control, you can specify a customer managed key.
/// For more information, see Protect
/// Data at Rest Using Encryption.
///
///
///
/// VPC configuration
///
///
///
/// All SageMaker Studio traffic between the domain and the EFS volume is through the
/// specified VPC and subnets. For other Studio traffic, you can specify the AppNetworkAccessType
/// parameter. AppNetworkAccessType
corresponds to the network access type
/// that you choose when you onboard to Studio. The following options are available:
///
/// -
///
///
PublicInternetOnly
- Non-EFS traffic goes through a VPC managed by Amazon
/// SageMaker, which allows internet access. This is the default value.
///
/// -
///
///
VpcOnly
- All Studio traffic is through the specified VPC and subnets.
/// Internet access is disabled by default. To allow internet access, you must specify
/// a NAT gateway.
///
///
///
/// When internet access is disabled, you won't be able to run a Studio notebook or to
/// train or host models unless your VPC has an interface endpoint to the SageMaker API
/// and runtime or a NAT gateway and your security groups allow outbound connections.
///
///
///
/// NFS traffic over TCP on port 2049 needs to be allowed in both inbound and outbound
/// rules in order to launch a SageMaker Studio app successfully.
///
///
///
/// For more information, see Connect
/// SageMaker Studio Notebooks to Resources in a VPC.
///
///
public partial class CreateDomainRequest : AmazonSageMakerRequest
{
private AppNetworkAccessType _appNetworkAccessType;
private AppSecurityGroupManagement _appSecurityGroupManagement;
private AuthMode _authMode;
private DefaultSpaceSettings _defaultSpaceSettings;
private UserSettings _defaultUserSettings;
private string _domainName;
private DomainSettings _domainSettings;
private string _homeEfsFileSystemKmsKeyId;
private string _kmsKeyId;
private List _subnetIds = new List();
private List _tags = new List();
private string _vpcId;
///
/// Gets and sets the property AppNetworkAccessType.
///
/// Specifies the VPC used for non-EFS traffic. The default value is PublicInternetOnly
.
///
/// -
///
///
PublicInternetOnly
- Non-EFS traffic is through a VPC managed by Amazon
/// SageMaker, which allows direct internet access
///
/// -
///
///
VpcOnly
- All Studio traffic is through the specified VPC and subnets
///
///
///
public AppNetworkAccessType AppNetworkAccessType
{
get { return this._appNetworkAccessType; }
set { this._appNetworkAccessType = value; }
}
// Check to see if AppNetworkAccessType property is set
internal bool IsSetAppNetworkAccessType()
{
return this._appNetworkAccessType != null;
}
///
/// Gets and sets the property AppSecurityGroupManagement.
///
/// The entity that creates and manages the required security groups for inter-app communication
/// in VPCOnly
mode. Required when CreateDomain.AppNetworkAccessType
/// is VPCOnly
and DomainSettings.RStudioServerProDomainSettings.DomainExecutionRoleArn
/// is provided. If setting up the domain for use with RStudio, this value must be set
/// to Service
.
///
///
public AppSecurityGroupManagement AppSecurityGroupManagement
{
get { return this._appSecurityGroupManagement; }
set { this._appSecurityGroupManagement = value; }
}
// Check to see if AppSecurityGroupManagement property is set
internal bool IsSetAppSecurityGroupManagement()
{
return this._appSecurityGroupManagement != null;
}
///
/// Gets and sets the property AuthMode.
///
/// The mode of authentication that members use to access the domain.
///
///
[AWSProperty(Required=true)]
public AuthMode AuthMode
{
get { return this._authMode; }
set { this._authMode = value; }
}
// Check to see if AuthMode property is set
internal bool IsSetAuthMode()
{
return this._authMode != null;
}
///
/// Gets and sets the property DefaultSpaceSettings.
///
/// The default settings used to create a space.
///
///
public DefaultSpaceSettings DefaultSpaceSettings
{
get { return this._defaultSpaceSettings; }
set { this._defaultSpaceSettings = value; }
}
// Check to see if DefaultSpaceSettings property is set
internal bool IsSetDefaultSpaceSettings()
{
return this._defaultSpaceSettings != null;
}
///
/// Gets and sets the property DefaultUserSettings.
///
/// The default settings to use to create a user profile when UserSettings
/// isn't specified in the call to the CreateUserProfile
API.
///
///
///
/// SecurityGroups
is aggregated when specified in both calls. For all other
/// settings in UserSettings
, the values specified in CreateUserProfile
/// take precedence over those specified in CreateDomain
.
///
///
[AWSProperty(Required=true)]
public UserSettings DefaultUserSettings
{
get { return this._defaultUserSettings; }
set { this._defaultUserSettings = value; }
}
// Check to see if DefaultUserSettings property is set
internal bool IsSetDefaultUserSettings()
{
return this._defaultUserSettings != null;
}
///
/// Gets and sets the property DomainName.
///
/// A name for the domain.
///
///
[AWSProperty(Required=true, Max=63)]
public string DomainName
{
get { return this._domainName; }
set { this._domainName = value; }
}
// Check to see if DomainName property is set
internal bool IsSetDomainName()
{
return this._domainName != null;
}
///
/// Gets and sets the property DomainSettings.
///
/// A collection of Domain
settings.
///
///
public DomainSettings DomainSettings
{
get { return this._domainSettings; }
set { this._domainSettings = value; }
}
// Check to see if DomainSettings property is set
internal bool IsSetDomainSettings()
{
return this._domainSettings != null;
}
///
/// Gets and sets the property HomeEfsFileSystemKmsKeyId.
///
/// Use KmsKeyId
.
///
///
[Obsolete("This property is deprecated, use KmsKeyId instead.")]
[AWSProperty(Max=2048)]
public string HomeEfsFileSystemKmsKeyId
{
get { return this._homeEfsFileSystemKmsKeyId; }
set { this._homeEfsFileSystemKmsKeyId = value; }
}
// Check to see if HomeEfsFileSystemKmsKeyId property is set
internal bool IsSetHomeEfsFileSystemKmsKeyId()
{
return this._homeEfsFileSystemKmsKeyId != null;
}
///
/// Gets and sets the property KmsKeyId.
///
/// SageMaker uses Amazon Web Services KMS to encrypt the EFS volume attached to the domain
/// with an Amazon Web Services managed key by default. For more control, specify a customer
/// managed key.
///
///
[AWSProperty(Max=2048)]
public string KmsKeyId
{
get { return this._kmsKeyId; }
set { this._kmsKeyId = value; }
}
// Check to see if KmsKeyId property is set
internal bool IsSetKmsKeyId()
{
return this._kmsKeyId != null;
}
///
/// Gets and sets the property SubnetIds.
///
/// The VPC subnets that Studio uses for communication.
///
///
[AWSProperty(Required=true, Min=1, Max=16)]
public List SubnetIds
{
get { return this._subnetIds; }
set { this._subnetIds = value; }
}
// Check to see if SubnetIds property is set
internal bool IsSetSubnetIds()
{
return this._subnetIds != null && this._subnetIds.Count > 0;
}
///
/// Gets and sets the property Tags.
///
/// Tags to associated with the Domain. Each tag consists of a key and an optional value.
/// Tag keys must be unique per resource. Tags are searchable using the Search
/// API.
///
///
///
/// Tags that you specify for the Domain are also added to all Apps that the Domain launches.
///
///
[AWSProperty(Min=0, Max=50)]
public List Tags
{
get { return this._tags; }
set { this._tags = value; }
}
// Check to see if Tags property is set
internal bool IsSetTags()
{
return this._tags != null && this._tags.Count > 0;
}
///
/// Gets and sets the property VpcId.
///
/// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
///
///
[AWSProperty(Required=true, Max=32)]
public string VpcId
{
get { return this._vpcId; }
set { this._vpcId = value; }
}
// Check to see if VpcId property is set
internal bool IsSetVpcId()
{
return this._vpcId != null;
}
}
}