github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/sagemaker/domain.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package sagemaker
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Provides a SageMaker Domain resource.
    16  //
    17  // ## Example Usage
    18  //
    19  // ### Basic usage
    20  //
    21  // <!--Start PulumiCodeChooser -->
    22  // ```go
    23  // package main
    24  //
    25  // import (
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam"
    28  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker"
    29  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    30  //
    31  // )
    32  //
    33  //	func main() {
    34  //		pulumi.Run(func(ctx *pulumi.Context) error {
    35  //			example, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{
    36  //				Statements: []iam.GetPolicyDocumentStatement{
    37  //					{
    38  //						Actions: []string{
    39  //							"sts:AssumeRole",
    40  //						},
    41  //						Principals: []iam.GetPolicyDocumentStatementPrincipal{
    42  //							{
    43  //								Type: "Service",
    44  //								Identifiers: []string{
    45  //									"sagemaker.amazonaws.com",
    46  //								},
    47  //							},
    48  //						},
    49  //					},
    50  //				},
    51  //			}, nil)
    52  //			if err != nil {
    53  //				return err
    54  //			}
    55  //			exampleRole, err := iam.NewRole(ctx, "example", &iam.RoleArgs{
    56  //				Name:             pulumi.String("example"),
    57  //				Path:             pulumi.String("/"),
    58  //				AssumeRolePolicy: pulumi.String(example.Json),
    59  //			})
    60  //			if err != nil {
    61  //				return err
    62  //			}
    63  //			_, err = sagemaker.NewDomain(ctx, "example", &sagemaker.DomainArgs{
    64  //				DomainName: pulumi.String("example"),
    65  //				AuthMode:   pulumi.String("IAM"),
    66  //				VpcId:      pulumi.Any(exampleAwsVpc.Id),
    67  //				SubnetIds: pulumi.StringArray{
    68  //					exampleAwsSubnet.Id,
    69  //				},
    70  //				DefaultUserSettings: &sagemaker.DomainDefaultUserSettingsArgs{
    71  //					ExecutionRole: exampleRole.Arn,
    72  //				},
    73  //			})
    74  //			if err != nil {
    75  //				return err
    76  //			}
    77  //			return nil
    78  //		})
    79  //	}
    80  //
    81  // ```
    82  // <!--End PulumiCodeChooser -->
    83  //
    84  // ### Using Custom Images
    85  //
    86  // <!--Start PulumiCodeChooser -->
    87  // ```go
    88  // package main
    89  //
    90  // import (
    91  //
    92  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sagemaker"
    93  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    94  //
    95  // )
    96  //
    97  //	func main() {
    98  //		pulumi.Run(func(ctx *pulumi.Context) error {
    99  //			example, err := sagemaker.NewImage(ctx, "example", &sagemaker.ImageArgs{
   100  //				ImageName: pulumi.String("example"),
   101  //				RoleArn:   pulumi.Any(exampleAwsIamRole.Arn),
   102  //			})
   103  //			if err != nil {
   104  //				return err
   105  //			}
   106  //			exampleAppImageConfig, err := sagemaker.NewAppImageConfig(ctx, "example", &sagemaker.AppImageConfigArgs{
   107  //				AppImageConfigName: pulumi.String("example"),
   108  //				KernelGatewayImageConfig: &sagemaker.AppImageConfigKernelGatewayImageConfigArgs{
   109  //					KernelSpec: &sagemaker.AppImageConfigKernelGatewayImageConfigKernelSpecArgs{
   110  //						Name: pulumi.String("example"),
   111  //					},
   112  //				},
   113  //			})
   114  //			if err != nil {
   115  //				return err
   116  //			}
   117  //			exampleImageVersion, err := sagemaker.NewImageVersion(ctx, "example", &sagemaker.ImageVersionArgs{
   118  //				ImageName: example.ID(),
   119  //				BaseImage: pulumi.String("base-image"),
   120  //			})
   121  //			if err != nil {
   122  //				return err
   123  //			}
   124  //			_, err = sagemaker.NewDomain(ctx, "example", &sagemaker.DomainArgs{
   125  //				DomainName: pulumi.String("example"),
   126  //				AuthMode:   pulumi.String("IAM"),
   127  //				VpcId:      pulumi.Any(exampleAwsVpc.Id),
   128  //				SubnetIds: pulumi.StringArray{
   129  //					exampleAwsSubnet.Id,
   130  //				},
   131  //				DefaultUserSettings: &sagemaker.DomainDefaultUserSettingsArgs{
   132  //					ExecutionRole: pulumi.Any(exampleAwsIamRole.Arn),
   133  //					KernelGatewayAppSettings: &sagemaker.DomainDefaultUserSettingsKernelGatewayAppSettingsArgs{
   134  //						CustomImages: sagemaker.DomainDefaultUserSettingsKernelGatewayAppSettingsCustomImageArray{
   135  //							&sagemaker.DomainDefaultUserSettingsKernelGatewayAppSettingsCustomImageArgs{
   136  //								AppImageConfigName: exampleAppImageConfig.AppImageConfigName,
   137  //								ImageName:          exampleImageVersion.ImageName,
   138  //							},
   139  //						},
   140  //					},
   141  //				},
   142  //			})
   143  //			if err != nil {
   144  //				return err
   145  //			}
   146  //			return nil
   147  //		})
   148  //	}
   149  //
   150  // ```
   151  // <!--End PulumiCodeChooser -->
   152  //
   153  // ## Import
   154  //
   155  // Using `pulumi import`, import SageMaker Domains using the `id`. For example:
   156  //
   157  // ```sh
   158  // $ pulumi import aws:sagemaker/domain:Domain test_domain d-8jgsjtilstu8
   159  // ```
   160  type Domain struct {
   161  	pulumi.CustomResourceState
   162  
   163  	// Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   164  	AppNetworkAccessType pulumi.StringPtrOutput `pulumi:"appNetworkAccessType"`
   165  	// The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   166  	AppSecurityGroupManagement pulumi.StringPtrOutput `pulumi:"appSecurityGroupManagement"`
   167  	// The Amazon Resource Name (ARN) assigned by AWS to this Domain.
   168  	Arn pulumi.StringOutput `pulumi:"arn"`
   169  	// The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   170  	AuthMode pulumi.StringOutput `pulumi:"authMode"`
   171  	// The default space settings. See `defaultSpaceSettings` Block below.
   172  	DefaultSpaceSettings DomainDefaultSpaceSettingsPtrOutput `pulumi:"defaultSpaceSettings"`
   173  	// The default user settings. See `defaultUserSettings` Block below.
   174  	DefaultUserSettings DomainDefaultUserSettingsOutput `pulumi:"defaultUserSettings"`
   175  	// The domain name.
   176  	DomainName pulumi.StringOutput `pulumi:"domainName"`
   177  	// The domain settings. See `domainSettings` Block below.
   178  	DomainSettings DomainDomainSettingsPtrOutput `pulumi:"domainSettings"`
   179  	// The ID of the Amazon Elastic File System (EFS) managed by this Domain.
   180  	HomeEfsFileSystemId pulumi.StringOutput `pulumi:"homeEfsFileSystemId"`
   181  	// The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   182  	KmsKeyId pulumi.StringPtrOutput `pulumi:"kmsKeyId"`
   183  	// The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   184  	RetentionPolicy DomainRetentionPolicyPtrOutput `pulumi:"retentionPolicy"`
   185  	// The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.
   186  	SecurityGroupIdForDomainBoundary pulumi.StringOutput `pulumi:"securityGroupIdForDomainBoundary"`
   187  	// The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after September 19, 2023.
   188  	SingleSignOnApplicationArn pulumi.StringOutput `pulumi:"singleSignOnApplicationArn"`
   189  	// The SSO managed application instance ID.
   190  	SingleSignOnManagedApplicationInstanceId pulumi.StringOutput `pulumi:"singleSignOnManagedApplicationInstanceId"`
   191  	// The VPC subnets that Studio uses for communication.
   192  	SubnetIds pulumi.StringArrayOutput `pulumi:"subnetIds"`
   193  	// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   194  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   195  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   196  	//
   197  	// Deprecated: Please use `tags` instead.
   198  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   199  	// The domain's URL.
   200  	Url pulumi.StringOutput `pulumi:"url"`
   201  	// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   202  	//
   203  	// The following arguments are optional:
   204  	VpcId pulumi.StringOutput `pulumi:"vpcId"`
   205  }
   206  
   207  // NewDomain registers a new resource with the given unique name, arguments, and options.
   208  func NewDomain(ctx *pulumi.Context,
   209  	name string, args *DomainArgs, opts ...pulumi.ResourceOption) (*Domain, error) {
   210  	if args == nil {
   211  		return nil, errors.New("missing one or more required arguments")
   212  	}
   213  
   214  	if args.AuthMode == nil {
   215  		return nil, errors.New("invalid value for required argument 'AuthMode'")
   216  	}
   217  	if args.DefaultUserSettings == nil {
   218  		return nil, errors.New("invalid value for required argument 'DefaultUserSettings'")
   219  	}
   220  	if args.DomainName == nil {
   221  		return nil, errors.New("invalid value for required argument 'DomainName'")
   222  	}
   223  	if args.SubnetIds == nil {
   224  		return nil, errors.New("invalid value for required argument 'SubnetIds'")
   225  	}
   226  	if args.VpcId == nil {
   227  		return nil, errors.New("invalid value for required argument 'VpcId'")
   228  	}
   229  	opts = internal.PkgResourceDefaultOpts(opts)
   230  	var resource Domain
   231  	err := ctx.RegisterResource("aws:sagemaker/domain:Domain", name, args, &resource, opts...)
   232  	if err != nil {
   233  		return nil, err
   234  	}
   235  	return &resource, nil
   236  }
   237  
   238  // GetDomain gets an existing Domain resource's state with the given name, ID, and optional
   239  // state properties that are used to uniquely qualify the lookup (nil if not required).
   240  func GetDomain(ctx *pulumi.Context,
   241  	name string, id pulumi.IDInput, state *DomainState, opts ...pulumi.ResourceOption) (*Domain, error) {
   242  	var resource Domain
   243  	err := ctx.ReadResource("aws:sagemaker/domain:Domain", name, id, state, &resource, opts...)
   244  	if err != nil {
   245  		return nil, err
   246  	}
   247  	return &resource, nil
   248  }
   249  
   250  // Input properties used for looking up and filtering Domain resources.
   251  type domainState struct {
   252  	// Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   253  	AppNetworkAccessType *string `pulumi:"appNetworkAccessType"`
   254  	// The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   255  	AppSecurityGroupManagement *string `pulumi:"appSecurityGroupManagement"`
   256  	// The Amazon Resource Name (ARN) assigned by AWS to this Domain.
   257  	Arn *string `pulumi:"arn"`
   258  	// The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   259  	AuthMode *string `pulumi:"authMode"`
   260  	// The default space settings. See `defaultSpaceSettings` Block below.
   261  	DefaultSpaceSettings *DomainDefaultSpaceSettings `pulumi:"defaultSpaceSettings"`
   262  	// The default user settings. See `defaultUserSettings` Block below.
   263  	DefaultUserSettings *DomainDefaultUserSettings `pulumi:"defaultUserSettings"`
   264  	// The domain name.
   265  	DomainName *string `pulumi:"domainName"`
   266  	// The domain settings. See `domainSettings` Block below.
   267  	DomainSettings *DomainDomainSettings `pulumi:"domainSettings"`
   268  	// The ID of the Amazon Elastic File System (EFS) managed by this Domain.
   269  	HomeEfsFileSystemId *string `pulumi:"homeEfsFileSystemId"`
   270  	// The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   271  	KmsKeyId *string `pulumi:"kmsKeyId"`
   272  	// The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   273  	RetentionPolicy *DomainRetentionPolicy `pulumi:"retentionPolicy"`
   274  	// The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.
   275  	SecurityGroupIdForDomainBoundary *string `pulumi:"securityGroupIdForDomainBoundary"`
   276  	// The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after September 19, 2023.
   277  	SingleSignOnApplicationArn *string `pulumi:"singleSignOnApplicationArn"`
   278  	// The SSO managed application instance ID.
   279  	SingleSignOnManagedApplicationInstanceId *string `pulumi:"singleSignOnManagedApplicationInstanceId"`
   280  	// The VPC subnets that Studio uses for communication.
   281  	SubnetIds []string `pulumi:"subnetIds"`
   282  	// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   283  	Tags map[string]string `pulumi:"tags"`
   284  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   285  	//
   286  	// Deprecated: Please use `tags` instead.
   287  	TagsAll map[string]string `pulumi:"tagsAll"`
   288  	// The domain's URL.
   289  	Url *string `pulumi:"url"`
   290  	// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   291  	//
   292  	// The following arguments are optional:
   293  	VpcId *string `pulumi:"vpcId"`
   294  }
   295  
   296  type DomainState struct {
   297  	// Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   298  	AppNetworkAccessType pulumi.StringPtrInput
   299  	// The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   300  	AppSecurityGroupManagement pulumi.StringPtrInput
   301  	// The Amazon Resource Name (ARN) assigned by AWS to this Domain.
   302  	Arn pulumi.StringPtrInput
   303  	// The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   304  	AuthMode pulumi.StringPtrInput
   305  	// The default space settings. See `defaultSpaceSettings` Block below.
   306  	DefaultSpaceSettings DomainDefaultSpaceSettingsPtrInput
   307  	// The default user settings. See `defaultUserSettings` Block below.
   308  	DefaultUserSettings DomainDefaultUserSettingsPtrInput
   309  	// The domain name.
   310  	DomainName pulumi.StringPtrInput
   311  	// The domain settings. See `domainSettings` Block below.
   312  	DomainSettings DomainDomainSettingsPtrInput
   313  	// The ID of the Amazon Elastic File System (EFS) managed by this Domain.
   314  	HomeEfsFileSystemId pulumi.StringPtrInput
   315  	// The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   316  	KmsKeyId pulumi.StringPtrInput
   317  	// The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   318  	RetentionPolicy DomainRetentionPolicyPtrInput
   319  	// The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.
   320  	SecurityGroupIdForDomainBoundary pulumi.StringPtrInput
   321  	// The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after September 19, 2023.
   322  	SingleSignOnApplicationArn pulumi.StringPtrInput
   323  	// The SSO managed application instance ID.
   324  	SingleSignOnManagedApplicationInstanceId pulumi.StringPtrInput
   325  	// The VPC subnets that Studio uses for communication.
   326  	SubnetIds pulumi.StringArrayInput
   327  	// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   328  	Tags pulumi.StringMapInput
   329  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   330  	//
   331  	// Deprecated: Please use `tags` instead.
   332  	TagsAll pulumi.StringMapInput
   333  	// The domain's URL.
   334  	Url pulumi.StringPtrInput
   335  	// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   336  	//
   337  	// The following arguments are optional:
   338  	VpcId pulumi.StringPtrInput
   339  }
   340  
   341  func (DomainState) ElementType() reflect.Type {
   342  	return reflect.TypeOf((*domainState)(nil)).Elem()
   343  }
   344  
   345  type domainArgs struct {
   346  	// Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   347  	AppNetworkAccessType *string `pulumi:"appNetworkAccessType"`
   348  	// The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   349  	AppSecurityGroupManagement *string `pulumi:"appSecurityGroupManagement"`
   350  	// The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   351  	AuthMode string `pulumi:"authMode"`
   352  	// The default space settings. See `defaultSpaceSettings` Block below.
   353  	DefaultSpaceSettings *DomainDefaultSpaceSettings `pulumi:"defaultSpaceSettings"`
   354  	// The default user settings. See `defaultUserSettings` Block below.
   355  	DefaultUserSettings DomainDefaultUserSettings `pulumi:"defaultUserSettings"`
   356  	// The domain name.
   357  	DomainName string `pulumi:"domainName"`
   358  	// The domain settings. See `domainSettings` Block below.
   359  	DomainSettings *DomainDomainSettings `pulumi:"domainSettings"`
   360  	// The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   361  	KmsKeyId *string `pulumi:"kmsKeyId"`
   362  	// The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   363  	RetentionPolicy *DomainRetentionPolicy `pulumi:"retentionPolicy"`
   364  	// The VPC subnets that Studio uses for communication.
   365  	SubnetIds []string `pulumi:"subnetIds"`
   366  	// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   367  	Tags map[string]string `pulumi:"tags"`
   368  	// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   369  	//
   370  	// The following arguments are optional:
   371  	VpcId string `pulumi:"vpcId"`
   372  }
   373  
   374  // The set of arguments for constructing a Domain resource.
   375  type DomainArgs struct {
   376  	// Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   377  	AppNetworkAccessType pulumi.StringPtrInput
   378  	// The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   379  	AppSecurityGroupManagement pulumi.StringPtrInput
   380  	// The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   381  	AuthMode pulumi.StringInput
   382  	// The default space settings. See `defaultSpaceSettings` Block below.
   383  	DefaultSpaceSettings DomainDefaultSpaceSettingsPtrInput
   384  	// The default user settings. See `defaultUserSettings` Block below.
   385  	DefaultUserSettings DomainDefaultUserSettingsInput
   386  	// The domain name.
   387  	DomainName pulumi.StringInput
   388  	// The domain settings. See `domainSettings` Block below.
   389  	DomainSettings DomainDomainSettingsPtrInput
   390  	// The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   391  	KmsKeyId pulumi.StringPtrInput
   392  	// The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   393  	RetentionPolicy DomainRetentionPolicyPtrInput
   394  	// The VPC subnets that Studio uses for communication.
   395  	SubnetIds pulumi.StringArrayInput
   396  	// A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   397  	Tags pulumi.StringMapInput
   398  	// The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   399  	//
   400  	// The following arguments are optional:
   401  	VpcId pulumi.StringInput
   402  }
   403  
   404  func (DomainArgs) ElementType() reflect.Type {
   405  	return reflect.TypeOf((*domainArgs)(nil)).Elem()
   406  }
   407  
   408  type DomainInput interface {
   409  	pulumi.Input
   410  
   411  	ToDomainOutput() DomainOutput
   412  	ToDomainOutputWithContext(ctx context.Context) DomainOutput
   413  }
   414  
   415  func (*Domain) ElementType() reflect.Type {
   416  	return reflect.TypeOf((**Domain)(nil)).Elem()
   417  }
   418  
   419  func (i *Domain) ToDomainOutput() DomainOutput {
   420  	return i.ToDomainOutputWithContext(context.Background())
   421  }
   422  
   423  func (i *Domain) ToDomainOutputWithContext(ctx context.Context) DomainOutput {
   424  	return pulumi.ToOutputWithContext(ctx, i).(DomainOutput)
   425  }
   426  
   427  // DomainArrayInput is an input type that accepts DomainArray and DomainArrayOutput values.
   428  // You can construct a concrete instance of `DomainArrayInput` via:
   429  //
   430  //	DomainArray{ DomainArgs{...} }
   431  type DomainArrayInput interface {
   432  	pulumi.Input
   433  
   434  	ToDomainArrayOutput() DomainArrayOutput
   435  	ToDomainArrayOutputWithContext(context.Context) DomainArrayOutput
   436  }
   437  
   438  type DomainArray []DomainInput
   439  
   440  func (DomainArray) ElementType() reflect.Type {
   441  	return reflect.TypeOf((*[]*Domain)(nil)).Elem()
   442  }
   443  
   444  func (i DomainArray) ToDomainArrayOutput() DomainArrayOutput {
   445  	return i.ToDomainArrayOutputWithContext(context.Background())
   446  }
   447  
   448  func (i DomainArray) ToDomainArrayOutputWithContext(ctx context.Context) DomainArrayOutput {
   449  	return pulumi.ToOutputWithContext(ctx, i).(DomainArrayOutput)
   450  }
   451  
   452  // DomainMapInput is an input type that accepts DomainMap and DomainMapOutput values.
   453  // You can construct a concrete instance of `DomainMapInput` via:
   454  //
   455  //	DomainMap{ "key": DomainArgs{...} }
   456  type DomainMapInput interface {
   457  	pulumi.Input
   458  
   459  	ToDomainMapOutput() DomainMapOutput
   460  	ToDomainMapOutputWithContext(context.Context) DomainMapOutput
   461  }
   462  
   463  type DomainMap map[string]DomainInput
   464  
   465  func (DomainMap) ElementType() reflect.Type {
   466  	return reflect.TypeOf((*map[string]*Domain)(nil)).Elem()
   467  }
   468  
   469  func (i DomainMap) ToDomainMapOutput() DomainMapOutput {
   470  	return i.ToDomainMapOutputWithContext(context.Background())
   471  }
   472  
   473  func (i DomainMap) ToDomainMapOutputWithContext(ctx context.Context) DomainMapOutput {
   474  	return pulumi.ToOutputWithContext(ctx, i).(DomainMapOutput)
   475  }
   476  
   477  type DomainOutput struct{ *pulumi.OutputState }
   478  
   479  func (DomainOutput) ElementType() reflect.Type {
   480  	return reflect.TypeOf((**Domain)(nil)).Elem()
   481  }
   482  
   483  func (o DomainOutput) ToDomainOutput() DomainOutput {
   484  	return o
   485  }
   486  
   487  func (o DomainOutput) ToDomainOutputWithContext(ctx context.Context) DomainOutput {
   488  	return o
   489  }
   490  
   491  // Specifies the VPC used for non-EFS traffic. The default value is `PublicInternetOnly`. Valid values are `PublicInternetOnly` and `VpcOnly`.
   492  func (o DomainOutput) AppNetworkAccessType() pulumi.StringPtrOutput {
   493  	return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.AppNetworkAccessType }).(pulumi.StringPtrOutput)
   494  }
   495  
   496  // The entity that creates and manages the required security groups for inter-app communication in `VPCOnly` mode. Valid values are `Service` and `Customer`.
   497  func (o DomainOutput) AppSecurityGroupManagement() pulumi.StringPtrOutput {
   498  	return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.AppSecurityGroupManagement }).(pulumi.StringPtrOutput)
   499  }
   500  
   501  // The Amazon Resource Name (ARN) assigned by AWS to this Domain.
   502  func (o DomainOutput) Arn() pulumi.StringOutput {
   503  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   504  }
   505  
   506  // The mode of authentication that members use to access the domain. Valid values are `IAM` and `SSO`.
   507  func (o DomainOutput) AuthMode() pulumi.StringOutput {
   508  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.AuthMode }).(pulumi.StringOutput)
   509  }
   510  
   511  // The default space settings. See `defaultSpaceSettings` Block below.
   512  func (o DomainOutput) DefaultSpaceSettings() DomainDefaultSpaceSettingsPtrOutput {
   513  	return o.ApplyT(func(v *Domain) DomainDefaultSpaceSettingsPtrOutput { return v.DefaultSpaceSettings }).(DomainDefaultSpaceSettingsPtrOutput)
   514  }
   515  
   516  // The default user settings. See `defaultUserSettings` Block below.
   517  func (o DomainOutput) DefaultUserSettings() DomainDefaultUserSettingsOutput {
   518  	return o.ApplyT(func(v *Domain) DomainDefaultUserSettingsOutput { return v.DefaultUserSettings }).(DomainDefaultUserSettingsOutput)
   519  }
   520  
   521  // The domain name.
   522  func (o DomainOutput) DomainName() pulumi.StringOutput {
   523  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.DomainName }).(pulumi.StringOutput)
   524  }
   525  
   526  // The domain settings. See `domainSettings` Block below.
   527  func (o DomainOutput) DomainSettings() DomainDomainSettingsPtrOutput {
   528  	return o.ApplyT(func(v *Domain) DomainDomainSettingsPtrOutput { return v.DomainSettings }).(DomainDomainSettingsPtrOutput)
   529  }
   530  
   531  // The ID of the Amazon Elastic File System (EFS) managed by this Domain.
   532  func (o DomainOutput) HomeEfsFileSystemId() pulumi.StringOutput {
   533  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.HomeEfsFileSystemId }).(pulumi.StringOutput)
   534  }
   535  
   536  // The AWS KMS customer managed CMK used to encrypt the EFS volume attached to the domain.
   537  func (o DomainOutput) KmsKeyId() pulumi.StringPtrOutput {
   538  	return o.ApplyT(func(v *Domain) pulumi.StringPtrOutput { return v.KmsKeyId }).(pulumi.StringPtrOutput)
   539  }
   540  
   541  // The retention policy for this domain, which specifies whether resources will be retained after the Domain is deleted. By default, all resources are retained. See `retentionPolicy` Block below.
   542  func (o DomainOutput) RetentionPolicy() DomainRetentionPolicyPtrOutput {
   543  	return o.ApplyT(func(v *Domain) DomainRetentionPolicyPtrOutput { return v.RetentionPolicy }).(DomainRetentionPolicyPtrOutput)
   544  }
   545  
   546  // The ID of the security group that authorizes traffic between the RSessionGateway apps and the RStudioServerPro app.
   547  func (o DomainOutput) SecurityGroupIdForDomainBoundary() pulumi.StringOutput {
   548  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.SecurityGroupIdForDomainBoundary }).(pulumi.StringOutput)
   549  }
   550  
   551  // The ARN of the application managed by SageMaker in IAM Identity Center. This value is only returned for domains created after September 19, 2023.
   552  func (o DomainOutput) SingleSignOnApplicationArn() pulumi.StringOutput {
   553  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.SingleSignOnApplicationArn }).(pulumi.StringOutput)
   554  }
   555  
   556  // The SSO managed application instance ID.
   557  func (o DomainOutput) SingleSignOnManagedApplicationInstanceId() pulumi.StringOutput {
   558  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.SingleSignOnManagedApplicationInstanceId }).(pulumi.StringOutput)
   559  }
   560  
   561  // The VPC subnets that Studio uses for communication.
   562  func (o DomainOutput) SubnetIds() pulumi.StringArrayOutput {
   563  	return o.ApplyT(func(v *Domain) pulumi.StringArrayOutput { return v.SubnetIds }).(pulumi.StringArrayOutput)
   564  }
   565  
   566  // A map of tags to assign to the resource. .If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   567  func (o DomainOutput) Tags() pulumi.StringMapOutput {
   568  	return o.ApplyT(func(v *Domain) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   569  }
   570  
   571  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   572  //
   573  // Deprecated: Please use `tags` instead.
   574  func (o DomainOutput) TagsAll() pulumi.StringMapOutput {
   575  	return o.ApplyT(func(v *Domain) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   576  }
   577  
   578  // The domain's URL.
   579  func (o DomainOutput) Url() pulumi.StringOutput {
   580  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput)
   581  }
   582  
   583  // The ID of the Amazon Virtual Private Cloud (VPC) that Studio uses for communication.
   584  //
   585  // The following arguments are optional:
   586  func (o DomainOutput) VpcId() pulumi.StringOutput {
   587  	return o.ApplyT(func(v *Domain) pulumi.StringOutput { return v.VpcId }).(pulumi.StringOutput)
   588  }
   589  
   590  type DomainArrayOutput struct{ *pulumi.OutputState }
   591  
   592  func (DomainArrayOutput) ElementType() reflect.Type {
   593  	return reflect.TypeOf((*[]*Domain)(nil)).Elem()
   594  }
   595  
   596  func (o DomainArrayOutput) ToDomainArrayOutput() DomainArrayOutput {
   597  	return o
   598  }
   599  
   600  func (o DomainArrayOutput) ToDomainArrayOutputWithContext(ctx context.Context) DomainArrayOutput {
   601  	return o
   602  }
   603  
   604  func (o DomainArrayOutput) Index(i pulumi.IntInput) DomainOutput {
   605  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Domain {
   606  		return vs[0].([]*Domain)[vs[1].(int)]
   607  	}).(DomainOutput)
   608  }
   609  
   610  type DomainMapOutput struct{ *pulumi.OutputState }
   611  
   612  func (DomainMapOutput) ElementType() reflect.Type {
   613  	return reflect.TypeOf((*map[string]*Domain)(nil)).Elem()
   614  }
   615  
   616  func (o DomainMapOutput) ToDomainMapOutput() DomainMapOutput {
   617  	return o
   618  }
   619  
   620  func (o DomainMapOutput) ToDomainMapOutputWithContext(ctx context.Context) DomainMapOutput {
   621  	return o
   622  }
   623  
   624  func (o DomainMapOutput) MapIndex(k pulumi.StringInput) DomainOutput {
   625  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Domain {
   626  		return vs[0].(map[string]*Domain)[vs[1].(string)]
   627  	}).(DomainOutput)
   628  }
   629  
   630  func init() {
   631  	pulumi.RegisterInputType(reflect.TypeOf((*DomainInput)(nil)).Elem(), &Domain{})
   632  	pulumi.RegisterInputType(reflect.TypeOf((*DomainArrayInput)(nil)).Elem(), DomainArray{})
   633  	pulumi.RegisterInputType(reflect.TypeOf((*DomainMapInput)(nil)).Elem(), DomainMap{})
   634  	pulumi.RegisterOutputType(DomainOutput{})
   635  	pulumi.RegisterOutputType(DomainArrayOutput{})
   636  	pulumi.RegisterOutputType(DomainMapOutput{})
   637  }