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 }