github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/bucketLifecycleConfigurationV2.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 [lifecycle configuration](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lifecycle-mgmt.html). 16 // 17 // An S3 Lifecycle configuration consists of one or more Lifecycle rules. Each rule consists of the following: 18 // 19 // * Rule metadata (`id` and `status`) 20 // * Filter identifying objects to which the rule applies 21 // * One or more transition or expiration actions 22 // 23 // For more information see the Amazon S3 User Guide on [`Lifecycle Configuration Elements`](https://docs.aws.amazon.com/AmazonS3/latest/userguide/intro-lifecycle-rules.html). 24 // 25 // > **NOTE:** S3 Buckets only support a single lifecycle configuration. Declaring multiple `s3.BucketLifecycleConfigurationV2` resources to the same S3 Bucket will cause a perpetual difference in configuration. 26 // 27 // > **NOTE:** Lifecycle configurations may take some time to fully propagate to all AWS S3 systems. 28 // Running Pulumi operations shortly after creating a lifecycle configuration may result in changes that affect configuration idempotence. 29 // See the Amazon S3 User Guide on [setting lifecycle configuration on a bucket](https://docs.aws.amazon.com/AmazonS3/latest/userguide/how-to-set-lifecycle-configuration-intro.html). 30 // 31 // > This resource cannot be used with S3 directory buckets. 32 // 33 // ## Example Usage 34 // 35 // ### With neither a filter nor prefix specified 36 // 37 // The Lifecycle rule applies to a subset of objects based on the key name prefix (`""`). 38 // 39 // This configuration is intended to replicate the default behavior of the `lifecycleRule` 40 // parameter in the AWS Provider `s3.BucketV2` resource prior to `v4.0`. 41 // 42 // <!--Start PulumiCodeChooser --> 43 // ```go 44 // package main 45 // 46 // import ( 47 // 48 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 49 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 50 // 51 // ) 52 // 53 // func main() { 54 // pulumi.Run(func(ctx *pulumi.Context) error { 55 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 56 // Bucket: pulumi.Any(bucket.Id), 57 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 58 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 59 // Id: pulumi.String("rule-1"), 60 // Status: pulumi.String("Enabled"), 61 // }, 62 // }, 63 // }) 64 // if err != nil { 65 // return err 66 // } 67 // return nil 68 // }) 69 // } 70 // 71 // ``` 72 // <!--End PulumiCodeChooser --> 73 // 74 // ### Specifying an empty filter 75 // 76 // The Lifecycle rule applies to all objects in the bucket. 77 // 78 // <!--Start PulumiCodeChooser --> 79 // ```go 80 // package main 81 // 82 // import ( 83 // 84 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 85 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 86 // 87 // ) 88 // 89 // func main() { 90 // pulumi.Run(func(ctx *pulumi.Context) error { 91 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 92 // Bucket: pulumi.Any(bucket.Id), 93 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 94 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 95 // Id: pulumi.String("rule-1"), 96 // Filter: nil, 97 // Status: pulumi.String("Enabled"), 98 // }, 99 // }, 100 // }) 101 // if err != nil { 102 // return err 103 // } 104 // return nil 105 // }) 106 // } 107 // 108 // ``` 109 // <!--End PulumiCodeChooser --> 110 // 111 // ### Specifying a filter using key prefixes 112 // 113 // The Lifecycle rule applies to a subset of objects based on the key name prefix (`logs/`). 114 // 115 // <!--Start PulumiCodeChooser --> 116 // ```go 117 // package main 118 // 119 // import ( 120 // 121 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 122 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 123 // 124 // ) 125 // 126 // func main() { 127 // pulumi.Run(func(ctx *pulumi.Context) error { 128 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 129 // Bucket: pulumi.Any(bucket.Id), 130 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 131 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 132 // Id: pulumi.String("rule-1"), 133 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 134 // Prefix: pulumi.String("logs/"), 135 // }, 136 // Status: pulumi.String("Enabled"), 137 // }, 138 // }, 139 // }) 140 // if err != nil { 141 // return err 142 // } 143 // return nil 144 // }) 145 // } 146 // 147 // ``` 148 // <!--End PulumiCodeChooser --> 149 // 150 // If you want to apply a Lifecycle action to a subset of objects based on different key name prefixes, specify separate rules. 151 // 152 // <!--Start PulumiCodeChooser --> 153 // ```go 154 // package main 155 // 156 // import ( 157 // 158 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 159 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 160 // 161 // ) 162 // 163 // func main() { 164 // pulumi.Run(func(ctx *pulumi.Context) error { 165 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 166 // Bucket: pulumi.Any(bucket.Id), 167 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 168 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 169 // Id: pulumi.String("rule-1"), 170 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 171 // Prefix: pulumi.String("logs/"), 172 // }, 173 // Status: pulumi.String("Enabled"), 174 // }, 175 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 176 // Id: pulumi.String("rule-2"), 177 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 178 // Prefix: pulumi.String("tmp/"), 179 // }, 180 // Status: pulumi.String("Enabled"), 181 // }, 182 // }, 183 // }) 184 // if err != nil { 185 // return err 186 // } 187 // return nil 188 // }) 189 // } 190 // 191 // ``` 192 // <!--End PulumiCodeChooser --> 193 // 194 // ### Specifying a filter based on an object tag 195 // 196 // The Lifecycle rule specifies a filter based on a tag key and value. The rule then applies only to a subset of objects with the specific tag. 197 // 198 // <!--Start PulumiCodeChooser --> 199 // ```go 200 // package main 201 // 202 // import ( 203 // 204 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 205 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 206 // 207 // ) 208 // 209 // func main() { 210 // pulumi.Run(func(ctx *pulumi.Context) error { 211 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 212 // Bucket: pulumi.Any(bucket.Id), 213 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 214 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 215 // Id: pulumi.String("rule-1"), 216 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 217 // Tag: &s3.BucketLifecycleConfigurationV2RuleFilterTagArgs{ 218 // Key: pulumi.String("Name"), 219 // Value: pulumi.String("Staging"), 220 // }, 221 // }, 222 // Status: pulumi.String("Enabled"), 223 // }, 224 // }, 225 // }) 226 // if err != nil { 227 // return err 228 // } 229 // return nil 230 // }) 231 // } 232 // 233 // ``` 234 // <!--End PulumiCodeChooser --> 235 // 236 // ### Specifying a filter based on multiple tags 237 // 238 // The Lifecycle rule directs Amazon S3 to perform lifecycle actions on objects with two tags (with the specific tag keys and values). Notice `tags` is wrapped in the `and` configuration block. 239 // 240 // <!--Start PulumiCodeChooser --> 241 // ```go 242 // package main 243 // 244 // import ( 245 // 246 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 247 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 248 // 249 // ) 250 // 251 // func main() { 252 // pulumi.Run(func(ctx *pulumi.Context) error { 253 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 254 // Bucket: pulumi.Any(bucket.Id), 255 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 256 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 257 // Id: pulumi.String("rule-1"), 258 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 259 // And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ 260 // Tags: pulumi.StringMap{ 261 // "Key1": pulumi.String("Value1"), 262 // "Key2": pulumi.String("Value2"), 263 // }, 264 // }, 265 // }, 266 // Status: pulumi.String("Enabled"), 267 // }, 268 // }, 269 // }) 270 // if err != nil { 271 // return err 272 // } 273 // return nil 274 // }) 275 // } 276 // 277 // ``` 278 // <!--End PulumiCodeChooser --> 279 // 280 // ### Specifying a filter based on both prefix and one or more tags 281 // 282 // The Lifecycle rule directs Amazon S3 to perform lifecycle actions on objects with the specified prefix and two tags (with the specific tag keys and values). Notice both `prefix` and `tags` are wrapped in the `and` configuration block. 283 // 284 // <!--Start PulumiCodeChooser --> 285 // ```go 286 // package main 287 // 288 // import ( 289 // 290 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 291 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 292 // 293 // ) 294 // 295 // func main() { 296 // pulumi.Run(func(ctx *pulumi.Context) error { 297 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 298 // Bucket: pulumi.Any(bucket.Id), 299 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 300 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 301 // Id: pulumi.String("rule-1"), 302 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 303 // And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ 304 // Prefix: pulumi.String("logs/"), 305 // Tags: pulumi.StringMap{ 306 // "Key1": pulumi.String("Value1"), 307 // "Key2": pulumi.String("Value2"), 308 // }, 309 // }, 310 // }, 311 // Status: pulumi.String("Enabled"), 312 // }, 313 // }, 314 // }) 315 // if err != nil { 316 // return err 317 // } 318 // return nil 319 // }) 320 // } 321 // 322 // ``` 323 // <!--End PulumiCodeChooser --> 324 // 325 // ### Specifying a filter based on object size 326 // 327 // Object size values are in bytes. Maximum filter size is 5TB. Some storage classes have minimum object size limitations, for more information, see [Comparing the Amazon S3 storage classes](https://docs.aws.amazon.com/AmazonS3/latest/userguide/storage-class-intro.html#sc-compare). 328 // 329 // <!--Start PulumiCodeChooser --> 330 // ```go 331 // package main 332 // 333 // import ( 334 // 335 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 336 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 337 // 338 // ) 339 // 340 // func main() { 341 // pulumi.Run(func(ctx *pulumi.Context) error { 342 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 343 // Bucket: pulumi.Any(bucket.Id), 344 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 345 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 346 // Id: pulumi.String("rule-1"), 347 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 348 // ObjectSizeGreaterThan: pulumi.String("500"), 349 // }, 350 // Status: pulumi.String("Enabled"), 351 // }, 352 // }, 353 // }) 354 // if err != nil { 355 // return err 356 // } 357 // return nil 358 // }) 359 // } 360 // 361 // ``` 362 // <!--End PulumiCodeChooser --> 363 // 364 // ### Specifying a filter based on object size range and prefix 365 // 366 // The `objectSizeGreaterThan` must be less than the `objectSizeLessThan`. Notice both the object size range and prefix are wrapped in the `and` configuration block. 367 // 368 // <!--Start PulumiCodeChooser --> 369 // ```go 370 // package main 371 // 372 // import ( 373 // 374 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 375 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 376 // 377 // ) 378 // 379 // func main() { 380 // pulumi.Run(func(ctx *pulumi.Context) error { 381 // _, err := s3.NewBucketLifecycleConfigurationV2(ctx, "example", &s3.BucketLifecycleConfigurationV2Args{ 382 // Bucket: pulumi.Any(bucket.Id), 383 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 384 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 385 // Id: pulumi.String("rule-1"), 386 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 387 // And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ 388 // Prefix: pulumi.String("logs/"), 389 // ObjectSizeGreaterThan: pulumi.Int(500), 390 // ObjectSizeLessThan: pulumi.Int(64000), 391 // }, 392 // }, 393 // Status: pulumi.String("Enabled"), 394 // }, 395 // }, 396 // }) 397 // if err != nil { 398 // return err 399 // } 400 // return nil 401 // }) 402 // } 403 // 404 // ``` 405 // <!--End PulumiCodeChooser --> 406 // 407 // ### Creating a Lifecycle Configuration for a bucket with versioning 408 // 409 // <!--Start PulumiCodeChooser --> 410 // ```go 411 // package main 412 // 413 // import ( 414 // 415 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 416 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 417 // 418 // ) 419 // 420 // func main() { 421 // pulumi.Run(func(ctx *pulumi.Context) error { 422 // bucket, err := s3.NewBucketV2(ctx, "bucket", &s3.BucketV2Args{ 423 // Bucket: pulumi.String("my-bucket"), 424 // }) 425 // if err != nil { 426 // return err 427 // } 428 // _, err = s3.NewBucketAclV2(ctx, "bucket_acl", &s3.BucketAclV2Args{ 429 // Bucket: bucket.ID(), 430 // Acl: pulumi.String("private"), 431 // }) 432 // if err != nil { 433 // return err 434 // } 435 // _, err = s3.NewBucketLifecycleConfigurationV2(ctx, "bucket-config", &s3.BucketLifecycleConfigurationV2Args{ 436 // Bucket: bucket.ID(), 437 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 438 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 439 // Id: pulumi.String("log"), 440 // Expiration: &s3.BucketLifecycleConfigurationV2RuleExpirationArgs{ 441 // Days: pulumi.Int(90), 442 // }, 443 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 444 // And: &s3.BucketLifecycleConfigurationV2RuleFilterAndArgs{ 445 // Prefix: pulumi.String("log/"), 446 // Tags: pulumi.StringMap{ 447 // "rule": pulumi.String("log"), 448 // "autoclean": pulumi.String("true"), 449 // }, 450 // }, 451 // }, 452 // Status: pulumi.String("Enabled"), 453 // Transitions: s3.BucketLifecycleConfigurationV2RuleTransitionArray{ 454 // &s3.BucketLifecycleConfigurationV2RuleTransitionArgs{ 455 // Days: pulumi.Int(30), 456 // StorageClass: pulumi.String("STANDARD_IA"), 457 // }, 458 // &s3.BucketLifecycleConfigurationV2RuleTransitionArgs{ 459 // Days: pulumi.Int(60), 460 // StorageClass: pulumi.String("GLACIER"), 461 // }, 462 // }, 463 // }, 464 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 465 // Id: pulumi.String("tmp"), 466 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 467 // Prefix: pulumi.String("tmp/"), 468 // }, 469 // Expiration: &s3.BucketLifecycleConfigurationV2RuleExpirationArgs{ 470 // Date: pulumi.String("2023-01-13T00:00:00Z"), 471 // }, 472 // Status: pulumi.String("Enabled"), 473 // }, 474 // }, 475 // }) 476 // if err != nil { 477 // return err 478 // } 479 // versioningBucket, err := s3.NewBucketV2(ctx, "versioning_bucket", &s3.BucketV2Args{ 480 // Bucket: pulumi.String("my-versioning-bucket"), 481 // }) 482 // if err != nil { 483 // return err 484 // } 485 // _, err = s3.NewBucketAclV2(ctx, "versioning_bucket_acl", &s3.BucketAclV2Args{ 486 // Bucket: versioningBucket.ID(), 487 // Acl: pulumi.String("private"), 488 // }) 489 // if err != nil { 490 // return err 491 // } 492 // versioning, err := s3.NewBucketVersioningV2(ctx, "versioning", &s3.BucketVersioningV2Args{ 493 // Bucket: versioningBucket.ID(), 494 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 495 // Status: pulumi.String("Enabled"), 496 // }, 497 // }) 498 // if err != nil { 499 // return err 500 // } 501 // _, err = s3.NewBucketLifecycleConfigurationV2(ctx, "versioning-bucket-config", &s3.BucketLifecycleConfigurationV2Args{ 502 // Bucket: versioningBucket.ID(), 503 // Rules: s3.BucketLifecycleConfigurationV2RuleArray{ 504 // &s3.BucketLifecycleConfigurationV2RuleArgs{ 505 // Id: pulumi.String("config"), 506 // Filter: &s3.BucketLifecycleConfigurationV2RuleFilterArgs{ 507 // Prefix: pulumi.String("config/"), 508 // }, 509 // NoncurrentVersionExpiration: &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionExpirationArgs{ 510 // NoncurrentDays: pulumi.Int(90), 511 // }, 512 // NoncurrentVersionTransitions: s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArray{ 513 // &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{ 514 // NoncurrentDays: pulumi.Int(30), 515 // StorageClass: pulumi.String("STANDARD_IA"), 516 // }, 517 // &s3.BucketLifecycleConfigurationV2RuleNoncurrentVersionTransitionArgs{ 518 // NoncurrentDays: pulumi.Int(60), 519 // StorageClass: pulumi.String("GLACIER"), 520 // }, 521 // }, 522 // Status: pulumi.String("Enabled"), 523 // }, 524 // }, 525 // }, pulumi.DependsOn([]pulumi.Resource{ 526 // versioning, 527 // })) 528 // if err != nil { 529 // return err 530 // } 531 // return nil 532 // }) 533 // } 534 // 535 // ``` 536 // <!--End PulumiCodeChooser --> 537 // 538 // ## Import 539 // 540 // If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): 541 // 542 // __Using `pulumi import` to import__ S3 bucket lifecycle configuration using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: 543 // 544 // If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: 545 // 546 // ```sh 547 // $ pulumi import aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2 example bucket-name 548 // ``` 549 // If the owner (account ID) of the source bucket differs from the account used to configure the AWS Provider, import using the `bucket` and `expected_bucket_owner` separated by a comma (`,`): 550 // 551 // ```sh 552 // $ pulumi import aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2 example bucket-name,123456789012 553 // ``` 554 type BucketLifecycleConfigurationV2 struct { 555 pulumi.CustomResourceState 556 557 // Name of the source S3 bucket you want Amazon S3 to monitor. 558 Bucket pulumi.StringOutput `pulumi:"bucket"` 559 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 560 ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` 561 // List of configuration blocks describing the rules managing the replication. See below. 562 Rules BucketLifecycleConfigurationV2RuleArrayOutput `pulumi:"rules"` 563 } 564 565 // NewBucketLifecycleConfigurationV2 registers a new resource with the given unique name, arguments, and options. 566 func NewBucketLifecycleConfigurationV2(ctx *pulumi.Context, 567 name string, args *BucketLifecycleConfigurationV2Args, opts ...pulumi.ResourceOption) (*BucketLifecycleConfigurationV2, error) { 568 if args == nil { 569 return nil, errors.New("missing one or more required arguments") 570 } 571 572 if args.Bucket == nil { 573 return nil, errors.New("invalid value for required argument 'Bucket'") 574 } 575 if args.Rules == nil { 576 return nil, errors.New("invalid value for required argument 'Rules'") 577 } 578 opts = internal.PkgResourceDefaultOpts(opts) 579 var resource BucketLifecycleConfigurationV2 580 err := ctx.RegisterResource("aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2", name, args, &resource, opts...) 581 if err != nil { 582 return nil, err 583 } 584 return &resource, nil 585 } 586 587 // GetBucketLifecycleConfigurationV2 gets an existing BucketLifecycleConfigurationV2 resource's state with the given name, ID, and optional 588 // state properties that are used to uniquely qualify the lookup (nil if not required). 589 func GetBucketLifecycleConfigurationV2(ctx *pulumi.Context, 590 name string, id pulumi.IDInput, state *BucketLifecycleConfigurationV2State, opts ...pulumi.ResourceOption) (*BucketLifecycleConfigurationV2, error) { 591 var resource BucketLifecycleConfigurationV2 592 err := ctx.ReadResource("aws:s3/bucketLifecycleConfigurationV2:BucketLifecycleConfigurationV2", name, id, state, &resource, opts...) 593 if err != nil { 594 return nil, err 595 } 596 return &resource, nil 597 } 598 599 // Input properties used for looking up and filtering BucketLifecycleConfigurationV2 resources. 600 type bucketLifecycleConfigurationV2State struct { 601 // Name of the source S3 bucket you want Amazon S3 to monitor. 602 Bucket *string `pulumi:"bucket"` 603 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 604 ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` 605 // List of configuration blocks describing the rules managing the replication. See below. 606 Rules []BucketLifecycleConfigurationV2Rule `pulumi:"rules"` 607 } 608 609 type BucketLifecycleConfigurationV2State struct { 610 // Name of the source S3 bucket you want Amazon S3 to monitor. 611 Bucket pulumi.StringPtrInput 612 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 613 ExpectedBucketOwner pulumi.StringPtrInput 614 // List of configuration blocks describing the rules managing the replication. See below. 615 Rules BucketLifecycleConfigurationV2RuleArrayInput 616 } 617 618 func (BucketLifecycleConfigurationV2State) ElementType() reflect.Type { 619 return reflect.TypeOf((*bucketLifecycleConfigurationV2State)(nil)).Elem() 620 } 621 622 type bucketLifecycleConfigurationV2Args struct { 623 // Name of the source S3 bucket you want Amazon S3 to monitor. 624 Bucket string `pulumi:"bucket"` 625 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 626 ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` 627 // List of configuration blocks describing the rules managing the replication. See below. 628 Rules []BucketLifecycleConfigurationV2Rule `pulumi:"rules"` 629 } 630 631 // The set of arguments for constructing a BucketLifecycleConfigurationV2 resource. 632 type BucketLifecycleConfigurationV2Args struct { 633 // Name of the source S3 bucket you want Amazon S3 to monitor. 634 Bucket pulumi.StringInput 635 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 636 ExpectedBucketOwner pulumi.StringPtrInput 637 // List of configuration blocks describing the rules managing the replication. See below. 638 Rules BucketLifecycleConfigurationV2RuleArrayInput 639 } 640 641 func (BucketLifecycleConfigurationV2Args) ElementType() reflect.Type { 642 return reflect.TypeOf((*bucketLifecycleConfigurationV2Args)(nil)).Elem() 643 } 644 645 type BucketLifecycleConfigurationV2Input interface { 646 pulumi.Input 647 648 ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output 649 ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output 650 } 651 652 func (*BucketLifecycleConfigurationV2) ElementType() reflect.Type { 653 return reflect.TypeOf((**BucketLifecycleConfigurationV2)(nil)).Elem() 654 } 655 656 func (i *BucketLifecycleConfigurationV2) ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output { 657 return i.ToBucketLifecycleConfigurationV2OutputWithContext(context.Background()) 658 } 659 660 func (i *BucketLifecycleConfigurationV2) ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output { 661 return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2Output) 662 } 663 664 // BucketLifecycleConfigurationV2ArrayInput is an input type that accepts BucketLifecycleConfigurationV2Array and BucketLifecycleConfigurationV2ArrayOutput values. 665 // You can construct a concrete instance of `BucketLifecycleConfigurationV2ArrayInput` via: 666 // 667 // BucketLifecycleConfigurationV2Array{ BucketLifecycleConfigurationV2Args{...} } 668 type BucketLifecycleConfigurationV2ArrayInput interface { 669 pulumi.Input 670 671 ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput 672 ToBucketLifecycleConfigurationV2ArrayOutputWithContext(context.Context) BucketLifecycleConfigurationV2ArrayOutput 673 } 674 675 type BucketLifecycleConfigurationV2Array []BucketLifecycleConfigurationV2Input 676 677 func (BucketLifecycleConfigurationV2Array) ElementType() reflect.Type { 678 return reflect.TypeOf((*[]*BucketLifecycleConfigurationV2)(nil)).Elem() 679 } 680 681 func (i BucketLifecycleConfigurationV2Array) ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput { 682 return i.ToBucketLifecycleConfigurationV2ArrayOutputWithContext(context.Background()) 683 } 684 685 func (i BucketLifecycleConfigurationV2Array) ToBucketLifecycleConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2ArrayOutput { 686 return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2ArrayOutput) 687 } 688 689 // BucketLifecycleConfigurationV2MapInput is an input type that accepts BucketLifecycleConfigurationV2Map and BucketLifecycleConfigurationV2MapOutput values. 690 // You can construct a concrete instance of `BucketLifecycleConfigurationV2MapInput` via: 691 // 692 // BucketLifecycleConfigurationV2Map{ "key": BucketLifecycleConfigurationV2Args{...} } 693 type BucketLifecycleConfigurationV2MapInput interface { 694 pulumi.Input 695 696 ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput 697 ToBucketLifecycleConfigurationV2MapOutputWithContext(context.Context) BucketLifecycleConfigurationV2MapOutput 698 } 699 700 type BucketLifecycleConfigurationV2Map map[string]BucketLifecycleConfigurationV2Input 701 702 func (BucketLifecycleConfigurationV2Map) ElementType() reflect.Type { 703 return reflect.TypeOf((*map[string]*BucketLifecycleConfigurationV2)(nil)).Elem() 704 } 705 706 func (i BucketLifecycleConfigurationV2Map) ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput { 707 return i.ToBucketLifecycleConfigurationV2MapOutputWithContext(context.Background()) 708 } 709 710 func (i BucketLifecycleConfigurationV2Map) ToBucketLifecycleConfigurationV2MapOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2MapOutput { 711 return pulumi.ToOutputWithContext(ctx, i).(BucketLifecycleConfigurationV2MapOutput) 712 } 713 714 type BucketLifecycleConfigurationV2Output struct{ *pulumi.OutputState } 715 716 func (BucketLifecycleConfigurationV2Output) ElementType() reflect.Type { 717 return reflect.TypeOf((**BucketLifecycleConfigurationV2)(nil)).Elem() 718 } 719 720 func (o BucketLifecycleConfigurationV2Output) ToBucketLifecycleConfigurationV2Output() BucketLifecycleConfigurationV2Output { 721 return o 722 } 723 724 func (o BucketLifecycleConfigurationV2Output) ToBucketLifecycleConfigurationV2OutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2Output { 725 return o 726 } 727 728 // Name of the source S3 bucket you want Amazon S3 to monitor. 729 func (o BucketLifecycleConfigurationV2Output) Bucket() pulumi.StringOutput { 730 return o.ApplyT(func(v *BucketLifecycleConfigurationV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) 731 } 732 733 // Account ID of the expected bucket owner. If the bucket is owned by a different account, the request will fail with an HTTP 403 (Access Denied) error. 734 func (o BucketLifecycleConfigurationV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { 735 return o.ApplyT(func(v *BucketLifecycleConfigurationV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) 736 } 737 738 // List of configuration blocks describing the rules managing the replication. See below. 739 func (o BucketLifecycleConfigurationV2Output) Rules() BucketLifecycleConfigurationV2RuleArrayOutput { 740 return o.ApplyT(func(v *BucketLifecycleConfigurationV2) BucketLifecycleConfigurationV2RuleArrayOutput { return v.Rules }).(BucketLifecycleConfigurationV2RuleArrayOutput) 741 } 742 743 type BucketLifecycleConfigurationV2ArrayOutput struct{ *pulumi.OutputState } 744 745 func (BucketLifecycleConfigurationV2ArrayOutput) ElementType() reflect.Type { 746 return reflect.TypeOf((*[]*BucketLifecycleConfigurationV2)(nil)).Elem() 747 } 748 749 func (o BucketLifecycleConfigurationV2ArrayOutput) ToBucketLifecycleConfigurationV2ArrayOutput() BucketLifecycleConfigurationV2ArrayOutput { 750 return o 751 } 752 753 func (o BucketLifecycleConfigurationV2ArrayOutput) ToBucketLifecycleConfigurationV2ArrayOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2ArrayOutput { 754 return o 755 } 756 757 func (o BucketLifecycleConfigurationV2ArrayOutput) Index(i pulumi.IntInput) BucketLifecycleConfigurationV2Output { 758 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketLifecycleConfigurationV2 { 759 return vs[0].([]*BucketLifecycleConfigurationV2)[vs[1].(int)] 760 }).(BucketLifecycleConfigurationV2Output) 761 } 762 763 type BucketLifecycleConfigurationV2MapOutput struct{ *pulumi.OutputState } 764 765 func (BucketLifecycleConfigurationV2MapOutput) ElementType() reflect.Type { 766 return reflect.TypeOf((*map[string]*BucketLifecycleConfigurationV2)(nil)).Elem() 767 } 768 769 func (o BucketLifecycleConfigurationV2MapOutput) ToBucketLifecycleConfigurationV2MapOutput() BucketLifecycleConfigurationV2MapOutput { 770 return o 771 } 772 773 func (o BucketLifecycleConfigurationV2MapOutput) ToBucketLifecycleConfigurationV2MapOutputWithContext(ctx context.Context) BucketLifecycleConfigurationV2MapOutput { 774 return o 775 } 776 777 func (o BucketLifecycleConfigurationV2MapOutput) MapIndex(k pulumi.StringInput) BucketLifecycleConfigurationV2Output { 778 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketLifecycleConfigurationV2 { 779 return vs[0].(map[string]*BucketLifecycleConfigurationV2)[vs[1].(string)] 780 }).(BucketLifecycleConfigurationV2Output) 781 } 782 783 func init() { 784 pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2Input)(nil)).Elem(), &BucketLifecycleConfigurationV2{}) 785 pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2ArrayInput)(nil)).Elem(), BucketLifecycleConfigurationV2Array{}) 786 pulumi.RegisterInputType(reflect.TypeOf((*BucketLifecycleConfigurationV2MapInput)(nil)).Elem(), BucketLifecycleConfigurationV2Map{}) 787 pulumi.RegisterOutputType(BucketLifecycleConfigurationV2Output{}) 788 pulumi.RegisterOutputType(BucketLifecycleConfigurationV2ArrayOutput{}) 789 pulumi.RegisterOutputType(BucketLifecycleConfigurationV2MapOutput{}) 790 }