
com.pulumi.aws.s3.kotlin.BucketVersioningV2.kt Maven / Gradle / Ivy
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.aws.s3.kotlin
import com.pulumi.aws.s3.kotlin.outputs.BucketVersioningV2VersioningConfiguration
import com.pulumi.aws.s3.kotlin.outputs.BucketVersioningV2VersioningConfiguration.Companion.toKotlin
import com.pulumi.core.Output
import com.pulumi.kotlin.KotlinCustomResource
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.ResourceMapper
import com.pulumi.kotlin.options.CustomResourceOptions
import com.pulumi.kotlin.options.CustomResourceOptionsBuilder
import com.pulumi.resources.Resource
import kotlin.Boolean
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
/**
* Builder for [BucketVersioningV2].
*/
@PulumiTagMarker
public class BucketVersioningV2ResourceBuilder internal constructor() {
public var name: String? = null
public var args: BucketVersioningV2Args = BucketVersioningV2Args()
public var opts: CustomResourceOptions = CustomResourceOptions()
/**
* @param name The _unique_ name of the resulting resource.
*/
public fun name(`value`: String) {
this.name = value
}
/**
* @param block The arguments to use to populate this resource's properties.
*/
public suspend fun args(block: suspend BucketVersioningV2ArgsBuilder.() -> Unit) {
val builder = BucketVersioningV2ArgsBuilder()
block(builder)
this.args = builder.build()
}
/**
* @param block A bag of options that control this resource's behavior.
*/
public suspend fun opts(block: suspend CustomResourceOptionsBuilder.() -> Unit) {
this.opts = com.pulumi.kotlin.options.CustomResourceOptions.opts(block)
}
internal fun build(): BucketVersioningV2 {
val builtJavaResource = com.pulumi.aws.s3.BucketVersioningV2(
this.name,
this.args.toJava(),
this.opts.toJava(),
)
return BucketVersioningV2(builtJavaResource)
}
}
/**
* Provides a resource for controlling versioning on an S3 bucket.
* Deleting this resource will either suspend versioning on the associated S3 bucket or
* simply remove the resource from state if the associated S3 bucket is unversioned.
* For more information, see [How S3 versioning works](https://docs.aws.amazon.com/AmazonS3/latest/userguide/manage-versioning-examples.html).
* > **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.
* > This resource cannot be used with S3 directory buckets.
* ## Example Usage
* ### With Versioning Enabled
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
* const example = new aws.s3.BucketV2("example", {bucket: "example-bucket"});
* const exampleBucketAclV2 = new aws.s3.BucketAclV2("example", {
* bucket: example.id,
* acl: "private",
* });
* const versioningExample = new aws.s3.BucketVersioningV2("versioning_example", {
* bucket: example.id,
* versioningConfiguration: {
* status: "Enabled",
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_aws as aws
* example = aws.s3.BucketV2("example", bucket="example-bucket")
* example_bucket_acl_v2 = aws.s3.BucketAclV2("example",
* bucket=example.id,
* acl="private")
* versioning_example = aws.s3.BucketVersioningV2("versioning_example",
* bucket=example.id,
* versioning_configuration={
* "status": "Enabled",
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Aws = Pulumi.Aws;
* return await Deployment.RunAsync(() =>
* {
* var example = new Aws.S3.BucketV2("example", new()
* {
* Bucket = "example-bucket",
* });
* var exampleBucketAclV2 = new Aws.S3.BucketAclV2("example", new()
* {
* Bucket = example.Id,
* Acl = "private",
* });
* var versioningExample = new Aws.S3.BucketVersioningV2("versioning_example", new()
* {
* Bucket = example.Id,
* VersioningConfiguration = new Aws.S3.Inputs.BucketVersioningV2VersioningConfigurationArgs
* {
* Status = "Enabled",
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
* Bucket: pulumi.String("example-bucket"),
* })
* if err != nil {
* return err
* }
* _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{
* Bucket: example.ID(),
* Acl: pulumi.String("private"),
* })
* if err != nil {
* return err
* }
* _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{
* Bucket: example.ID(),
* VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{
* Status: pulumi.String("Enabled"),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.aws.s3.BucketV2;
* import com.pulumi.aws.s3.BucketV2Args;
* import com.pulumi.aws.s3.BucketAclV2;
* import com.pulumi.aws.s3.BucketAclV2Args;
* import com.pulumi.aws.s3.BucketVersioningV2;
* import com.pulumi.aws.s3.BucketVersioningV2Args;
* import com.pulumi.aws.s3.inputs.BucketVersioningV2VersioningConfigurationArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new BucketV2("example", BucketV2Args.builder()
* .bucket("example-bucket")
* .build());
* var exampleBucketAclV2 = new BucketAclV2("exampleBucketAclV2", BucketAclV2Args.builder()
* .bucket(example.id())
* .acl("private")
* .build());
* var versioningExample = new BucketVersioningV2("versioningExample", BucketVersioningV2Args.builder()
* .bucket(example.id())
* .versioningConfiguration(BucketVersioningV2VersioningConfigurationArgs.builder()
* .status("Enabled")
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: aws:s3:BucketV2
* properties:
* bucket: example-bucket
* exampleBucketAclV2:
* type: aws:s3:BucketAclV2
* name: example
* properties:
* bucket: ${example.id}
* acl: private
* versioningExample:
* type: aws:s3:BucketVersioningV2
* name: versioning_example
* properties:
* bucket: ${example.id}
* versioningConfiguration:
* status: Enabled
* ```
*
* ### With Versioning Disabled
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
* const example = new aws.s3.BucketV2("example", {bucket: "example-bucket"});
* const exampleBucketAclV2 = new aws.s3.BucketAclV2("example", {
* bucket: example.id,
* acl: "private",
* });
* const versioningExample = new aws.s3.BucketVersioningV2("versioning_example", {
* bucket: example.id,
* versioningConfiguration: {
* status: "Disabled",
* },
* });
* ```
* ```python
* import pulumi
* import pulumi_aws as aws
* example = aws.s3.BucketV2("example", bucket="example-bucket")
* example_bucket_acl_v2 = aws.s3.BucketAclV2("example",
* bucket=example.id,
* acl="private")
* versioning_example = aws.s3.BucketVersioningV2("versioning_example",
* bucket=example.id,
* versioning_configuration={
* "status": "Disabled",
* })
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Aws = Pulumi.Aws;
* return await Deployment.RunAsync(() =>
* {
* var example = new Aws.S3.BucketV2("example", new()
* {
* Bucket = "example-bucket",
* });
* var exampleBucketAclV2 = new Aws.S3.BucketAclV2("example", new()
* {
* Bucket = example.Id,
* Acl = "private",
* });
* var versioningExample = new Aws.S3.BucketVersioningV2("versioning_example", new()
* {
* Bucket = example.Id,
* VersioningConfiguration = new Aws.S3.Inputs.BucketVersioningV2VersioningConfigurationArgs
* {
* Status = "Disabled",
* },
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
* Bucket: pulumi.String("example-bucket"),
* })
* if err != nil {
* return err
* }
* _, err = s3.NewBucketAclV2(ctx, "example", &s3.BucketAclV2Args{
* Bucket: example.ID(),
* Acl: pulumi.String("private"),
* })
* if err != nil {
* return err
* }
* _, err = s3.NewBucketVersioningV2(ctx, "versioning_example", &s3.BucketVersioningV2Args{
* Bucket: example.ID(),
* VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{
* Status: pulumi.String("Disabled"),
* },
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.aws.s3.BucketV2;
* import com.pulumi.aws.s3.BucketV2Args;
* import com.pulumi.aws.s3.BucketAclV2;
* import com.pulumi.aws.s3.BucketAclV2Args;
* import com.pulumi.aws.s3.BucketVersioningV2;
* import com.pulumi.aws.s3.BucketVersioningV2Args;
* import com.pulumi.aws.s3.inputs.BucketVersioningV2VersioningConfigurationArgs;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new BucketV2("example", BucketV2Args.builder()
* .bucket("example-bucket")
* .build());
* var exampleBucketAclV2 = new BucketAclV2("exampleBucketAclV2", BucketAclV2Args.builder()
* .bucket(example.id())
* .acl("private")
* .build());
* var versioningExample = new BucketVersioningV2("versioningExample", BucketVersioningV2Args.builder()
* .bucket(example.id())
* .versioningConfiguration(BucketVersioningV2VersioningConfigurationArgs.builder()
* .status("Disabled")
* .build())
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: aws:s3:BucketV2
* properties:
* bucket: example-bucket
* exampleBucketAclV2:
* type: aws:s3:BucketAclV2
* name: example
* properties:
* bucket: ${example.id}
* acl: private
* versioningExample:
* type: aws:s3:BucketVersioningV2
* name: versioning_example
* properties:
* bucket: ${example.id}
* versioningConfiguration:
* status: Disabled
* ```
*
* ### Object Dependency On Versioning
* When you create an object whose `version_id` you need and an `aws.s3.BucketVersioningV2` resource in the same configuration, you are more likely to have success by ensuring the `s3_object` depends either implicitly (see below) or explicitly (i.e., using `depends_on = [aws_s3_bucket_versioning.example]`) on the `aws.s3.BucketVersioningV2` resource.
* > **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.
* 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`:
*
* ```typescript
* import * as pulumi from "@pulumi/pulumi";
* import * as aws from "@pulumi/aws";
* const example = new aws.s3.BucketV2("example", {bucket: "yotto"});
* const exampleBucketVersioningV2 = new aws.s3.BucketVersioningV2("example", {
* bucket: example.id,
* versioningConfiguration: {
* status: "Enabled",
* },
* });
* const exampleBucketObjectv2 = new aws.s3.BucketObjectv2("example", {
* bucket: exampleBucketVersioningV2.id,
* key: "droeloe",
* source: new pulumi.asset.FileAsset("example.txt"),
* });
* ```
* ```python
* import pulumi
* import pulumi_aws as aws
* example = aws.s3.BucketV2("example", bucket="yotto")
* example_bucket_versioning_v2 = aws.s3.BucketVersioningV2("example",
* bucket=example.id,
* versioning_configuration={
* "status": "Enabled",
* })
* example_bucket_objectv2 = aws.s3.BucketObjectv2("example",
* bucket=example_bucket_versioning_v2.id,
* key="droeloe",
* source=pulumi.FileAsset("example.txt"))
* ```
* ```csharp
* using System.Collections.Generic;
* using System.Linq;
* using Pulumi;
* using Aws = Pulumi.Aws;
* return await Deployment.RunAsync(() =>
* {
* var example = new Aws.S3.BucketV2("example", new()
* {
* Bucket = "yotto",
* });
* var exampleBucketVersioningV2 = new Aws.S3.BucketVersioningV2("example", new()
* {
* Bucket = example.Id,
* VersioningConfiguration = new Aws.S3.Inputs.BucketVersioningV2VersioningConfigurationArgs
* {
* Status = "Enabled",
* },
* });
* var exampleBucketObjectv2 = new Aws.S3.BucketObjectv2("example", new()
* {
* Bucket = exampleBucketVersioningV2.Id,
* Key = "droeloe",
* Source = new FileAsset("example.txt"),
* });
* });
* ```
* ```go
* package main
* import (
* "github.com/pulumi/pulumi-aws/sdk/v6/go/aws/s3"
* "github.com/pulumi/pulumi/sdk/v3/go/pulumi"
* )
* func main() {
* pulumi.Run(func(ctx *pulumi.Context) error {
* example, err := s3.NewBucketV2(ctx, "example", &s3.BucketV2Args{
* Bucket: pulumi.String("yotto"),
* })
* if err != nil {
* return err
* }
* exampleBucketVersioningV2, err := s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{
* Bucket: example.ID(),
* VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{
* Status: pulumi.String("Enabled"),
* },
* })
* if err != nil {
* return err
* }
* _, err = s3.NewBucketObjectv2(ctx, "example", &s3.BucketObjectv2Args{
* Bucket: exampleBucketVersioningV2.ID(),
* Key: pulumi.String("droeloe"),
* Source: pulumi.NewFileAsset("example.txt"),
* })
* if err != nil {
* return err
* }
* return nil
* })
* }
* ```
* ```java
* package generated_program;
* import com.pulumi.Context;
* import com.pulumi.Pulumi;
* import com.pulumi.core.Output;
* import com.pulumi.aws.s3.BucketV2;
* import com.pulumi.aws.s3.BucketV2Args;
* import com.pulumi.aws.s3.BucketVersioningV2;
* import com.pulumi.aws.s3.BucketVersioningV2Args;
* import com.pulumi.aws.s3.inputs.BucketVersioningV2VersioningConfigurationArgs;
* import com.pulumi.aws.s3.BucketObjectv2;
* import com.pulumi.aws.s3.BucketObjectv2Args;
* import com.pulumi.asset.FileAsset;
* import java.util.List;
* import java.util.ArrayList;
* import java.util.Map;
* import java.io.File;
* import java.nio.file.Files;
* import java.nio.file.Paths;
* public class App {
* public static void main(String[] args) {
* Pulumi.run(App::stack);
* }
* public static void stack(Context ctx) {
* var example = new BucketV2("example", BucketV2Args.builder()
* .bucket("yotto")
* .build());
* var exampleBucketVersioningV2 = new BucketVersioningV2("exampleBucketVersioningV2", BucketVersioningV2Args.builder()
* .bucket(example.id())
* .versioningConfiguration(BucketVersioningV2VersioningConfigurationArgs.builder()
* .status("Enabled")
* .build())
* .build());
* var exampleBucketObjectv2 = new BucketObjectv2("exampleBucketObjectv2", BucketObjectv2Args.builder()
* .bucket(exampleBucketVersioningV2.id())
* .key("droeloe")
* .source(new FileAsset("example.txt"))
* .build());
* }
* }
* ```
* ```yaml
* resources:
* example:
* type: aws:s3:BucketV2
* properties:
* bucket: yotto
* exampleBucketVersioningV2:
* type: aws:s3:BucketVersioningV2
* name: example
* properties:
* bucket: ${example.id}
* versioningConfiguration:
* status: Enabled
* exampleBucketObjectv2:
* type: aws:s3:BucketObjectv2
* name: example
* properties:
* bucket: ${exampleBucketVersioningV2.id}
* key: droeloe
* source:
* fn::FileAsset: example.txt
* ```
*
* ## Import
* 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 (`,`):
* __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:
* If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`:
* ```sh
* $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name
* ```
* 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 (`,`):
* ```sh
* $ pulumi import aws:s3/bucketVersioningV2:BucketVersioningV2 example bucket-name,123456789012
* ```
*/
public class BucketVersioningV2 internal constructor(
override val javaResource: com.pulumi.aws.s3.BucketVersioningV2,
) : KotlinCustomResource(javaResource, BucketVersioningV2Mapper) {
/**
* Name of the S3 bucket.
*/
public val bucket: Output
get() = javaResource.bucket().applyValue({ args0 -> args0 })
/**
* Account ID of the expected bucket owner.
*/
public val expectedBucketOwner: Output?
get() = javaResource.expectedBucketOwner().applyValue({ args0 ->
args0.map({ args0 ->
args0
}).orElse(null)
})
/**
* Concatenation of the authentication device's serial number, a space, and the value that is displayed on your authentication device.
*/
public val mfa: Output?
get() = javaResource.mfa().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
/**
* Configuration block for the versioning parameters. See below.
*/
public val versioningConfiguration: Output
get() = javaResource.versioningConfiguration().applyValue({ args0 ->
args0.let({ args0 ->
toKotlin(args0)
})
})
}
public object BucketVersioningV2Mapper : ResourceMapper {
override fun supportsMappingOfType(javaResource: Resource): Boolean =
com.pulumi.aws.s3.BucketVersioningV2::class == javaResource::class
override fun map(javaResource: Resource): BucketVersioningV2 = BucketVersioningV2(
javaResource as
com.pulumi.aws.s3.BucketVersioningV2,
)
}
/**
* @see [BucketVersioningV2].
* @param name The _unique_ name of the resulting resource.
* @param block Builder for [BucketVersioningV2].
*/
public suspend fun bucketVersioningV2(
name: String,
block: suspend BucketVersioningV2ResourceBuilder.() -> Unit,
): BucketVersioningV2 {
val builder = BucketVersioningV2ResourceBuilder()
builder.name(name)
block(builder)
return builder.build()
}
/**
* @see [BucketVersioningV2].
* @param name The _unique_ name of the resulting resource.
*/
public fun bucketVersioningV2(name: String): BucketVersioningV2 {
val builder = BucketVersioningV2ResourceBuilder()
builder.name(name)
return builder.build()
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy