github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/emr/studio.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 emr
     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 an Elastic MapReduce Studio.
    16  //
    17  // ## Example Usage
    18  //
    19  // <!--Start PulumiCodeChooser -->
    20  // ```go
    21  // package main
    22  //
    23  // import (
    24  //
    25  //	"fmt"
    26  //
    27  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/emr"
    28  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    29  //
    30  // )
    31  //
    32  //	func main() {
    33  //		pulumi.Run(func(ctx *pulumi.Context) error {
    34  //			_, err := emr.NewStudio(ctx, "example", &emr.StudioArgs{
    35  //				AuthMode:              pulumi.String("SSO"),
    36  //				DefaultS3Location:     pulumi.String(fmt.Sprintf("s3://%v/test", test.Bucket)),
    37  //				EngineSecurityGroupId: pulumi.Any(testAwsSecurityGroup.Id),
    38  //				Name:                  pulumi.String("example"),
    39  //				ServiceRole:           pulumi.Any(testAwsIamRole.Arn),
    40  //				SubnetIds: pulumi.StringArray{
    41  //					testAwsSubnet.Id,
    42  //				},
    43  //				UserRole:                 pulumi.Any(testAwsIamRole.Arn),
    44  //				VpcId:                    pulumi.Any(testAwsVpc.Id),
    45  //				WorkspaceSecurityGroupId: pulumi.Any(testAwsSecurityGroup.Id),
    46  //			})
    47  //			if err != nil {
    48  //				return err
    49  //			}
    50  //			return nil
    51  //		})
    52  //	}
    53  //
    54  // ```
    55  // <!--End PulumiCodeChooser -->
    56  //
    57  // ## Import
    58  //
    59  // Using `pulumi import`, import EMR studios using the `id`. For example:
    60  //
    61  // ```sh
    62  // $ pulumi import aws:emr/studio:Studio studio es-123456ABCDEF
    63  // ```
    64  type Studio struct {
    65  	pulumi.CustomResourceState
    66  
    67  	// ARN of the studio.
    68  	Arn pulumi.StringOutput `pulumi:"arn"`
    69  	// Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
    70  	AuthMode pulumi.StringOutput `pulumi:"authMode"`
    71  	// The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
    72  	DefaultS3Location pulumi.StringOutput `pulumi:"defaultS3Location"`
    73  	// A detailed description of the Amazon EMR Studio.
    74  	Description pulumi.StringPtrOutput `pulumi:"description"`
    75  	// 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`.
    76  	EngineSecurityGroupId pulumi.StringOutput `pulumi:"engineSecurityGroupId"`
    77  	// The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
    78  	IdpAuthUrl pulumi.StringPtrOutput `pulumi:"idpAuthUrl"`
    79  	// The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
    80  	IdpRelayStateParameterName pulumi.StringPtrOutput `pulumi:"idpRelayStateParameterName"`
    81  	// A descriptive name for the Amazon EMR Studio.
    82  	Name pulumi.StringOutput `pulumi:"name"`
    83  	// The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
    84  	ServiceRole pulumi.StringOutput `pulumi:"serviceRole"`
    85  	// A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
    86  	SubnetIds pulumi.StringArrayOutput `pulumi:"subnetIds"`
    87  	// list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
    88  	Tags pulumi.StringMapOutput `pulumi:"tags"`
    89  	// Deprecated: Please use `tags` instead.
    90  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
    91  	// The unique access URL of the Amazon EMR Studio.
    92  	Url pulumi.StringOutput `pulumi:"url"`
    93  	// The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
    94  	UserRole pulumi.StringPtrOutput `pulumi:"userRole"`
    95  	// The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
    96  	VpcId pulumi.StringOutput `pulumi:"vpcId"`
    97  	// The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
    98  	//
    99  	// The following arguments are optional:
   100  	WorkspaceSecurityGroupId pulumi.StringOutput `pulumi:"workspaceSecurityGroupId"`
   101  }
   102  
   103  // NewStudio registers a new resource with the given unique name, arguments, and options.
   104  func NewStudio(ctx *pulumi.Context,
   105  	name string, args *StudioArgs, opts ...pulumi.ResourceOption) (*Studio, error) {
   106  	if args == nil {
   107  		return nil, errors.New("missing one or more required arguments")
   108  	}
   109  
   110  	if args.AuthMode == nil {
   111  		return nil, errors.New("invalid value for required argument 'AuthMode'")
   112  	}
   113  	if args.DefaultS3Location == nil {
   114  		return nil, errors.New("invalid value for required argument 'DefaultS3Location'")
   115  	}
   116  	if args.EngineSecurityGroupId == nil {
   117  		return nil, errors.New("invalid value for required argument 'EngineSecurityGroupId'")
   118  	}
   119  	if args.ServiceRole == nil {
   120  		return nil, errors.New("invalid value for required argument 'ServiceRole'")
   121  	}
   122  	if args.SubnetIds == nil {
   123  		return nil, errors.New("invalid value for required argument 'SubnetIds'")
   124  	}
   125  	if args.VpcId == nil {
   126  		return nil, errors.New("invalid value for required argument 'VpcId'")
   127  	}
   128  	if args.WorkspaceSecurityGroupId == nil {
   129  		return nil, errors.New("invalid value for required argument 'WorkspaceSecurityGroupId'")
   130  	}
   131  	opts = internal.PkgResourceDefaultOpts(opts)
   132  	var resource Studio
   133  	err := ctx.RegisterResource("aws:emr/studio:Studio", name, args, &resource, opts...)
   134  	if err != nil {
   135  		return nil, err
   136  	}
   137  	return &resource, nil
   138  }
   139  
   140  // GetStudio gets an existing Studio resource's state with the given name, ID, and optional
   141  // state properties that are used to uniquely qualify the lookup (nil if not required).
   142  func GetStudio(ctx *pulumi.Context,
   143  	name string, id pulumi.IDInput, state *StudioState, opts ...pulumi.ResourceOption) (*Studio, error) {
   144  	var resource Studio
   145  	err := ctx.ReadResource("aws:emr/studio:Studio", name, id, state, &resource, opts...)
   146  	if err != nil {
   147  		return nil, err
   148  	}
   149  	return &resource, nil
   150  }
   151  
   152  // Input properties used for looking up and filtering Studio resources.
   153  type studioState struct {
   154  	// ARN of the studio.
   155  	Arn *string `pulumi:"arn"`
   156  	// Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
   157  	AuthMode *string `pulumi:"authMode"`
   158  	// The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
   159  	DefaultS3Location *string `pulumi:"defaultS3Location"`
   160  	// A detailed description of the Amazon EMR Studio.
   161  	Description *string `pulumi:"description"`
   162  	// 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`.
   163  	EngineSecurityGroupId *string `pulumi:"engineSecurityGroupId"`
   164  	// The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
   165  	IdpAuthUrl *string `pulumi:"idpAuthUrl"`
   166  	// The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
   167  	IdpRelayStateParameterName *string `pulumi:"idpRelayStateParameterName"`
   168  	// A descriptive name for the Amazon EMR Studio.
   169  	Name *string `pulumi:"name"`
   170  	// The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
   171  	ServiceRole *string `pulumi:"serviceRole"`
   172  	// A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
   173  	SubnetIds []string `pulumi:"subnetIds"`
   174  	// list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   175  	Tags map[string]string `pulumi:"tags"`
   176  	// Deprecated: Please use `tags` instead.
   177  	TagsAll map[string]string `pulumi:"tagsAll"`
   178  	// The unique access URL of the Amazon EMR Studio.
   179  	Url *string `pulumi:"url"`
   180  	// The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
   181  	UserRole *string `pulumi:"userRole"`
   182  	// The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
   183  	VpcId *string `pulumi:"vpcId"`
   184  	// The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
   185  	//
   186  	// The following arguments are optional:
   187  	WorkspaceSecurityGroupId *string `pulumi:"workspaceSecurityGroupId"`
   188  }
   189  
   190  type StudioState struct {
   191  	// ARN of the studio.
   192  	Arn pulumi.StringPtrInput
   193  	// Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
   194  	AuthMode pulumi.StringPtrInput
   195  	// The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
   196  	DefaultS3Location pulumi.StringPtrInput
   197  	// A detailed description of the Amazon EMR Studio.
   198  	Description pulumi.StringPtrInput
   199  	// 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`.
   200  	EngineSecurityGroupId pulumi.StringPtrInput
   201  	// The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
   202  	IdpAuthUrl pulumi.StringPtrInput
   203  	// The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
   204  	IdpRelayStateParameterName pulumi.StringPtrInput
   205  	// A descriptive name for the Amazon EMR Studio.
   206  	Name pulumi.StringPtrInput
   207  	// The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
   208  	ServiceRole pulumi.StringPtrInput
   209  	// A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
   210  	SubnetIds pulumi.StringArrayInput
   211  	// list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   212  	Tags pulumi.StringMapInput
   213  	// Deprecated: Please use `tags` instead.
   214  	TagsAll pulumi.StringMapInput
   215  	// The unique access URL of the Amazon EMR Studio.
   216  	Url pulumi.StringPtrInput
   217  	// The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
   218  	UserRole pulumi.StringPtrInput
   219  	// The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
   220  	VpcId pulumi.StringPtrInput
   221  	// The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
   222  	//
   223  	// The following arguments are optional:
   224  	WorkspaceSecurityGroupId pulumi.StringPtrInput
   225  }
   226  
   227  func (StudioState) ElementType() reflect.Type {
   228  	return reflect.TypeOf((*studioState)(nil)).Elem()
   229  }
   230  
   231  type studioArgs struct {
   232  	// Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
   233  	AuthMode string `pulumi:"authMode"`
   234  	// The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
   235  	DefaultS3Location string `pulumi:"defaultS3Location"`
   236  	// A detailed description of the Amazon EMR Studio.
   237  	Description *string `pulumi:"description"`
   238  	// 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`.
   239  	EngineSecurityGroupId string `pulumi:"engineSecurityGroupId"`
   240  	// The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
   241  	IdpAuthUrl *string `pulumi:"idpAuthUrl"`
   242  	// The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
   243  	IdpRelayStateParameterName *string `pulumi:"idpRelayStateParameterName"`
   244  	// A descriptive name for the Amazon EMR Studio.
   245  	Name *string `pulumi:"name"`
   246  	// The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
   247  	ServiceRole string `pulumi:"serviceRole"`
   248  	// A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
   249  	SubnetIds []string `pulumi:"subnetIds"`
   250  	// list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   251  	Tags map[string]string `pulumi:"tags"`
   252  	// The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
   253  	UserRole *string `pulumi:"userRole"`
   254  	// The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
   255  	VpcId string `pulumi:"vpcId"`
   256  	// The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
   257  	//
   258  	// The following arguments are optional:
   259  	WorkspaceSecurityGroupId string `pulumi:"workspaceSecurityGroupId"`
   260  }
   261  
   262  // The set of arguments for constructing a Studio resource.
   263  type StudioArgs struct {
   264  	// Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
   265  	AuthMode pulumi.StringInput
   266  	// The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
   267  	DefaultS3Location pulumi.StringInput
   268  	// A detailed description of the Amazon EMR Studio.
   269  	Description pulumi.StringPtrInput
   270  	// 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`.
   271  	EngineSecurityGroupId pulumi.StringInput
   272  	// The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
   273  	IdpAuthUrl pulumi.StringPtrInput
   274  	// The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
   275  	IdpRelayStateParameterName pulumi.StringPtrInput
   276  	// A descriptive name for the Amazon EMR Studio.
   277  	Name pulumi.StringPtrInput
   278  	// The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
   279  	ServiceRole pulumi.StringInput
   280  	// A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
   281  	SubnetIds pulumi.StringArrayInput
   282  	// list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   283  	Tags pulumi.StringMapInput
   284  	// The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
   285  	UserRole pulumi.StringPtrInput
   286  	// The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
   287  	VpcId pulumi.StringInput
   288  	// The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
   289  	//
   290  	// The following arguments are optional:
   291  	WorkspaceSecurityGroupId pulumi.StringInput
   292  }
   293  
   294  func (StudioArgs) ElementType() reflect.Type {
   295  	return reflect.TypeOf((*studioArgs)(nil)).Elem()
   296  }
   297  
   298  type StudioInput interface {
   299  	pulumi.Input
   300  
   301  	ToStudioOutput() StudioOutput
   302  	ToStudioOutputWithContext(ctx context.Context) StudioOutput
   303  }
   304  
   305  func (*Studio) ElementType() reflect.Type {
   306  	return reflect.TypeOf((**Studio)(nil)).Elem()
   307  }
   308  
   309  func (i *Studio) ToStudioOutput() StudioOutput {
   310  	return i.ToStudioOutputWithContext(context.Background())
   311  }
   312  
   313  func (i *Studio) ToStudioOutputWithContext(ctx context.Context) StudioOutput {
   314  	return pulumi.ToOutputWithContext(ctx, i).(StudioOutput)
   315  }
   316  
   317  // StudioArrayInput is an input type that accepts StudioArray and StudioArrayOutput values.
   318  // You can construct a concrete instance of `StudioArrayInput` via:
   319  //
   320  //	StudioArray{ StudioArgs{...} }
   321  type StudioArrayInput interface {
   322  	pulumi.Input
   323  
   324  	ToStudioArrayOutput() StudioArrayOutput
   325  	ToStudioArrayOutputWithContext(context.Context) StudioArrayOutput
   326  }
   327  
   328  type StudioArray []StudioInput
   329  
   330  func (StudioArray) ElementType() reflect.Type {
   331  	return reflect.TypeOf((*[]*Studio)(nil)).Elem()
   332  }
   333  
   334  func (i StudioArray) ToStudioArrayOutput() StudioArrayOutput {
   335  	return i.ToStudioArrayOutputWithContext(context.Background())
   336  }
   337  
   338  func (i StudioArray) ToStudioArrayOutputWithContext(ctx context.Context) StudioArrayOutput {
   339  	return pulumi.ToOutputWithContext(ctx, i).(StudioArrayOutput)
   340  }
   341  
   342  // StudioMapInput is an input type that accepts StudioMap and StudioMapOutput values.
   343  // You can construct a concrete instance of `StudioMapInput` via:
   344  //
   345  //	StudioMap{ "key": StudioArgs{...} }
   346  type StudioMapInput interface {
   347  	pulumi.Input
   348  
   349  	ToStudioMapOutput() StudioMapOutput
   350  	ToStudioMapOutputWithContext(context.Context) StudioMapOutput
   351  }
   352  
   353  type StudioMap map[string]StudioInput
   354  
   355  func (StudioMap) ElementType() reflect.Type {
   356  	return reflect.TypeOf((*map[string]*Studio)(nil)).Elem()
   357  }
   358  
   359  func (i StudioMap) ToStudioMapOutput() StudioMapOutput {
   360  	return i.ToStudioMapOutputWithContext(context.Background())
   361  }
   362  
   363  func (i StudioMap) ToStudioMapOutputWithContext(ctx context.Context) StudioMapOutput {
   364  	return pulumi.ToOutputWithContext(ctx, i).(StudioMapOutput)
   365  }
   366  
   367  type StudioOutput struct{ *pulumi.OutputState }
   368  
   369  func (StudioOutput) ElementType() reflect.Type {
   370  	return reflect.TypeOf((**Studio)(nil)).Elem()
   371  }
   372  
   373  func (o StudioOutput) ToStudioOutput() StudioOutput {
   374  	return o
   375  }
   376  
   377  func (o StudioOutput) ToStudioOutputWithContext(ctx context.Context) StudioOutput {
   378  	return o
   379  }
   380  
   381  // ARN of the studio.
   382  func (o StudioOutput) Arn() pulumi.StringOutput {
   383  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
   384  }
   385  
   386  // Specifies whether the Studio authenticates users using IAM or Amazon Web Services SSO. Valid values are `SSO` or `IAM`.
   387  func (o StudioOutput) AuthMode() pulumi.StringOutput {
   388  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.AuthMode }).(pulumi.StringOutput)
   389  }
   390  
   391  // The Amazon S3 location to back up Amazon EMR Studio Workspaces and notebook files.
   392  func (o StudioOutput) DefaultS3Location() pulumi.StringOutput {
   393  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.DefaultS3Location }).(pulumi.StringOutput)
   394  }
   395  
   396  // A detailed description of the Amazon EMR Studio.
   397  func (o StudioOutput) Description() pulumi.StringPtrOutput {
   398  	return o.ApplyT(func(v *Studio) pulumi.StringPtrOutput { return v.Description }).(pulumi.StringPtrOutput)
   399  }
   400  
   401  // 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`.
   402  func (o StudioOutput) EngineSecurityGroupId() pulumi.StringOutput {
   403  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.EngineSecurityGroupId }).(pulumi.StringOutput)
   404  }
   405  
   406  // The authentication endpoint of your identity provider (IdP). Specify this value when you use IAM authentication and want to let federated users log in to a Studio with the Studio URL and credentials from your IdP. Amazon EMR Studio redirects users to this endpoint to enter credentials.
   407  func (o StudioOutput) IdpAuthUrl() pulumi.StringPtrOutput {
   408  	return o.ApplyT(func(v *Studio) pulumi.StringPtrOutput { return v.IdpAuthUrl }).(pulumi.StringPtrOutput)
   409  }
   410  
   411  // The name that your identity provider (IdP) uses for its RelayState parameter. For example, RelayState or TargetSource. Specify this value when you use IAM authentication and want to let federated users log in to a Studio using the Studio URL. The RelayState parameter differs by IdP.
   412  func (o StudioOutput) IdpRelayStateParameterName() pulumi.StringPtrOutput {
   413  	return o.ApplyT(func(v *Studio) pulumi.StringPtrOutput { return v.IdpRelayStateParameterName }).(pulumi.StringPtrOutput)
   414  }
   415  
   416  // A descriptive name for the Amazon EMR Studio.
   417  func (o StudioOutput) Name() pulumi.StringOutput {
   418  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.Name }).(pulumi.StringOutput)
   419  }
   420  
   421  // The IAM role that the Amazon EMR Studio assumes. The service role provides a way for Amazon EMR Studio to interoperate with other Amazon Web Services services.
   422  func (o StudioOutput) ServiceRole() pulumi.StringOutput {
   423  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.ServiceRole }).(pulumi.StringOutput)
   424  }
   425  
   426  // A list of subnet IDs to associate with the Amazon EMR Studio. A Studio can have a maximum of 5 subnets. The subnets must belong to the VPC specified by `vpcId`. Studio users can create a Workspace in any of the specified subnets.
   427  func (o StudioOutput) SubnetIds() pulumi.StringArrayOutput {
   428  	return o.ApplyT(func(v *Studio) pulumi.StringArrayOutput { return v.SubnetIds }).(pulumi.StringArrayOutput)
   429  }
   430  
   431  // list of tags to apply to the EMR Cluster. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   432  func (o StudioOutput) Tags() pulumi.StringMapOutput {
   433  	return o.ApplyT(func(v *Studio) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
   434  }
   435  
   436  // Deprecated: Please use `tags` instead.
   437  func (o StudioOutput) TagsAll() pulumi.StringMapOutput {
   438  	return o.ApplyT(func(v *Studio) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
   439  }
   440  
   441  // The unique access URL of the Amazon EMR Studio.
   442  func (o StudioOutput) Url() pulumi.StringOutput {
   443  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.Url }).(pulumi.StringOutput)
   444  }
   445  
   446  // The IAM user role that users and groups assume when logged in to an Amazon EMR Studio. Only specify a User Role when you use Amazon Web Services SSO authentication. The permissions attached to the User Role can be scoped down for each user or group using session policies.
   447  func (o StudioOutput) UserRole() pulumi.StringPtrOutput {
   448  	return o.ApplyT(func(v *Studio) pulumi.StringPtrOutput { return v.UserRole }).(pulumi.StringPtrOutput)
   449  }
   450  
   451  // The ID of the Amazon Virtual Private Cloud (Amazon VPC) to associate with the Studio.
   452  func (o StudioOutput) VpcId() pulumi.StringOutput {
   453  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.VpcId }).(pulumi.StringOutput)
   454  }
   455  
   456  // The ID of the Amazon EMR Studio Workspace security group. The Workspace security group allows outbound network traffic to resources in the Engine security group, and it must be in the same VPC specified by `vpcId`.
   457  //
   458  // The following arguments are optional:
   459  func (o StudioOutput) WorkspaceSecurityGroupId() pulumi.StringOutput {
   460  	return o.ApplyT(func(v *Studio) pulumi.StringOutput { return v.WorkspaceSecurityGroupId }).(pulumi.StringOutput)
   461  }
   462  
   463  type StudioArrayOutput struct{ *pulumi.OutputState }
   464  
   465  func (StudioArrayOutput) ElementType() reflect.Type {
   466  	return reflect.TypeOf((*[]*Studio)(nil)).Elem()
   467  }
   468  
   469  func (o StudioArrayOutput) ToStudioArrayOutput() StudioArrayOutput {
   470  	return o
   471  }
   472  
   473  func (o StudioArrayOutput) ToStudioArrayOutputWithContext(ctx context.Context) StudioArrayOutput {
   474  	return o
   475  }
   476  
   477  func (o StudioArrayOutput) Index(i pulumi.IntInput) StudioOutput {
   478  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Studio {
   479  		return vs[0].([]*Studio)[vs[1].(int)]
   480  	}).(StudioOutput)
   481  }
   482  
   483  type StudioMapOutput struct{ *pulumi.OutputState }
   484  
   485  func (StudioMapOutput) ElementType() reflect.Type {
   486  	return reflect.TypeOf((*map[string]*Studio)(nil)).Elem()
   487  }
   488  
   489  func (o StudioMapOutput) ToStudioMapOutput() StudioMapOutput {
   490  	return o
   491  }
   492  
   493  func (o StudioMapOutput) ToStudioMapOutputWithContext(ctx context.Context) StudioMapOutput {
   494  	return o
   495  }
   496  
   497  func (o StudioMapOutput) MapIndex(k pulumi.StringInput) StudioOutput {
   498  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Studio {
   499  		return vs[0].(map[string]*Studio)[vs[1].(string)]
   500  	}).(StudioOutput)
   501  }
   502  
   503  func init() {
   504  	pulumi.RegisterInputType(reflect.TypeOf((*StudioInput)(nil)).Elem(), &Studio{})
   505  	pulumi.RegisterInputType(reflect.TypeOf((*StudioArrayInput)(nil)).Elem(), StudioArray{})
   506  	pulumi.RegisterInputType(reflect.TypeOf((*StudioMapInput)(nil)).Elem(), StudioMap{})
   507  	pulumi.RegisterOutputType(StudioOutput{})
   508  	pulumi.RegisterOutputType(StudioArrayOutput{})
   509  	pulumi.RegisterOutputType(StudioMapOutput{})
   510  }