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

com.pulumi.aws.s3.kotlin.inputs.BucketReplicationConfigRuleDestinationArgs.kt Maven / Gradle / Ivy

Go to download

Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.

There is a newer version: 6.57.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.s3.kotlin.inputs

import com.pulumi.aws.s3.inputs.BucketReplicationConfigRuleDestinationArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiNullFieldException
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.jvm.JvmName

/**
 *
 * @property accessControlTranslation Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration.
 * @property account Account ID to specify the replica ownership. Must be used in conjunction with `access_control_translation` override configuration.
 * @property bucket ARN of the bucket where you want Amazon S3 to store the results.
 * @property encryptionConfiguration Configuration block that provides information about encryption. See below. If `source_selection_criteria` is specified, you must specify this element.
 * @property metrics Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.
 * @property replicationTime Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`.
 * @property storageClass The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.
 */
public data class BucketReplicationConfigRuleDestinationArgs(
    public val accessControlTranslation: Output? = null,
    public val account: Output? = null,
    public val bucket: Output,
    public val encryptionConfiguration: Output? = null,
    public val metrics: Output? = null,
    public val replicationTime: Output? =
        null,
    public val storageClass: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.s3.inputs.BucketReplicationConfigRuleDestinationArgs =
        com.pulumi.aws.s3.inputs.BucketReplicationConfigRuleDestinationArgs.builder()
            .accessControlTranslation(
                accessControlTranslation?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .account(account?.applyValue({ args0 -> args0 }))
            .bucket(bucket.applyValue({ args0 -> args0 }))
            .encryptionConfiguration(
                encryptionConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .metrics(metrics?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .replicationTime(replicationTime?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .storageClass(storageClass?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [BucketReplicationConfigRuleDestinationArgs].
 */
@PulumiTagMarker
public class BucketReplicationConfigRuleDestinationArgsBuilder internal constructor() {
    private var accessControlTranslation:
        Output? = null

    private var account: Output? = null

    private var bucket: Output? = null

    private var encryptionConfiguration:
        Output? = null

    private var metrics: Output? = null

    private var replicationTime: Output? =
        null

    private var storageClass: Output? = null

    /**
     * @param value Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration.
     */
    @JvmName("qseampgxvmmvbxdv")
    public suspend fun accessControlTranslation(`value`: Output) {
        this.accessControlTranslation = value
    }

    /**
     * @param value Account ID to specify the replica ownership. Must be used in conjunction with `access_control_translation` override configuration.
     */
    @JvmName("ifditpneflgutidi")
    public suspend fun account(`value`: Output) {
        this.account = value
    }

    /**
     * @param value ARN of the bucket where you want Amazon S3 to store the results.
     */
    @JvmName("gwqwwjinddfagock")
    public suspend fun bucket(`value`: Output) {
        this.bucket = value
    }

    /**
     * @param value Configuration block that provides information about encryption. See below. If `source_selection_criteria` is specified, you must specify this element.
     */
    @JvmName("tfondvnfnbftgdou")
    public suspend fun encryptionConfiguration(`value`: Output) {
        this.encryptionConfiguration = value
    }

    /**
     * @param value Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.
     */
    @JvmName("mnigppsvrfaagolu")
    public suspend fun metrics(`value`: Output) {
        this.metrics = value
    }

    /**
     * @param value Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`.
     */
    @JvmName("gegbpkolqxcppjfk")
    public suspend fun replicationTime(`value`: Output) {
        this.replicationTime = value
    }

    /**
     * @param value The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.
     */
    @JvmName("tydibmyeccpoeywr")
    public suspend fun storageClass(`value`: Output) {
        this.storageClass = value
    }

    /**
     * @param value Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration.
     */
    @JvmName("uenuqnhocmgfsfey")
    public suspend fun accessControlTranslation(`value`: BucketReplicationConfigRuleDestinationAccessControlTranslationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accessControlTranslation = mapped
    }

    /**
     * @param argument Configuration block that specifies the overrides to use for object owners on replication. See below. Specify this only in a cross-account scenario (where source and destination bucket owners are not the same), and you want to change replica ownership to the AWS account that owns the destination bucket. If this is not specified in the replication configuration, the replicas are owned by same AWS account that owns the source object. Must be used in conjunction with `account` owner override configuration.
     */
    @JvmName("mfiwdnjwjyftifaj")
    public suspend fun accessControlTranslation(argument: suspend BucketReplicationConfigRuleDestinationAccessControlTranslationArgsBuilder.() -> Unit) {
        val toBeMapped =
            BucketReplicationConfigRuleDestinationAccessControlTranslationArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.accessControlTranslation = mapped
    }

    /**
     * @param value Account ID to specify the replica ownership. Must be used in conjunction with `access_control_translation` override configuration.
     */
    @JvmName("cgplsvpgbthvwlwl")
    public suspend fun account(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.account = mapped
    }

    /**
     * @param value ARN of the bucket where you want Amazon S3 to store the results.
     */
    @JvmName("rttfwbuienniawnr")
    public suspend fun bucket(`value`: String) {
        val toBeMapped = value
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.bucket = mapped
    }

    /**
     * @param value Configuration block that provides information about encryption. See below. If `source_selection_criteria` is specified, you must specify this element.
     */
    @JvmName("dsgtuaplqewppxxp")
    public suspend fun encryptionConfiguration(`value`: BucketReplicationConfigRuleDestinationEncryptionConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.encryptionConfiguration = mapped
    }

    /**
     * @param argument Configuration block that provides information about encryption. See below. If `source_selection_criteria` is specified, you must specify this element.
     */
    @JvmName("vqwvebnfcmtmgxyx")
    public suspend fun encryptionConfiguration(argument: suspend BucketReplicationConfigRuleDestinationEncryptionConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped =
            BucketReplicationConfigRuleDestinationEncryptionConfigurationArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.encryptionConfiguration = mapped
    }

    /**
     * @param value Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.
     */
    @JvmName("wvjgmggeibepneji")
    public suspend fun metrics(`value`: BucketReplicationConfigRuleDestinationMetricsArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.metrics = mapped
    }

    /**
     * @param argument Configuration block that specifies replication metrics-related settings enabling replication metrics and events. See below.
     */
    @JvmName("rcjdfxthwnuyvydh")
    public suspend fun metrics(argument: suspend BucketReplicationConfigRuleDestinationMetricsArgsBuilder.() -> Unit) {
        val toBeMapped = BucketReplicationConfigRuleDestinationMetricsArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.metrics = mapped
    }

    /**
     * @param value Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`.
     */
    @JvmName("dxiymrgdhonihhms")
    public suspend fun replicationTime(`value`: BucketReplicationConfigRuleDestinationReplicationTimeArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.replicationTime = mapped
    }

    /**
     * @param argument Configuration block that specifies S3 Replication Time Control (S3 RTC), including whether S3 RTC is enabled and the time when all objects and operations on objects must be replicated. See below. Replication Time Control must be used in conjunction with `metrics`.
     */
    @JvmName("ydpukvqpgcoicsnf")
    public suspend fun replicationTime(argument: suspend BucketReplicationConfigRuleDestinationReplicationTimeArgsBuilder.() -> Unit) {
        val toBeMapped =
            BucketReplicationConfigRuleDestinationReplicationTimeArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.replicationTime = mapped
    }

    /**
     * @param value The [storage class](https://docs.aws.amazon.com/AmazonS3/latest/API/API_Destination.html#AmazonS3-Type-Destination-StorageClass) used to store the object. By default, Amazon S3 uses the storage class of the source object to create the object replica.
     */
    @JvmName("kkfmycjteyflssoj")
    public suspend fun storageClass(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.storageClass = mapped
    }

    internal fun build(): BucketReplicationConfigRuleDestinationArgs =
        BucketReplicationConfigRuleDestinationArgs(
            accessControlTranslation = accessControlTranslation,
            account = account,
            bucket = bucket ?: throw PulumiNullFieldException("bucket"),
            encryptionConfiguration = encryptionConfiguration,
            metrics = metrics,
            replicationTime = replicationTime,
            storageClass = storageClass,
        )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy