github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/s3/bucketVersioningV2.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 a resource for controlling versioning on an S3 bucket. 16 // Deleting this resource will either suspend versioning on the associated S3 bucket or 17 // simply remove the resource from state if the associated S3 bucket is unversioned. 18 // 19 // For more information, see [How S3 versioning works](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html). 20 // 21 // > **NOTE:** If you are enabling versioning on the bucket for the first time, AWS recommends that you wait for 15 minutes after enabling versioning before issuing write operations (PUT or DELETE) on objects in the bucket. 22 // 23 // > This resource cannot be used with S3 directory buckets. 24 // 25 // ## Example Usage 26 // 27 // ### With Versioning Enabled 28 // 29 // <!--Start PulumiCodeChooser --> 30 // ```go 31 // package main 32 // 33 // import ( 34 // 35 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 36 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 37 // 38 // ) 39 // 40 // func main() { 41 // pulumi.Run(func(ctx *pulumi.Context) error { 42 // example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ 43 // Bucket: pulumi.String("example-bucket"), 44 // }) 45 // if err != nil { 46 // return err 47 // } 48 // _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ 49 // Bucket: example.ID(), 50 // Acl: pulumi.String("private"), 51 // }) 52 // if err != nil { 53 // return err 54 // } 55 // _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{ 56 // Bucket: example.ID(), 57 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 58 // Status: pulumi.String("Enabled"), 59 // }, 60 // }) 61 // if err != nil { 62 // return err 63 // } 64 // return nil 65 // }) 66 // } 67 // 68 // ``` 69 // <!--End PulumiCodeChooser --> 70 // 71 // ### With Versioning Disabled 72 // 73 // <!--Start PulumiCodeChooser --> 74 // ```go 75 // package main 76 // 77 // import ( 78 // 79 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 80 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 81 // 82 // ) 83 // 84 // func main() { 85 // pulumi.Run(func(ctx *pulumi.Context) error { 86 // example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ 87 // Bucket: pulumi.String("example-bucket"), 88 // }) 89 // if err != nil { 90 // return err 91 // } 92 // _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{ 93 // Bucket: example.ID(), 94 // Acl: pulumi.String("private"), 95 // }) 96 // if err != nil { 97 // return err 98 // } 99 // _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{ 100 // Bucket: example.ID(), 101 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 102 // Status: pulumi.String("Disabled"), 103 // }, 104 // }) 105 // if err != nil { 106 // return err 107 // } 108 // return nil 109 // }) 110 // } 111 // 112 // ``` 113 // <!--End PulumiCodeChooser --> 114 // 115 // ### Object Dependency On Versioning 116 // 117 // When you create an object whose `versionId` you need and an `s3.BucketVersioningV2` resource in the same configuration, you are more likely to have success by ensuring the `s3Object` depends either implicitly (see below) or explicitly (i.e., using `dependsOn = [aws_s3_bucket_versioning.example]`) on the `s3.BucketVersioningV2` resource. 118 // 119 // > **NOTE:** For critical and/or production S3 objects, do not create a bucket, enable versioning, and create an object in the bucket within the same configuration. Doing so will not allow the AWS-recommended 15 minutes between enabling versioning and writing to the bucket. 120 // 121 // This example shows the `aws_s3_object.example` depending implicitly on the versioning resource through the reference to `aws_s3_bucket_versioning.example.bucket` to define `bucket`: 122 // 123 // <!--Start PulumiCodeChooser --> 124 // ```go 125 // package main 126 // 127 // import ( 128 // 129 // "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3" 130 // "github.com/pulumi/pulumi/sdk/v3/go/pulumi" 131 // 132 // ) 133 // 134 // func main() { 135 // pulumi.Run(func(ctx *pulumi.Context) error { 136 // example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{ 137 // Bucket: pulumi.String("yotto"), 138 // }) 139 // if err != nil { 140 // return err 141 // } 142 // exampleBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{ 143 // Bucket: example.ID(), 144 // VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{ 145 // Status: pulumi.String("Enabled"), 146 // }, 147 // }) 148 // if err != nil { 149 // return err 150 // } 151 // _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{ 152 // Bucket: exampleBucketVersioningV2.ID(), 153 // Key: pulumi.String("droeloe"), 154 // Source: pulumi.NewFileAsset("example.txt"), 155 // }) 156 // if err != nil { 157 // return err 158 // } 159 // return nil 160 // }) 161 // } 162 // 163 // ``` 164 // <!--End PulumiCodeChooser --> 165 // 166 // ## Import 167 // 168 // 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 (`,`): 169 // 170 // __Using `pulumi import` to import__ S3 bucket versioning using the `bucket` or using the `bucket` and `expected_bucket_owner` separated by a comma (`,`). For example: 171 // 172 // If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`: 173 // 174 // ```sh 175 // $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name 176 // ``` 177 // 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 (`,`): 178 // 179 // ```sh 180 // $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name,123456789012 181 // ``` 182 type BucketVersioningV2 struct { 183 pulumi.CustomResourceState 184 185 // Name of the S3 bucket. 186 Bucket pulumi.StringOutput `pulumi:"bucket"` 187 // Account ID of the expected bucket owner. 188 ExpectedBucketOwner pulumi.StringPtrOutput `pulumi:"expectedBucketOwner"` 189 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 190 Mfa pulumi.StringPtrOutput `pulumi:"mfa"` 191 // Configuration block for the versioning parameters. See below. 192 VersioningConfiguration BucketVersioningV2VersioningConfigurationOutput `pulumi:"versioningConfiguration"` 193 } 194 195 // NewBucketVersioningV2 registers a new resource with the given unique name, arguments, and options. 196 func NewBucketVersioningV2(ctx *pulumi.Context, 197 name string, args *BucketVersioningV2Args, opts ...pulumi.ResourceOption) (*BucketVersioningV2, error) { 198 if args == nil { 199 return nil, errors.New("missing one or more required arguments") 200 } 201 202 if args.Bucket == nil { 203 return nil, errors.New("invalid value for required argument 'Bucket'") 204 } 205 if args.VersioningConfiguration == nil { 206 return nil, errors.New("invalid value for required argument 'VersioningConfiguration'") 207 } 208 opts = internal.PkgResourceDefaultOpts(opts) 209 var resource BucketVersioningV2 210 err := ctx.RegisterResource("aws:s3/bucketVersioningV2:BucketVersioningV2", name, args, &resource, opts...) 211 if err != nil { 212 return nil, err 213 } 214 return &resource, nil 215 } 216 217 // GetBucketVersioningV2 gets an existing BucketVersioningV2 resource's state with the given name, ID, and optional 218 // state properties that are used to uniquely qualify the lookup (nil if not required). 219 func GetBucketVersioningV2(ctx *pulumi.Context, 220 name string, id pulumi.IDInput, state *BucketVersioningV2State, opts ...pulumi.ResourceOption) (*BucketVersioningV2, error) { 221 var resource BucketVersioningV2 222 err := ctx.ReadResource("aws:s3/bucketVersioningV2:BucketVersioningV2", name, id, state, &resource, opts...) 223 if err != nil { 224 return nil, err 225 } 226 return &resource, nil 227 } 228 229 // Input properties used for looking up and filtering BucketVersioningV2 resources. 230 type bucketVersioningV2State struct { 231 // Name of the S3 bucket. 232 Bucket *string `pulumi:"bucket"` 233 // Account ID of the expected bucket owner. 234 ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` 235 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 236 Mfa *string `pulumi:"mfa"` 237 // Configuration block for the versioning parameters. See below. 238 VersioningConfiguration *BucketVersioningV2VersioningConfiguration `pulumi:"versioningConfiguration"` 239 } 240 241 type BucketVersioningV2State struct { 242 // Name of the S3 bucket. 243 Bucket pulumi.StringPtrInput 244 // Account ID of the expected bucket owner. 245 ExpectedBucketOwner pulumi.StringPtrInput 246 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 247 Mfa pulumi.StringPtrInput 248 // Configuration block for the versioning parameters. See below. 249 VersioningConfiguration BucketVersioningV2VersioningConfigurationPtrInput 250 } 251 252 func (BucketVersioningV2State) ElementType() reflect.Type { 253 return reflect.TypeOf((*bucketVersioningV2State)(nil)).Elem() 254 } 255 256 type bucketVersioningV2Args struct { 257 // Name of the S3 bucket. 258 Bucket string `pulumi:"bucket"` 259 // Account ID of the expected bucket owner. 260 ExpectedBucketOwner *string `pulumi:"expectedBucketOwner"` 261 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 262 Mfa *string `pulumi:"mfa"` 263 // Configuration block for the versioning parameters. See below. 264 VersioningConfiguration BucketVersioningV2VersioningConfiguration `pulumi:"versioningConfiguration"` 265 } 266 267 // The set of arguments for constructing a BucketVersioningV2 resource. 268 type BucketVersioningV2Args struct { 269 // Name of the S3 bucket. 270 Bucket pulumi.StringInput 271 // Account ID of the expected bucket owner. 272 ExpectedBucketOwner pulumi.StringPtrInput 273 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 274 Mfa pulumi.StringPtrInput 275 // Configuration block for the versioning parameters. See below. 276 VersioningConfiguration BucketVersioningV2VersioningConfigurationInput 277 } 278 279 func (BucketVersioningV2Args) ElementType() reflect.Type { 280 return reflect.TypeOf((*bucketVersioningV2Args)(nil)).Elem() 281 } 282 283 type BucketVersioningV2Input interface { 284 pulumi.Input 285 286 ToBucketVersioningV2Output() BucketVersioningV2Output 287 ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output 288 } 289 290 func (*BucketVersioningV2) ElementType() reflect.Type { 291 return reflect.TypeOf((**BucketVersioningV2)(nil)).Elem() 292 } 293 294 func (i *BucketVersioningV2) ToBucketVersioningV2Output() BucketVersioningV2Output { 295 return i.ToBucketVersioningV2OutputWithContext(context.Background()) 296 } 297 298 func (i *BucketVersioningV2) ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output { 299 return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2Output) 300 } 301 302 // BucketVersioningV2ArrayInput is an input type that accepts BucketVersioningV2Array and BucketVersioningV2ArrayOutput values. 303 // You can construct a concrete instance of `BucketVersioningV2ArrayInput` via: 304 // 305 // BucketVersioningV2Array{ BucketVersioningV2Args{...} } 306 type BucketVersioningV2ArrayInput interface { 307 pulumi.Input 308 309 ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput 310 ToBucketVersioningV2ArrayOutputWithContext(context.Context) BucketVersioningV2ArrayOutput 311 } 312 313 type BucketVersioningV2Array []BucketVersioningV2Input 314 315 func (BucketVersioningV2Array) ElementType() reflect.Type { 316 return reflect.TypeOf((*[]*BucketVersioningV2)(nil)).Elem() 317 } 318 319 func (i BucketVersioningV2Array) ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput { 320 return i.ToBucketVersioningV2ArrayOutputWithContext(context.Background()) 321 } 322 323 func (i BucketVersioningV2Array) ToBucketVersioningV2ArrayOutputWithContext(ctx context.Context) BucketVersioningV2ArrayOutput { 324 return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2ArrayOutput) 325 } 326 327 // BucketVersioningV2MapInput is an input type that accepts BucketVersioningV2Map and BucketVersioningV2MapOutput values. 328 // You can construct a concrete instance of `BucketVersioningV2MapInput` via: 329 // 330 // BucketVersioningV2Map{ "key": BucketVersioningV2Args{...} } 331 type BucketVersioningV2MapInput interface { 332 pulumi.Input 333 334 ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput 335 ToBucketVersioningV2MapOutputWithContext(context.Context) BucketVersioningV2MapOutput 336 } 337 338 type BucketVersioningV2Map map[string]BucketVersioningV2Input 339 340 func (BucketVersioningV2Map) ElementType() reflect.Type { 341 return reflect.TypeOf((*map[string]*BucketVersioningV2)(nil)).Elem() 342 } 343 344 func (i BucketVersioningV2Map) ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput { 345 return i.ToBucketVersioningV2MapOutputWithContext(context.Background()) 346 } 347 348 func (i BucketVersioningV2Map) ToBucketVersioningV2MapOutputWithContext(ctx context.Context) BucketVersioningV2MapOutput { 349 return pulumi.ToOutputWithContext(ctx, i).(BucketVersioningV2MapOutput) 350 } 351 352 type BucketVersioningV2Output struct{ *pulumi.OutputState } 353 354 func (BucketVersioningV2Output) ElementType() reflect.Type { 355 return reflect.TypeOf((**BucketVersioningV2)(nil)).Elem() 356 } 357 358 func (o BucketVersioningV2Output) ToBucketVersioningV2Output() BucketVersioningV2Output { 359 return o 360 } 361 362 func (o BucketVersioningV2Output) ToBucketVersioningV2OutputWithContext(ctx context.Context) BucketVersioningV2Output { 363 return o 364 } 365 366 // Name of the S3 bucket. 367 func (o BucketVersioningV2Output) Bucket() pulumi.StringOutput { 368 return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringOutput { return v.Bucket }).(pulumi.StringOutput) 369 } 370 371 // Account ID of the expected bucket owner. 372 func (o BucketVersioningV2Output) ExpectedBucketOwner() pulumi.StringPtrOutput { 373 return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringPtrOutput { return v.ExpectedBucketOwner }).(pulumi.StringPtrOutput) 374 } 375 376 // Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device. 377 func (o BucketVersioningV2Output) Mfa() pulumi.StringPtrOutput { 378 return o.ApplyT(func(v *BucketVersioningV2) pulumi.StringPtrOutput { return v.Mfa }).(pulumi.StringPtrOutput) 379 } 380 381 // Configuration block for the versioning parameters. See below. 382 func (o BucketVersioningV2Output) VersioningConfiguration() BucketVersioningV2VersioningConfigurationOutput { 383 return o.ApplyT(func(v *BucketVersioningV2) BucketVersioningV2VersioningConfigurationOutput { 384 return v.VersioningConfiguration 385 }).(BucketVersioningV2VersioningConfigurationOutput) 386 } 387 388 type BucketVersioningV2ArrayOutput struct{ *pulumi.OutputState } 389 390 func (BucketVersioningV2ArrayOutput) ElementType() reflect.Type { 391 return reflect.TypeOf((*[]*BucketVersioningV2)(nil)).Elem() 392 } 393 394 func (o BucketVersioningV2ArrayOutput) ToBucketVersioningV2ArrayOutput() BucketVersioningV2ArrayOutput { 395 return o 396 } 397 398 func (o BucketVersioningV2ArrayOutput) ToBucketVersioningV2ArrayOutputWithContext(ctx context.Context) BucketVersioningV2ArrayOutput { 399 return o 400 } 401 402 func (o BucketVersioningV2ArrayOutput) Index(i pulumi.IntInput) BucketVersioningV2Output { 403 return pulumi.All(o, i).ApplyT(func(vs []interface{}) *BucketVersioningV2 { 404 return vs[0].([]*BucketVersioningV2)[vs[1].(int)] 405 }).(BucketVersioningV2Output) 406 } 407 408 type BucketVersioningV2MapOutput struct{ *pulumi.OutputState } 409 410 func (BucketVersioningV2MapOutput) ElementType() reflect.Type { 411 return reflect.TypeOf((*map[string]*BucketVersioningV2)(nil)).Elem() 412 } 413 414 func (o BucketVersioningV2MapOutput) ToBucketVersioningV2MapOutput() BucketVersioningV2MapOutput { 415 return o 416 } 417 418 func (o BucketVersioningV2MapOutput) ToBucketVersioningV2MapOutputWithContext(ctx context.Context) BucketVersioningV2MapOutput { 419 return o 420 } 421 422 func (o BucketVersioningV2MapOutput) MapIndex(k pulumi.StringInput) BucketVersioningV2Output { 423 return pulumi.All(o, k).ApplyT(func(vs []interface{}) *BucketVersioningV2 { 424 return vs[0].(map[string]*BucketVersioningV2)[vs[1].(string)] 425 }).(BucketVersioningV2Output) 426 } 427 428 func init() { 429 pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2Input)(nil)).Elem(), &BucketVersioningV2{}) 430 pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2ArrayInput)(nil)).Elem(), BucketVersioningV2Array{}) 431 pulumi.RegisterInputType(reflect.TypeOf((*BucketVersioningV2MapInput)(nil)).Elem(), BucketVersioningV2Map{}) 432 pulumi.RegisterOutputType(BucketVersioningV2Output{}) 433 pulumi.RegisterOutputType(BucketVersioningV2ArrayOutput{}) 434 pulumi.RegisterOutputType(BucketVersioningV2MapOutput{}) 435 }