github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/bucketReplicationConfig.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 s3 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 independent configuration resource for S3 bucket [replication configuration](http://docs.aws.amazon.com/AmazonS3/latest/dev/crr.html). 16 // 17 // > **NOTE:** S3 Buckets only support a single replication configuration. Declaring multiple `s3.BucketReplicationConfig` resources to the same S3 Bucket will cause a perpetual difference in configuration. 18 // 19 // > This resource cannot be used with S3 directory buckets. 20 // 21 // ## Example Usage 22 // 23 // ### Using replication configuration 24 // 25 // <!--Start PulumiCodeChooser --> 26 // ```go 27 // package main 28 // 29 // import ( 30 // 31 // "fmt" 32 // 33 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/iam" 34 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 35 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 36 // 37 // ) 38 // 39 // func main() { 40 // pulumi.Run(func(ctx *pulumi.Context) error { 41 // assumeRole, err := iam.GetPolicyDocument(ctx, &iam.GetPolicyDocumentArgs{ 42 // Statements: []iam.GetPolicyDocumentStatement{ 43 // { 44 // Effect: pulumi.StringRef("Allow"), 45 // Principals: []iam.GetPolicyDocumentStatementPrincipal{ 46 // { 47 // Type: "Service", 48 // Identifiers: []string{ 49 // "s3.amazonaws.com", 50 // }, 51 // }, 52 // }, 53 // Actions: []string{ 54 // "sts:AssumeRole", 55 // }, 56 // }, 57 // }, 58 // }, nil) 59 // if err != nil { 60 // return err 61 // } 62 // replicationRole, err := iam.NewRole(ctx, "replication", &iam.RoleArgs{ 63 // Name: pulumi.String("tf-iam-role-replication-12345"), 64 // AssumeRolePolicy: pulumi.String(assumeRole.Json), 65 // }) 66 // if err != nil { 67 // return err 68 // } 69 // destination, err := s3.NewBucketV2(ctx, "destination", &s3.BucketV2Args{ 70 // Bucket: pulumi.String("tf-test-bucket-destination-12345"), 71 // }) 72 // if err != nil { 73 // return err 74 // } 75 // source, err := s3.NewBucketV2(ctx, "source", &s3.BucketV2Args{ 76 // Bucket: pulumi.String("tf-test-bucket-source-12345"), 77 // }) 78 // if err != nil { 79 // return err 80 // } 81 // replication := iam.GetPolicyDocumentOutput(ctx, iam.GetPolicyDocumentOutputArgs{ 82 // Statements: iam.GetPolicyDocumentStatementArray{ 83 // &iam.GetPolicyDocumentStatementArgs{ 84 // Effect: pulumi.String("Allow"), 85 // Actions: pulumi.StringArray{ 86 // pulumi.String("s3:GetReplicationConfiguration"), 87 // pulumi.String("s3:ListBucket"), 88 // }, 89 // Resources: pulumi.StringArray{ 90 // source.Arn, 91 // }, 92 // }, 93 // &iam.GetPolicyDocumentStatementArgs{ 94 // Effect: pulumi.String("Allow"), 95 // Actions: pulumi.StringArray{ 96 // pulumi.String("s3:GetObjectVersionForReplication"), 97 // pulumi.String("s3:GetObjectVersionAcl"), 98 // pulumi.String("s3:GetObjectVersionTagging"), 99 // }, 100 // Resources: pulumi.StringArray{ 101 // source.Arn.ApplyT(func(arn string) (string, error) { 102 // return fmt.Sprintf("%v/*", arn), nil 103 // }).(pulumi.StringOutput), 104 // }, 105 // }, 106 // &iam.GetPolicyDocumentStatementArgs{ 107 // Effect: pulumi.String("Allow"), 108 // Actions: pulumi.StringArray{ 109 // pulumi.String("s3:ReplicateObject"), 110 // pulumi.String("s3:ReplicateDelete"), 111 // pulumi.String("s3:ReplicateTags"), 112 // }, 113 // Resources: pulumi.StringArray{ 114 // destination.Arn.ApplyT(func(arn string) (string, error) { 115 // return fmt.Sprintf("%v/*", arn), nil 116 // }).(pulumi.StringOutput), 117 // }, 118 // }, 119 // }, 120 // }, nil) 121 // replicationPolicy, err := iam.NewPolicy(ctx, "replication", &iam.PolicyArgs{ 122 // Name: pulumi.String("tf-iam-role-policy-replication-12345"), 123 // Policy: replication.ApplyT(func(replication iam.GetPolicyDocumentResult) (*string, error) { 124 // return &replication.Json, nil 125 // }).(pulumi.StringPtrOutput), 126 // }) 127 // if err != nil { 128 // return err 129 // } 130 // _, err = iam.NewRolePolicyAttachment(ctx, "replication", &iam.RolePolicyAttachmentArgs{ 131 // Role: replicationRole.Name, 132 // PolicyArn: replicationPolicy.Arn, 133 // }) 134 // if err != nil { 135 // return err 136 // } 137 // _, err = s3.NewBucketVersioningV2(ctx, "destination", &s3.BucketVersioningV2Args{ 138 // Bucket: destination.ID(), 139 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 140 // Status: pulumi.String("Enabled"), 141 // }, 142 // }) 143 // if err != nil { 144 // return err 145 // } 146 // _, err = s3.NewBucketAclV2(ctx, "source_bucket_acl", &s3.BucketAclV2Args{ 147 // Bucket: source.ID(), 148 // Acl: pulumi.String("private"), 149 // }) 150 // if err != nil { 151 // return err 152 // } 153 // sourceBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "source", &s3.BucketVersioningV2Args{ 154 // Bucket: source.ID(), 155 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 156 // Status: pulumi.String("Enabled"), 157 // }, 158 // }) 159 // if err != nil { 160 // return err 161 // } 162 // _, err = s3.NewBucketReplicationConfig(ctx, "replication", &s3.BucketReplicationConfigArgs{ 163 // Role: replicationRole.Arn, 164 // Bucket: source.ID(), 165 // Rules: s3.BucketReplicationConfigRuleArray{ 166 // &s3.BucketReplicationConfigRuleArgs{ 167 // Id: pulumi.String("foobar"), 168 // Filter: &s3.BucketReplicationConfigRuleFilterArgs{ 169 // Prefix: pulumi.String("foo"), 170 // }, 171 // Status: pulumi.String("Enabled"), 172 // Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ 173 // Bucket: destination.Arn, 174 // StorageClass: pulumi.String("STANDARD"), 175 // }, 176 // }, 177 // }, 178 // }, pulumi.DependsOn([]pulumi.Resource{ 179 // sourceBucketVersioningV2, 180 // })) 181 // if err != nil { 182 // return err 183 // } 184 // return nil 185 // }) 186 // } 187 // 188 // ``` 189 // <!--End PulumiCodeChooser --> 190 // 191 // ### Bi-Directional Replication 192 // 193 // <!--Start PulumiCodeChooser --> 194 // ```go 195 // package main 196 // 197 // import ( 198 // 199 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 200 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 201 // 202 // ) 203 // 204 // func main() { 205 // pulumi.Run(func(ctx *pulumi.Context) error { 206 // // ... other configuration ... 207 // east, err := s3.NewBucketV2(ctx, "east", &s3.BucketV2Args{ 208 // Bucket: pulumi.String("tf-test-bucket-east-12345"), 209 // }) 210 // if err != nil { 211 // return err 212 // } 213 // eastBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "east", &s3.BucketVersioningV2Args{ 214 // Bucket: east.ID(), 215 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 216 // Status: pulumi.String("Enabled"), 217 // }, 218 // }) 219 // if err != nil { 220 // return err 221 // } 222 // west, err := s3.NewBucketV2(ctx, "west", &s3.BucketV2Args{ 223 // Bucket: pulumi.String("tf-test-bucket-west-12345"), 224 // }) 225 // if err != nil { 226 // return err 227 // } 228 // westBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "west", &s3.BucketVersioningV2Args{ 229 // Bucket: west.ID(), 230 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 231 // Status: pulumi.String("Enabled"), 232 // }, 233 // }) 234 // if err != nil { 235 // return err 236 // } 237 // _, err = s3.NewBucketReplicationConfig(ctx, "east_to_west", &s3.BucketReplicationConfigArgs{ 238 // Role: pulumi.Any(eastReplication.Arn), 239 // Bucket: east.ID(), 240 // Rules: s3.BucketReplicationConfigRuleArray{ 241 // &s3.BucketReplicationConfigRuleArgs{ 242 // Id: pulumi.String("foobar"), 243 // Filter: &s3.BucketReplicationConfigRuleFilterArgs{ 244 // Prefix: pulumi.String("foo"), 245 // }, 246 // Status: pulumi.String("Enabled"), 247 // Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ 248 // Bucket: west.Arn, 249 // StorageClass: pulumi.String("STANDARD"), 250 // }, 251 // }, 252 // }, 253 // }, pulumi.DependsOn([]pulumi.Resource{ 254 // eastBucketVersioningV2, 255 // })) 256 // if err != nil { 257 // return err 258 // } 259 // _, err = s3.NewBucketReplicationConfig(ctx, "west_to_east", &s3.BucketReplicationConfigArgs{ 260 // Role: pulumi.Any(westReplication.Arn), 261 // Bucket: west.ID(), 262 // Rules: s3.BucketReplicationConfigRuleArray{ 263 // &s3.BucketReplicationConfigRuleArgs{ 264 // Id: pulumi.String("foobar"), 265 // Filter: &s3.BucketReplicationConfigRuleFilterArgs{ 266 // Prefix: pulumi.String("foo"), 267 // }, 268 // Status: pulumi.String("Enabled"), 269 // Destination: &s3.BucketReplicationConfigRuleDestinationArgs{ 270 // Bucket: east.Arn, 271 // StorageClass: pulumi.String("STANDARD"), 272 // }, 273 // }, 274 // }, 275 // }, pulumi.DependsOn([]pulumi.Resource{ 276 // westBucketVersioningV2, 277 // })) 278 // if err != nil { 279 // return err 280 // } 281 // return nil 282 // }) 283 // } 284 // 285 // ``` 286 // <!--End PulumiCodeChooser --> 287 // 288 // ## Import 289 // 290 // Using `pulumi import`, import S3 bucket replication configuration using the `bucket`. For example: 291 // 292 // ```sh 293 // $ pulumi import aws:s3/bucketReplicationConfig:BucketReplicationConfig replication bucket-name 294 // ``` 295 type BucketReplicationConfig struct { 296 pulumi.CustomResourceState 297 298 // Name of the source S3 bucket you want Amazon S3 to monitor. 299 Bucket pulumi.StringOutput `pulumi:"bucket"` 300 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 301 Role pulumi.StringOutput `pulumi:"role"` 302 // List of configuration blocks describing the rules managing the replication. See below. 303 Rules BucketReplicationConfigRuleArrayOutput `pulumi:"rules"` 304 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 305 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 306 Token pulumi.StringPtrOutput `pulumi:"token"` 307 } 308 309 // NewBucketReplicationConfig registers a new resource with the given unique name, arguments, and options. 310 func NewBucketReplicationConfig(ctx *pulumi.Context, 311 name string, args *BucketReplicationConfigArgs, opts ...pulumi.ResourceOption) (*BucketReplicationConfig, error) { 312 if args == nil { 313 return nil, errors.New("missing one or more required arguments") 314 } 315 316 if args.Bucket == nil { 317 return nil, errors.New("invalid value for required argument 'Bucket'") 318 } 319 if args.Role == nil { 320 return nil, errors.New("invalid value for required argument 'Role'") 321 } 322 if args.Rules == nil { 323 return nil, errors.New("invalid value for required argument 'Rules'") 324 } 325 if args.Token != nil { 326 args.Token = pulumi.ToSecret(args.Token).(pulumi.StringPtrInput) 327 } 328 secrets := pulumi.AdditionalSecretOutputs([]string{ 329 "token", 330 }) 331 opts = append(opts, secrets) 332 opts = internal.PkgResourceDefaultOpts(opts) 333 var resource BucketReplicationConfig 334 err := ctx.RegisterResource("aws:s3/bucketReplicationConfig:BucketReplicationConfig", name, args, &resource, opts...) 335 if err != nil { 336 return nil, err 337 } 338 return &resource, nil 339 } 340 341 // GetBucketReplicationConfig gets an existing BucketReplicationConfig resource's state with the given name, ID, and optional 342 // state properties that are used to uniquely qualify the lookup (nil if not required). 343 func GetBucketReplicationConfig(ctx *pulumi.Context, 344 name string, id pulumi.IDInput, state *BucketReplicationConfigState, opts ...pulumi.ResourceOption) (*BucketReplicationConfig, error) { 345 var resource BucketReplicationConfig 346 err := ctx.ReadResource("aws:s3/bucketReplicationConfig:BucketReplicationConfig", name, id, state, &resource, opts...) 347 if err != nil { 348 return nil, err 349 } 350 return &resource, nil 351 } 352 353 // Input properties used for looking up and filtering BucketReplicationConfig resources. 354 type bucketReplicationConfigState struct { 355 // Name of the source S3 bucket you want Amazon S3 to monitor. 356 Bucket *string `pulumi:"bucket"` 357 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 358 Role *string `pulumi:"role"` 359 // List of configuration blocks describing the rules managing the replication. See below. 360 Rules []BucketReplicationConfigRule `pulumi:"rules"` 361 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 362 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 363 Token *string `pulumi:"token"` 364 } 365 366 type BucketReplicationConfigState struct { 367 // Name of the source S3 bucket you want Amazon S3 to monitor. 368 Bucket pulumi.StringPtrInput 369 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 370 Role pulumi.StringPtrInput 371 // List of configuration blocks describing the rules managing the replication. See below. 372 Rules BucketReplicationConfigRuleArrayInput 373 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 374 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 375 Token pulumi.StringPtrInput 376 } 377 378 func (BucketReplicationConfigState) ElementType() reflect.Type { 379 return reflect.TypeOf((*bucketReplicationConfigState)(nil)).Elem() 380 } 381 382 type bucketReplicationConfigArgs struct { 383 // Name of the source S3 bucket you want Amazon S3 to monitor. 384 Bucket string `pulumi:"bucket"` 385 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 386 Role string `pulumi:"role"` 387 // List of configuration blocks describing the rules managing the replication. See below. 388 Rules []BucketReplicationConfigRule `pulumi:"rules"` 389 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 390 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 391 Token *string `pulumi:"token"` 392 } 393 394 // The set of arguments for constructing a BucketReplicationConfig resource. 395 type BucketReplicationConfigArgs struct { 396 // Name of the source S3 bucket you want Amazon S3 to monitor. 397 Bucket pulumi.StringInput 398 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 399 Role pulumi.StringInput 400 // List of configuration blocks describing the rules managing the replication. See below. 401 Rules BucketReplicationConfigRuleArrayInput 402 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 403 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 404 Token pulumi.StringPtrInput 405 } 406 407 func (BucketReplicationConfigArgs) ElementType() reflect.Type { 408 return reflect.TypeOf((*bucketReplicationConfigArgs)(nil)).Elem() 409 } 410 411 type BucketReplicationConfigInput interface { 412 pulumi.Input 413 414 ToBucketReplicationConfigOutput() BucketReplicationConfigOutput 415 ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput 416 } 417 418 func (*BucketReplicationConfig) ElementType() reflect.Type { 419 return reflect.TypeOf((**BucketReplicationConfig)(nil)).Elem() 420 } 421 422 func (i *BucketReplicationConfig) ToBucketReplicationConfigOutput() BucketReplicationConfigOutput { 423 return i.ToBucketReplicationConfigOutputWithContext(context.Background()) 424 } 425 426 func (i *BucketReplicationConfig) ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput { 427 return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigOutput) 428 } 429 430 // BucketReplicationConfigArrayInput is an input type that accepts BucketReplicationConfigArray and BucketReplicationConfigArrayOutput values. 431 // You can construct a concrete instance of `BucketReplicationConfigArrayInput` via: 432 // 433 // BucketReplicationConfigArray{ BucketReplicationConfigArgs{...} } 434 type BucketReplicationConfigArrayInput interface { 435 pulumi.Input 436 437 ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput 438 ToBucketReplicationConfigArrayOutputWithContext(context.Context) BucketReplicationConfigArrayOutput 439 } 440 441 type BucketReplicationConfigArray []BucketReplicationConfigInput 442 443 func (BucketReplicationConfigArray) ElementType() reflect.Type { 444 return reflect.TypeOf((*[]*BucketReplicationConfig)(nil)).Elem() 445 } 446 447 func (i BucketReplicationConfigArray) ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput { 448 return i.ToBucketReplicationConfigArrayOutputWithContext(context.Background()) 449 } 450 451 func (i BucketReplicationConfigArray) ToBucketReplicationConfigArrayOutputWithContext(ctx context.Context) BucketReplicationConfigArrayOutput { 452 return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigArrayOutput) 453 } 454 455 // BucketReplicationConfigMapInput is an input type that accepts BucketReplicationConfigMap and BucketReplicationConfigMapOutput values. 456 // You can construct a concrete instance of `BucketReplicationConfigMapInput` via: 457 // 458 // BucketReplicationConfigMap{ "key": BucketReplicationConfigArgs{...} } 459 type BucketReplicationConfigMapInput interface { 460 pulumi.Input 461 462 ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput 463 ToBucketReplicationConfigMapOutputWithContext(context.Context) BucketReplicationConfigMapOutput 464 } 465 466 type BucketReplicationConfigMap map[string]BucketReplicationConfigInput 467 468 func (BucketReplicationConfigMap) ElementType() reflect.Type { 469 return reflect.TypeOf((*map[string]*BucketReplicationConfig)(nil)).Elem() 470 } 471 472 func (i BucketReplicationConfigMap) ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput { 473 return i.ToBucketReplicationConfigMapOutputWithContext(context.Background()) 474 } 475 476 func (i BucketReplicationConfigMap) ToBucketReplicationConfigMapOutputWithContext(ctx context.Context) BucketReplicationConfigMapOutput { 477 return pulumi.ToOutputWithContext(ctx, i).(BucketReplicationConfigMapOutput) 478 } 479 480 type BucketReplicationConfigOutput struct{ *pulumi.OutputState } 481 482 func (BucketReplicationConfigOutput) ElementType() reflect.Type { 483 return reflect.TypeOf((**BucketReplicationConfig)(nil)).Elem() 484 } 485 486 func (o BucketReplicationConfigOutput) ToBucketReplicationConfigOutput() BucketReplicationConfigOutput { 487 return o 488 } 489 490 func (o BucketReplicationConfigOutput) ToBucketReplicationConfigOutputWithContext(ctx context.Context) BucketReplicationConfigOutput { 491 return o 492 } 493 494 // Name of the source S3 bucket you want Amazon S3 to monitor. 495 func (o BucketReplicationConfigOutput) Bucket() pulumi.StringOutput { 496 return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) 497 } 498 499 // ARN of the IAM role for Amazon S3 to assume when replicating the objects. 500 func (o BucketReplicationConfigOutput) Role() pulumi.StringOutput { 501 return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringOutput { return v.Role }).(pulumi.StringOutput) 502 } 503 504 // List of configuration blocks describing the rules managing the replication. See below. 505 func (o BucketReplicationConfigOutput) Rules() BucketReplicationConfigRuleArrayOutput { 506 return o.ApplyT(func(v *BucketReplicationConfig) BucketReplicationConfigRuleArrayOutput { return v.Rules }).(BucketReplicationConfigRuleArrayOutput) 507 } 508 509 // Token to allow replication to be enabled on an Object Lock-enabled bucket. You must contact AWS support for the bucket's "Object Lock token". 510 // For more details, see [Using S3 Object Lock with replication](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock-managing.html#object-lock-managing-replication). 511 func (o BucketReplicationConfigOutput) Token() pulumi.StringPtrOutput { 512 return o.ApplyT(func(v *BucketReplicationConfig) pulumi.StringPtrOutput { return v.Token }).(pulumi.StringPtrOutput) 513 } 514 515 type BucketReplicationConfigArrayOutput struct{ *pulumi.OutputState } 516 517 func (BucketReplicationConfigArrayOutput) ElementType() reflect.Type { 518 return reflect.TypeOf((*[]*BucketReplicationConfig)(nil)).Elem() 519 } 520 521 func (o BucketReplicationConfigArrayOutput) ToBucketReplicationConfigArrayOutput() BucketReplicationConfigArrayOutput { 522 return o 523 } 524 525 func (o BucketReplicationConfigArrayOutput) ToBucketReplicationConfigArrayOutputWithContext(ctx context.Context) BucketReplicationConfigArrayOutput { 526 return o 527 } 528 529 func (o BucketReplicationConfigArrayOutput) Index(i pulumi.IntInput) BucketReplicationConfigOutput { 530 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketReplicationConfig { 531 return vs[0].([]*BucketReplicationConfig)[vs[1].(int)] 532 }).(BucketReplicationConfigOutput) 533 } 534 535 type BucketReplicationConfigMapOutput struct{ *pulumi.OutputState } 536 537 func (BucketReplicationConfigMapOutput) ElementType() reflect.Type { 538 return reflect.TypeOf((*map[string]*BucketReplicationConfig)(nil)).Elem() 539 } 540 541 func (o BucketReplicationConfigMapOutput) ToBucketReplicationConfigMapOutput() BucketReplicationConfigMapOutput { 542 return o 543 } 544 545 func (o BucketReplicationConfigMapOutput) ToBucketReplicationConfigMapOutputWithContext(ctx context.Context) BucketReplicationConfigMapOutput { 546 return o 547 } 548 549 func (o BucketReplicationConfigMapOutput) MapIndex(k pulumi.StringInput) BucketReplicationConfigOutput { 550 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketReplicationConfig { 551 return vs[0].(map[string]*BucketReplicationConfig)[vs[1].(string)] 552 }).(BucketReplicationConfigOutput) 553 } 554 555 func init() { 556 pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigInput)(nil)).Elem(), &BucketReplicationConfig{}) 557 pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigArrayInput)(nil)).Elem(), BucketReplicationConfigArray{}) 558 pulumi.RegisterInputType(reflect.TypeOf((*BucketReplicationConfigMapInput)(nil)).Elem(), BucketReplicationConfigMap{}) 559 pulumi.RegisterOutputType(BucketReplicationConfigOutput{}) 560 pulumi.RegisterOutputType(BucketReplicationConfigArrayOutput{}) 561 pulumi.RegisterOutputType(BucketReplicationConfigMapOutput{}) 562 }