github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/transfer/access.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 transfer
     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 AWS Transfer Access resource.
    16  //
    17  // > **NOTE:** We suggest using explicit JSON encoding or `aws.iam.getPolicyDocument` when assigning a value to `policy`. They seamlessly translate configuration to JSON, enabling you to maintain consistency within your configuration without the need for context switches. Also, you can sidestep potential complications arising from formatting discrepancies, whitespace inconsistencies, and other nuances inherent to JSON.
    18  //
    19  // ## Example Usage
    20  //
    21  // ### Basic S3
    22  //
    23  // <!--Start PulumiCodeChooser -->
    24  // ```go
    25  // package main
    26  //
    27  // import (
    28  //
    29  //	"fmt"
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
    32  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    33  //
    34  // )
    35  //
    36  //	func main() {
    37  //		pulumi.Run(func(ctx *pulumi.Context) error {
    38  //			_, err := transfer.NewAccess(ctx, "example", &transfer.AccessArgs{
    39  //				ExternalId:    pulumi.String("S-1-1-12-1234567890-123456789-1234567890-1234"),
    40  //				ServerId:      pulumi.Any(exampleAwsTransferServer.Id),
    41  //				Role:          pulumi.Any(exampleAwsIamRole.Arn),
    42  //				HomeDirectory: pulumi.String(fmt.Sprintf("/%v/", exampleAwsS3Bucket.Id)),
    43  //			})
    44  //			if err != nil {
    45  //				return err
    46  //			}
    47  //			return nil
    48  //		})
    49  //	}
    50  //
    51  // ```
    52  // <!--End PulumiCodeChooser -->
    53  //
    54  // ### Basic EFS
    55  //
    56  // <!--Start PulumiCodeChooser -->
    57  // ```go
    58  // package main
    59  //
    60  // import (
    61  //
    62  //	"fmt"
    63  //
    64  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/transfer"
    65  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    66  //
    67  // )
    68  //
    69  //	func main() {
    70  //		pulumi.Run(func(ctx *pulumi.Context) error {
    71  //			_, err := transfer.NewAccess(ctx, "test", &transfer.AccessArgs{
    72  //				ExternalId:    pulumi.String("S-1-1-12-1234567890-123456789-1234567890-1234"),
    73  //				ServerId:      pulumi.Any(testAwsTransferServer.Id),
    74  //				Role:          pulumi.Any(testAwsIamRole.Arn),
    75  //				HomeDirectory: pulumi.String(fmt.Sprintf("/%v/", testAwsEfsFileSystem.Id)),
    76  //				PosixProfile: &transfer.AccessPosixProfileArgs{
    77  //					Gid: pulumi.Int(1000),
    78  //					Uid: pulumi.Int(1000),
    79  //				},
    80  //			})
    81  //			if err != nil {
    82  //				return err
    83  //			}
    84  //			return nil
    85  //		})
    86  //	}
    87  //
    88  // ```
    89  // <!--End PulumiCodeChooser -->
    90  //
    91  // ## Import
    92  //
    93  // Using `pulumi import`, import Transfer Accesses using the `server_id` and `external_id`. For example:
    94  //
    95  // ```sh
    96  // $ pulumi import aws:transfer/access:Access example s-12345678/S-1-1-12-1234567890-123456789-1234567890-1234
    97  // ```
    98  type Access struct {
    99  	pulumi.CustomResourceState
   100  
   101  	// The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   102  	ExternalId pulumi.StringOutput `pulumi:"externalId"`
   103  	// The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   104  	HomeDirectory pulumi.StringPtrOutput `pulumi:"homeDirectory"`
   105  	// Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   106  	HomeDirectoryMappings AccessHomeDirectoryMappingArrayOutput `pulumi:"homeDirectoryMappings"`
   107  	// The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   108  	HomeDirectoryType pulumi.StringPtrOutput `pulumi:"homeDirectoryType"`
   109  	// An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   110  	Policy pulumi.StringPtrOutput `pulumi:"policy"`
   111  	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   112  	PosixProfile AccessPosixProfilePtrOutput `pulumi:"posixProfile"`
   113  	// Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   114  	Role pulumi.StringPtrOutput `pulumi:"role"`
   115  	// The Server ID of the Transfer Server (e.g., `s-12345678`)
   116  	ServerId pulumi.StringOutput `pulumi:"serverId"`
   117  }
   118  
   119  // NewAccess registers a new resource with the given unique name, arguments, and options.
   120  func NewAccess(ctx *pulumi.Context,
   121  	name string, args *AccessArgs, opts ...pulumi.ResourceOption) (*Access, error) {
   122  	if args == nil {
   123  		return nil, errors.New("missing one or more required arguments")
   124  	}
   125  
   126  	if args.ExternalId == nil {
   127  		return nil, errors.New("invalid value for required argument 'ExternalId'")
   128  	}
   129  	if args.ServerId == nil {
   130  		return nil, errors.New("invalid value for required argument 'ServerId'")
   131  	}
   132  	opts = internal.PkgResourceDefaultOpts(opts)
   133  	var resource Access
   134  	err := ctx.RegisterResource("aws:transfer/access:Access", name, args, &resource, opts...)
   135  	if err != nil {
   136  		return nil, err
   137  	}
   138  	return &resource, nil
   139  }
   140  
   141  // GetAccess gets an existing Access resource's state with the given name, ID, and optional
   142  // state properties that are used to uniquely qualify the lookup (nil if not required).
   143  func GetAccess(ctx *pulumi.Context,
   144  	name string, id pulumi.IDInput, state *AccessState, opts ...pulumi.ResourceOption) (*Access, error) {
   145  	var resource Access
   146  	err := ctx.ReadResource("aws:transfer/access:Access", name, id, state, &resource, opts...)
   147  	if err != nil {
   148  		return nil, err
   149  	}
   150  	return &resource, nil
   151  }
   152  
   153  // Input properties used for looking up and filtering Access resources.
   154  type accessState struct {
   155  	// The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   156  	ExternalId *string `pulumi:"externalId"`
   157  	// The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   158  	HomeDirectory *string `pulumi:"homeDirectory"`
   159  	// Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   160  	HomeDirectoryMappings []AccessHomeDirectoryMapping `pulumi:"homeDirectoryMappings"`
   161  	// The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   162  	HomeDirectoryType *string `pulumi:"homeDirectoryType"`
   163  	// An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   164  	Policy *string `pulumi:"policy"`
   165  	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   166  	PosixProfile *AccessPosixProfile `pulumi:"posixProfile"`
   167  	// Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   168  	Role *string `pulumi:"role"`
   169  	// The Server ID of the Transfer Server (e.g., `s-12345678`)
   170  	ServerId *string `pulumi:"serverId"`
   171  }
   172  
   173  type AccessState struct {
   174  	// The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   175  	ExternalId pulumi.StringPtrInput
   176  	// The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   177  	HomeDirectory pulumi.StringPtrInput
   178  	// Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   179  	HomeDirectoryMappings AccessHomeDirectoryMappingArrayInput
   180  	// The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   181  	HomeDirectoryType pulumi.StringPtrInput
   182  	// An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   183  	Policy pulumi.StringPtrInput
   184  	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   185  	PosixProfile AccessPosixProfilePtrInput
   186  	// Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   187  	Role pulumi.StringPtrInput
   188  	// The Server ID of the Transfer Server (e.g., `s-12345678`)
   189  	ServerId pulumi.StringPtrInput
   190  }
   191  
   192  func (AccessState) ElementType() reflect.Type {
   193  	return reflect.TypeOf((*accessState)(nil)).Elem()
   194  }
   195  
   196  type accessArgs struct {
   197  	// The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   198  	ExternalId string `pulumi:"externalId"`
   199  	// The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   200  	HomeDirectory *string `pulumi:"homeDirectory"`
   201  	// Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   202  	HomeDirectoryMappings []AccessHomeDirectoryMapping `pulumi:"homeDirectoryMappings"`
   203  	// The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   204  	HomeDirectoryType *string `pulumi:"homeDirectoryType"`
   205  	// An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   206  	Policy *string `pulumi:"policy"`
   207  	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   208  	PosixProfile *AccessPosixProfile `pulumi:"posixProfile"`
   209  	// Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   210  	Role *string `pulumi:"role"`
   211  	// The Server ID of the Transfer Server (e.g., `s-12345678`)
   212  	ServerId string `pulumi:"serverId"`
   213  }
   214  
   215  // The set of arguments for constructing a Access resource.
   216  type AccessArgs struct {
   217  	// The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   218  	ExternalId pulumi.StringInput
   219  	// The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   220  	HomeDirectory pulumi.StringPtrInput
   221  	// Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   222  	HomeDirectoryMappings AccessHomeDirectoryMappingArrayInput
   223  	// The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   224  	HomeDirectoryType pulumi.StringPtrInput
   225  	// An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   226  	Policy pulumi.StringPtrInput
   227  	// Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   228  	PosixProfile AccessPosixProfilePtrInput
   229  	// Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   230  	Role pulumi.StringPtrInput
   231  	// The Server ID of the Transfer Server (e.g., `s-12345678`)
   232  	ServerId pulumi.StringInput
   233  }
   234  
   235  func (AccessArgs) ElementType() reflect.Type {
   236  	return reflect.TypeOf((*accessArgs)(nil)).Elem()
   237  }
   238  
   239  type AccessInput interface {
   240  	pulumi.Input
   241  
   242  	ToAccessOutput() AccessOutput
   243  	ToAccessOutputWithContext(ctx context.Context) AccessOutput
   244  }
   245  
   246  func (*Access) ElementType() reflect.Type {
   247  	return reflect.TypeOf((**Access)(nil)).Elem()
   248  }
   249  
   250  func (i *Access) ToAccessOutput() AccessOutput {
   251  	return i.ToAccessOutputWithContext(context.Background())
   252  }
   253  
   254  func (i *Access) ToAccessOutputWithContext(ctx context.Context) AccessOutput {
   255  	return pulumi.ToOutputWithContext(ctx, i).(AccessOutput)
   256  }
   257  
   258  // AccessArrayInput is an input type that accepts AccessArray and AccessArrayOutput values.
   259  // You can construct a concrete instance of `AccessArrayInput` via:
   260  //
   261  //	AccessArray{ AccessArgs{...} }
   262  type AccessArrayInput interface {
   263  	pulumi.Input
   264  
   265  	ToAccessArrayOutput() AccessArrayOutput
   266  	ToAccessArrayOutputWithContext(context.Context) AccessArrayOutput
   267  }
   268  
   269  type AccessArray []AccessInput
   270  
   271  func (AccessArray) ElementType() reflect.Type {
   272  	return reflect.TypeOf((*[]*Access)(nil)).Elem()
   273  }
   274  
   275  func (i AccessArray) ToAccessArrayOutput() AccessArrayOutput {
   276  	return i.ToAccessArrayOutputWithContext(context.Background())
   277  }
   278  
   279  func (i AccessArray) ToAccessArrayOutputWithContext(ctx context.Context) AccessArrayOutput {
   280  	return pulumi.ToOutputWithContext(ctx, i).(AccessArrayOutput)
   281  }
   282  
   283  // AccessMapInput is an input type that accepts AccessMap and AccessMapOutput values.
   284  // You can construct a concrete instance of `AccessMapInput` via:
   285  //
   286  //	AccessMap{ "key": AccessArgs{...} }
   287  type AccessMapInput interface {
   288  	pulumi.Input
   289  
   290  	ToAccessMapOutput() AccessMapOutput
   291  	ToAccessMapOutputWithContext(context.Context) AccessMapOutput
   292  }
   293  
   294  type AccessMap map[string]AccessInput
   295  
   296  func (AccessMap) ElementType() reflect.Type {
   297  	return reflect.TypeOf((*map[string]*Access)(nil)).Elem()
   298  }
   299  
   300  func (i AccessMap) ToAccessMapOutput() AccessMapOutput {
   301  	return i.ToAccessMapOutputWithContext(context.Background())
   302  }
   303  
   304  func (i AccessMap) ToAccessMapOutputWithContext(ctx context.Context) AccessMapOutput {
   305  	return pulumi.ToOutputWithContext(ctx, i).(AccessMapOutput)
   306  }
   307  
   308  type AccessOutput struct{ *pulumi.OutputState }
   309  
   310  func (AccessOutput) ElementType() reflect.Type {
   311  	return reflect.TypeOf((**Access)(nil)).Elem()
   312  }
   313  
   314  func (o AccessOutput) ToAccessOutput() AccessOutput {
   315  	return o
   316  }
   317  
   318  func (o AccessOutput) ToAccessOutputWithContext(ctx context.Context) AccessOutput {
   319  	return o
   320  }
   321  
   322  // The SID of a group in the directory connected to the Transfer Server (e.g., `S-1-1-12-1234567890-123456789-1234567890-1234`)
   323  func (o AccessOutput) ExternalId() pulumi.StringOutput {
   324  	return o.ApplyT(func(v *Access) pulumi.StringOutput { return v.ExternalId }).(pulumi.StringOutput)
   325  }
   326  
   327  // The landing directory (folder) for a user when they log in to the server using their SFTP client.  It should begin with a `/`.  The first item in the path is the name of the home bucket (accessible as `${Transfer:HomeBucket}` in the policy) and the rest is the home directory (accessible as `${Transfer:HomeDirectory}` in the policy). For example, `/example-bucket-1234/username` would set the home bucket to `example-bucket-1234` and the home directory to `username`.
   328  func (o AccessOutput) HomeDirectory() pulumi.StringPtrOutput {
   329  	return o.ApplyT(func(v *Access) pulumi.StringPtrOutput { return v.HomeDirectory }).(pulumi.StringPtrOutput)
   330  }
   331  
   332  // Logical directory mappings that specify what S3 paths and keys should be visible to your user and how you want to make them visible. See Home Directory Mappings below.
   333  func (o AccessOutput) HomeDirectoryMappings() AccessHomeDirectoryMappingArrayOutput {
   334  	return o.ApplyT(func(v *Access) AccessHomeDirectoryMappingArrayOutput { return v.HomeDirectoryMappings }).(AccessHomeDirectoryMappingArrayOutput)
   335  }
   336  
   337  // The type of landing directory (folder) you mapped for your users' home directory. Valid values are `PATH` and `LOGICAL`.
   338  func (o AccessOutput) HomeDirectoryType() pulumi.StringPtrOutput {
   339  	return o.ApplyT(func(v *Access) pulumi.StringPtrOutput { return v.HomeDirectoryType }).(pulumi.StringPtrOutput)
   340  }
   341  
   342  // An IAM JSON policy document that scopes down user access to portions of their Amazon S3 bucket. IAM variables you can use inside this policy include `${Transfer:UserName}`, `${Transfer:HomeDirectory}`, and `${Transfer:HomeBucket}`. These are evaluated on-the-fly when navigating the bucket.
   343  func (o AccessOutput) Policy() pulumi.StringPtrOutput {
   344  	return o.ApplyT(func(v *Access) pulumi.StringPtrOutput { return v.Policy }).(pulumi.StringPtrOutput)
   345  }
   346  
   347  // Specifies the full POSIX identity, including user ID (Uid), group ID (Gid), and any secondary groups IDs (SecondaryGids), that controls your users' access to your Amazon EFS file systems. See Posix Profile below.
   348  func (o AccessOutput) PosixProfile() AccessPosixProfilePtrOutput {
   349  	return o.ApplyT(func(v *Access) AccessPosixProfilePtrOutput { return v.PosixProfile }).(AccessPosixProfilePtrOutput)
   350  }
   351  
   352  // Amazon Resource Name (ARN) of an IAM role that allows the service to controls your user’s access to your Amazon S3 bucket.
   353  func (o AccessOutput) Role() pulumi.StringPtrOutput {
   354  	return o.ApplyT(func(v *Access) pulumi.StringPtrOutput { return v.Role }).(pulumi.StringPtrOutput)
   355  }
   356  
   357  // The Server ID of the Transfer Server (e.g., `s-12345678`)
   358  func (o AccessOutput) ServerId() pulumi.StringOutput {
   359  	return o.ApplyT(func(v *Access) pulumi.StringOutput { return v.ServerId }).(pulumi.StringOutput)
   360  }
   361  
   362  type AccessArrayOutput struct{ *pulumi.OutputState }
   363  
   364  func (AccessArrayOutput) ElementType() reflect.Type {
   365  	return reflect.TypeOf((*[]*Access)(nil)).Elem()
   366  }
   367  
   368  func (o AccessArrayOutput) ToAccessArrayOutput() AccessArrayOutput {
   369  	return o
   370  }
   371  
   372  func (o AccessArrayOutput) ToAccessArrayOutputWithContext(ctx context.Context) AccessArrayOutput {
   373  	return o
   374  }
   375  
   376  func (o AccessArrayOutput) Index(i pulumi.IntInput) AccessOutput {
   377  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *Access {
   378  		return vs[0].([]*Access)[vs[1].(int)]
   379  	}).(AccessOutput)
   380  }
   381  
   382  type AccessMapOutput struct{ *pulumi.OutputState }
   383  
   384  func (AccessMapOutput) ElementType() reflect.Type {
   385  	return reflect.TypeOf((*map[string]*Access)(nil)).Elem()
   386  }
   387  
   388  func (o AccessMapOutput) ToAccessMapOutput() AccessMapOutput {
   389  	return o
   390  }
   391  
   392  func (o AccessMapOutput) ToAccessMapOutputWithContext(ctx context.Context) AccessMapOutput {
   393  	return o
   394  }
   395  
   396  func (o AccessMapOutput) MapIndex(k pulumi.StringInput) AccessOutput {
   397  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *Access {
   398  		return vs[0].(map[string]*Access)[vs[1].(string)]
   399  	}).(AccessOutput)
   400  }
   401  
   402  func init() {
   403  	pulumi.RegisterInputType(reflect.TypeOf((*AccessInput)(nil)).Elem(), &Access{})
   404  	pulumi.RegisterInputType(reflect.TypeOf((*AccessArrayInput)(nil)).Elem(), AccessArray{})
   405  	pulumi.RegisterInputType(reflect.TypeOf((*AccessMapInput)(nil)).Elem(), AccessMap{})
   406  	pulumi.RegisterOutputType(AccessOutput{})
   407  	pulumi.RegisterOutputType(AccessArrayOutput{})
   408  	pulumi.RegisterOutputType(AccessMapOutput{})
   409  }