All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.pulumi.aws.s3.kotlin.BucketObjectLockConfigurationV2.kt Maven / Gradle / Ivy

@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.s3.kotlin

import com.pulumi.aws.s3.kotlin.outputs.BucketObjectLockConfigurationV2Rule
import com.pulumi.aws.s3.kotlin.outputs.BucketObjectLockConfigurationV2Rule.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 [BucketObjectLockConfigurationV2].
 */
@PulumiTagMarker
public class BucketObjectLockConfigurationV2ResourceBuilder internal constructor() {
    public var name: String? = null

    public var args: BucketObjectLockConfigurationV2Args = BucketObjectLockConfigurationV2Args()

    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 BucketObjectLockConfigurationV2ArgsBuilder.() -> Unit) {
        val builder = BucketObjectLockConfigurationV2ArgsBuilder()
        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(): BucketObjectLockConfigurationV2 {
        val builtJavaResource =
            com.pulumi.aws.s3.BucketObjectLockConfigurationV2(
                this.name,
                this.args.toJava(),
                this.opts.toJava(),
            )
        return BucketObjectLockConfigurationV2(builtJavaResource)
    }
}

/**
 * Provides an S3 bucket Object Lock configuration resource. For more information about Object Locking, go to [Using S3 Object Lock](https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-lock.html) in the Amazon S3 User Guide.
 * > This resource can be used enable Object Lock for **new** and **existing** buckets.
 * > This resource cannot be used with S3 directory buckets.
 * ## Example Usage
 * ### Object Lock configuration for new or existing buckets
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const example = new aws.s3.BucketV2("example", {bucket: "mybucket"});
 * const exampleBucketVersioningV2 = new aws.s3.BucketVersioningV2("example", {
 *     bucket: example.id,
 *     versioningConfiguration: {
 *         status: "Enabled",
 *     },
 * });
 * const exampleBucketObjectLockConfigurationV2 = new aws.s3.BucketObjectLockConfigurationV2("example", {
 *     bucket: example.id,
 *     rule: {
 *         defaultRetention: {
 *             mode: "COMPLIANCE",
 *             days: 5,
 *         },
 *     },
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * example = aws.s3.BucketV2("example", bucket="mybucket")
 * example_bucket_versioning_v2 = aws.s3.BucketVersioningV2("example",
 *     bucket=example.id,
 *     versioning_configuration={
 *         "status": "Enabled",
 *     })
 * example_bucket_object_lock_configuration_v2 = aws.s3.BucketObjectLockConfigurationV2("example",
 *     bucket=example.id,
 *     rule={
 *         "default_retention": {
 *             "mode": "COMPLIANCE",
 *             "days": 5,
 *         },
 *     })
 * ```
 * ```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 = "mybucket",
 *     });
 *     var exampleBucketVersioningV2 = new Aws.S3.BucketVersioningV2("example", new()
 *     {
 *         Bucket = example.Id,
 *         VersioningConfiguration = new Aws.S3.Inputs.BucketVersioningV2VersioningConfigurationArgs
 *         {
 *             Status = "Enabled",
 *         },
 *     });
 *     var exampleBucketObjectLockConfigurationV2 = new Aws.S3.BucketObjectLockConfigurationV2("example", new()
 *     {
 *         Bucket = example.Id,
 *         Rule = new Aws.S3.Inputs.BucketObjectLockConfigurationV2RuleArgs
 *         {
 *             DefaultRetention = new Aws.S3.Inputs.BucketObjectLockConfigurationV2RuleDefaultRetentionArgs
 *             {
 *                 Mode = "COMPLIANCE",
 *                 Days = 5,
 *             },
 *         },
 *     });
 * });
 * ```
 * ```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("mybucket"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = s3.NewBucketVersioningV2(ctx, "example", &s3.BucketVersioningV2Args{
 * 			Bucket: example.ID(),
 * 			VersioningConfiguration: &s3.BucketVersioningV2VersioningConfigurationArgs{
 * 				Status: pulumi.String("Enabled"),
 * 			},
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		_, err = s3.NewBucketObjectLockConfigurationV2(ctx, "example", &s3.BucketObjectLockConfigurationV2Args{
 * 			Bucket: example.ID(),
 * 			Rule: &s3.BucketObjectLockConfigurationV2RuleArgs{
 * 				DefaultRetention: &s3.BucketObjectLockConfigurationV2RuleDefaultRetentionArgs{
 * 					Mode: pulumi.String("COMPLIANCE"),
 * 					Days: pulumi.Int(5),
 * 				},
 * 			},
 * 		})
 * 		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.BucketObjectLockConfigurationV2;
 * import com.pulumi.aws.s3.BucketObjectLockConfigurationV2Args;
 * import com.pulumi.aws.s3.inputs.BucketObjectLockConfigurationV2RuleArgs;
 * import com.pulumi.aws.s3.inputs.BucketObjectLockConfigurationV2RuleDefaultRetentionArgs;
 * 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("mybucket")
 *             .build());
 *         var exampleBucketVersioningV2 = new BucketVersioningV2("exampleBucketVersioningV2", BucketVersioningV2Args.builder()
 *             .bucket(example.id())
 *             .versioningConfiguration(BucketVersioningV2VersioningConfigurationArgs.builder()
 *                 .status("Enabled")
 *                 .build())
 *             .build());
 *         var exampleBucketObjectLockConfigurationV2 = new BucketObjectLockConfigurationV2("exampleBucketObjectLockConfigurationV2", BucketObjectLockConfigurationV2Args.builder()
 *             .bucket(example.id())
 *             .rule(BucketObjectLockConfigurationV2RuleArgs.builder()
 *                 .defaultRetention(BucketObjectLockConfigurationV2RuleDefaultRetentionArgs.builder()
 *                     .mode("COMPLIANCE")
 *                     .days(5)
 *                     .build())
 *                 .build())
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   example:
 *     type: aws:s3:BucketV2
 *     properties:
 *       bucket: mybucket
 *   exampleBucketVersioningV2:
 *     type: aws:s3:BucketVersioningV2
 *     name: example
 *     properties:
 *       bucket: ${example.id}
 *       versioningConfiguration:
 *         status: Enabled
 *   exampleBucketObjectLockConfigurationV2:
 *     type: aws:s3:BucketObjectLockConfigurationV2
 *     name: example
 *     properties:
 *       bucket: ${example.id}
 *       rule:
 *         defaultRetention:
 *           mode: COMPLIANCE
 *           days: 5
 * ```
 * 
 * ## 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 (`,`). For example:
 * __Using `pulumi import`__, import an S3 bucket Object Lock Configuration using one of two forms. If the owner (account ID) of the source bucket is the same account used to configure the AWS Provider, import using the `bucket`. For example:
 * ```sh
 * $ pulumi import aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2 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 (`,`). For example:
 * ```sh
 * $ pulumi import aws:s3/bucketObjectLockConfigurationV2:BucketObjectLockConfigurationV2 example bucket-name,123456789012
 * ```
 */
public class BucketObjectLockConfigurationV2 internal constructor(
    override val javaResource: com.pulumi.aws.s3.BucketObjectLockConfigurationV2,
) : KotlinCustomResource(javaResource, BucketObjectLockConfigurationV2Mapper) {
    /**
     * Name of the 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)
        })

    /**
     * Indicates whether this bucket has an Object Lock configuration enabled. Defaults to `Enabled`. Valid values: `Enabled`.
     */
    public val objectLockEnabled: Output?
        get() = javaResource.objectLockEnabled().applyValue({ args0 ->
            args0.map({ args0 ->
                args0
            }).orElse(null)
        })

    /**
     * Configuration block for specifying the Object Lock rule for the specified object. See below.
     */
    public val rule: Output?
        get() = javaResource.rule().applyValue({ args0 ->
            args0.map({ args0 ->
                args0.let({ args0 ->
                    toKotlin(args0)
                })
            }).orElse(null)
        })

    /**
     * This argument is deprecated and no longer needed to enable Object Lock.
     * To enable Object Lock for an existing bucket, you must first enable versioning on the bucket and then enable Object Lock. For more details on versioning, see the `aws.s3.BucketVersioningV2` resource.
     */
    public val token: Output?
        get() = javaResource.token().applyValue({ args0 -> args0.map({ args0 -> args0 }).orElse(null) })
}

public object BucketObjectLockConfigurationV2Mapper :
    ResourceMapper {
    override fun supportsMappingOfType(javaResource: Resource): Boolean =
        com.pulumi.aws.s3.BucketObjectLockConfigurationV2::class == javaResource::class

    override fun map(javaResource: Resource): BucketObjectLockConfigurationV2 =
        BucketObjectLockConfigurationV2(
            javaResource as
                com.pulumi.aws.s3.BucketObjectLockConfigurationV2,
        )
}

/**
 * @see [BucketObjectLockConfigurationV2].
 * @param name The _unique_ name of the resulting resource.
 * @param block Builder for [BucketObjectLockConfigurationV2].
 */
public suspend fun bucketObjectLockConfigurationV2(
    name: String,
    block: suspend BucketObjectLockConfigurationV2ResourceBuilder.() -> Unit,
): BucketObjectLockConfigurationV2 {
    val builder = BucketObjectLockConfigurationV2ResourceBuilder()
    builder.name(name)
    block(builder)
    return builder.build()
}

/**
 * @see [BucketObjectLockConfigurationV2].
 * @param name The _unique_ name of the resulting resource.
 */
public fun bucketObjectLockConfigurationV2(name: String): BucketObjectLockConfigurationV2 {
    val builder = BucketObjectLockConfigurationV2ResourceBuilder()
    builder.name(name)
    return builder.build()
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy