/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace SageMaker { namespace Model { /** */ class CreateDomainRequest : public SageMakerRequest { public: AWS_SAGEMAKER_API CreateDomainRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateDomain"; } AWS_SAGEMAKER_API Aws::String SerializePayload() const override; AWS_SAGEMAKER_API Aws::Http::HeaderValueCollection GetRequestSpecificHeaders() const override; /** *

A name for the domain.

*/ inline const Aws::String& GetDomainName() const{ return m_domainName; } /** *

A name for the domain.

*/ inline bool DomainNameHasBeenSet() const { return m_domainNameHasBeenSet; } /** *

A name for the domain.

*/ inline void SetDomainName(const Aws::String& value) { m_domainNameHasBeenSet = true; m_domainName = value; } /** *

A name for the domain.

*/ inline void SetDomainName(Aws::String&& value) { m_domainNameHasBeenSet = true; m_domainName = std::move(value); } /** *

A name for the domain.

*/ inline void SetDomainName(const char* value) { m_domainNameHasBeenSet = true; m_domainName.assign(value); } /** *

A name for the domain.

*/ inline CreateDomainRequest& WithDomainName(const Aws::String& value) { SetDomainName(value); return *this;} /** *

A name for the domain.

*/ inline CreateDomainRequest& WithDomainName(Aws::String&& value) { SetDomainName(std::move(value)); return *this;} /** *

A name for the domain.

*/ inline CreateDomainRequest& WithDomainName(const char* value) { SetDomainName(value); return *this;} /** *

The mode of authentication that members use to access the domain.

*/ inline const AuthMode& GetAuthMode() const{ return m_authMode; } /** *

The mode of authentication that members use to access the domain.

*/ inline bool AuthModeHasBeenSet() const { return m_authModeHasBeenSet; } /** *

The mode of authentication that members use to access the domain.

*/ inline void SetAuthMode(const AuthMode& value) { m_authModeHasBeenSet = true; m_authMode = value; } /** *

The mode of authentication that members use to access the domain.

*/ inline void SetAuthMode(AuthMode&& value) { m_authModeHasBeenSet = true; m_authMode = std::move(value); } /** *

The mode of authentication that members use to access the domain.

*/ inline CreateDomainRequest& WithAuthMode(const AuthMode& value) { SetAuthMode(value); return *this;} /** *

The mode of authentication that members use to access the domain.

*/ inline CreateDomainRequest& WithAuthMode(AuthMode&& value) { SetAuthMode(std::move(value)); return *this;} /** *

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.

*/ inline const UserSettings& GetDefaultUserSettings() const{ return m_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.

*/ inline bool DefaultUserSettingsHasBeenSet() const { return m_defaultUserSettingsHasBeenSet; } /** *

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.

*/ inline void SetDefaultUserSettings(const UserSettings& value) { m_defaultUserSettingsHasBeenSet = true; m_defaultUserSettings = value; } /** *

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.

*/ inline void SetDefaultUserSettings(UserSettings&& value) { m_defaultUserSettingsHasBeenSet = true; m_defaultUserSettings = std::move(value); } /** *

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.

*/ inline CreateDomainRequest& WithDefaultUserSettings(const UserSettings& value) { SetDefaultUserSettings(value); return *this;} /** *

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.

*/ inline CreateDomainRequest& WithDefaultUserSettings(UserSettings&& value) { SetDefaultUserSettings(std::move(value)); return *this;} /** *

The VPC subnets that Studio uses for communication.

*/ inline const Aws::Vector& GetSubnetIds() const{ return m_subnetIds; } /** *

The VPC subnets that Studio uses for communication.

*/ inline bool SubnetIdsHasBeenSet() const { return m_subnetIdsHasBeenSet; } /** *

The VPC subnets that Studio uses for communication.

*/ inline void SetSubnetIds(const Aws::Vector& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = value; } /** *

The VPC subnets that Studio uses for communication.

*/ inline void SetSubnetIds(Aws::Vector&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds = std::move(value); } /** *

The VPC subnets that Studio uses for communication.

*/ inline CreateDomainRequest& WithSubnetIds(const Aws::Vector& value) { SetSubnetIds(value); return *this;} /** *

The VPC subnets that Studio uses for communication.

*/ inline CreateDomainRequest& WithSubnetIds(Aws::Vector&& value) { SetSubnetIds(std::move(value)); return *this;} /** *

The VPC subnets that Studio uses for communication.

*/ inline CreateDomainRequest& AddSubnetIds(const Aws::String& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; } /** *

The VPC subnets that Studio uses for communication.

*/ inline CreateDomainRequest& AddSubnetIds(Aws::String&& value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(std::move(value)); return *this; } /** *

The VPC subnets that Studio uses for communication.

*/ inline CreateDomainRequest& AddSubnetIds(const char* value) { m_subnetIdsHasBeenSet = true; m_subnetIds.push_back(value); return *this; } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline const Aws::String& GetVpcId() const{ return m_vpcId; } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline bool VpcIdHasBeenSet() const { return m_vpcIdHasBeenSet; } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline void SetVpcId(const Aws::String& value) { m_vpcIdHasBeenSet = true; m_vpcId = value; } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline void SetVpcId(Aws::String&& value) { m_vpcIdHasBeenSet = true; m_vpcId = std::move(value); } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline void SetVpcId(const char* value) { m_vpcIdHasBeenSet = true; m_vpcId.assign(value); } /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline CreateDomainRequest& WithVpcId(const Aws::String& value) { SetVpcId(value); return *this;} /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline CreateDomainRequest& WithVpcId(Aws::String&& value) { SetVpcId(std::move(value)); return *this;} /** *

The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for * communication.

*/ inline CreateDomainRequest& WithVpcId(const char* value) { SetVpcId(value); return *this;} /** *

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.

*/ inline const Aws::Vector& GetTags() const{ return m_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.

*/ inline bool TagsHasBeenSet() const { return m_tagsHasBeenSet; } /** *

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.

*/ inline void SetTags(const Aws::Vector& value) { m_tagsHasBeenSet = true; m_tags = value; } /** *

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.

*/ inline void SetTags(Aws::Vector&& value) { m_tagsHasBeenSet = true; m_tags = std::move(value); } /** *

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.

*/ inline CreateDomainRequest& WithTags(const Aws::Vector& value) { SetTags(value); return *this;} /** *

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.

*/ inline CreateDomainRequest& WithTags(Aws::Vector&& value) { SetTags(std::move(value)); return *this;} /** *

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.

*/ inline CreateDomainRequest& AddTags(const Tag& value) { m_tagsHasBeenSet = true; m_tags.push_back(value); return *this; } /** *

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.

*/ inline CreateDomainRequest& AddTags(Tag&& value) { m_tagsHasBeenSet = true; m_tags.push_back(std::move(value)); return *this; } /** *

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

*/ inline const AppNetworkAccessType& GetAppNetworkAccessType() const{ return m_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

*/ inline bool AppNetworkAccessTypeHasBeenSet() const { return m_appNetworkAccessTypeHasBeenSet; } /** *

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

*/ inline void SetAppNetworkAccessType(const AppNetworkAccessType& value) { m_appNetworkAccessTypeHasBeenSet = true; m_appNetworkAccessType = value; } /** *

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

*/ inline void SetAppNetworkAccessType(AppNetworkAccessType&& value) { m_appNetworkAccessTypeHasBeenSet = true; m_appNetworkAccessType = std::move(value); } /** *

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

*/ inline CreateDomainRequest& WithAppNetworkAccessType(const AppNetworkAccessType& value) { SetAppNetworkAccessType(value); return *this;} /** *

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

*/ inline CreateDomainRequest& WithAppNetworkAccessType(AppNetworkAccessType&& value) { SetAppNetworkAccessType(std::move(value)); return *this;} /** *

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.

*/ inline const Aws::String& GetKmsKeyId() const{ return m_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.

*/ inline bool KmsKeyIdHasBeenSet() const { return m_kmsKeyIdHasBeenSet; } /** *

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.

*/ inline void SetKmsKeyId(const Aws::String& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = value; } /** *

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.

*/ inline void SetKmsKeyId(Aws::String&& value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId = std::move(value); } /** *

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.

*/ inline void SetKmsKeyId(const char* value) { m_kmsKeyIdHasBeenSet = true; m_kmsKeyId.assign(value); } /** *

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.

*/ inline CreateDomainRequest& WithKmsKeyId(const Aws::String& value) { SetKmsKeyId(value); return *this;} /** *

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.

*/ inline CreateDomainRequest& WithKmsKeyId(Aws::String&& value) { SetKmsKeyId(std::move(value)); return *this;} /** *

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.

*/ inline CreateDomainRequest& WithKmsKeyId(const char* value) { SetKmsKeyId(value); return *this;} /** *

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.

*/ inline const AppSecurityGroupManagement& GetAppSecurityGroupManagement() const{ return m_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.

*/ inline bool AppSecurityGroupManagementHasBeenSet() const { return m_appSecurityGroupManagementHasBeenSet; } /** *

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.

*/ inline void SetAppSecurityGroupManagement(const AppSecurityGroupManagement& value) { m_appSecurityGroupManagementHasBeenSet = true; m_appSecurityGroupManagement = value; } /** *

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.

*/ inline void SetAppSecurityGroupManagement(AppSecurityGroupManagement&& value) { m_appSecurityGroupManagementHasBeenSet = true; m_appSecurityGroupManagement = std::move(value); } /** *

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.

*/ inline CreateDomainRequest& WithAppSecurityGroupManagement(const AppSecurityGroupManagement& value) { SetAppSecurityGroupManagement(value); return *this;} /** *

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.

*/ inline CreateDomainRequest& WithAppSecurityGroupManagement(AppSecurityGroupManagement&& value) { SetAppSecurityGroupManagement(std::move(value)); return *this;} /** *

A collection of Domain settings.

*/ inline const DomainSettings& GetDomainSettings() const{ return m_domainSettings; } /** *

A collection of Domain settings.

*/ inline bool DomainSettingsHasBeenSet() const { return m_domainSettingsHasBeenSet; } /** *

A collection of Domain settings.

*/ inline void SetDomainSettings(const DomainSettings& value) { m_domainSettingsHasBeenSet = true; m_domainSettings = value; } /** *

A collection of Domain settings.

*/ inline void SetDomainSettings(DomainSettings&& value) { m_domainSettingsHasBeenSet = true; m_domainSettings = std::move(value); } /** *

A collection of Domain settings.

*/ inline CreateDomainRequest& WithDomainSettings(const DomainSettings& value) { SetDomainSettings(value); return *this;} /** *

A collection of Domain settings.

*/ inline CreateDomainRequest& WithDomainSettings(DomainSettings&& value) { SetDomainSettings(std::move(value)); return *this;} /** *

The default settings used to create a space.

*/ inline const DefaultSpaceSettings& GetDefaultSpaceSettings() const{ return m_defaultSpaceSettings; } /** *

The default settings used to create a space.

*/ inline bool DefaultSpaceSettingsHasBeenSet() const { return m_defaultSpaceSettingsHasBeenSet; } /** *

The default settings used to create a space.

*/ inline void SetDefaultSpaceSettings(const DefaultSpaceSettings& value) { m_defaultSpaceSettingsHasBeenSet = true; m_defaultSpaceSettings = value; } /** *

The default settings used to create a space.

*/ inline void SetDefaultSpaceSettings(DefaultSpaceSettings&& value) { m_defaultSpaceSettingsHasBeenSet = true; m_defaultSpaceSettings = std::move(value); } /** *

The default settings used to create a space.

*/ inline CreateDomainRequest& WithDefaultSpaceSettings(const DefaultSpaceSettings& value) { SetDefaultSpaceSettings(value); return *this;} /** *

The default settings used to create a space.

*/ inline CreateDomainRequest& WithDefaultSpaceSettings(DefaultSpaceSettings&& value) { SetDefaultSpaceSettings(std::move(value)); return *this;} private: Aws::String m_domainName; bool m_domainNameHasBeenSet = false; AuthMode m_authMode; bool m_authModeHasBeenSet = false; UserSettings m_defaultUserSettings; bool m_defaultUserSettingsHasBeenSet = false; Aws::Vector m_subnetIds; bool m_subnetIdsHasBeenSet = false; Aws::String m_vpcId; bool m_vpcIdHasBeenSet = false; Aws::Vector m_tags; bool m_tagsHasBeenSet = false; AppNetworkAccessType m_appNetworkAccessType; bool m_appNetworkAccessTypeHasBeenSet = false; Aws::String m_kmsKeyId; bool m_kmsKeyIdHasBeenSet = false; AppSecurityGroupManagement m_appSecurityGroupManagement; bool m_appSecurityGroupManagementHasBeenSet = false; DomainSettings m_domainSettings; bool m_domainSettingsHasBeenSet = false; DefaultSpaceSettings m_defaultSpaceSettings; bool m_defaultSpaceSettingsHasBeenSet = false; }; } // namespace Model } // namespace SageMaker } // namespace Aws