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

com.pulumi.awsnative.kinesisfirehose.kotlin.DeliveryStreamArgs.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: 1.24.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.awsnative.kinesisfirehose.kotlin

import com.pulumi.awsnative.kinesisfirehose.DeliveryStreamArgs.builder
import com.pulumi.awsnative.kinesisfirehose.kotlin.enums.DeliveryStreamType
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamAmazonOpenSearchServerlessDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamAmazonOpenSearchServerlessDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamAmazonopensearchserviceDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamAmazonopensearchserviceDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamElasticsearchDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamElasticsearchDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamEncryptionConfigurationInputArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamEncryptionConfigurationInputArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamExtendedS3DestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamExtendedS3DestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamHttpEndpointDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamHttpEndpointDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamKinesisStreamSourceConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamKinesisStreamSourceConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamMskSourceConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamMskSourceConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamRedshiftDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamRedshiftDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamS3DestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamS3DestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamSnowflakeDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamSnowflakeDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamSplunkDestinationConfigurationArgs
import com.pulumi.awsnative.kinesisfirehose.kotlin.inputs.DeliveryStreamSplunkDestinationConfigurationArgsBuilder
import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import com.pulumi.kotlin.applySuspend
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Resource Type definition for AWS::KinesisFirehose::DeliveryStream
 * @property amazonOpenSearchServerlessDestinationConfiguration Describes the configuration of a destination in the Serverless offering for Amazon OpenSearch Service.
 * @property amazonopensearchserviceDestinationConfiguration The destination in Amazon OpenSearch Service. You can specify only one destination.
 * @property deliveryStreamEncryptionConfigurationInput Specifies the type and Amazon Resource Name (ARN) of the CMK to use for Server-Side Encryption (SSE).
 * @property deliveryStreamName The name of the delivery stream.
 * @property deliveryStreamType The delivery stream type. This can be one of the following values:
 * - `DirectPut` : Provider applications access the delivery stream directly.
 * - `KinesisStreamAsSource` : The delivery stream uses a Kinesis data stream as a source.
 * @property elasticsearchDestinationConfiguration An Amazon ES destination for the delivery stream.
 * Conditional. You must specify only one destination configuration.
 * If you change the delivery stream destination from an Amazon ES destination to an Amazon S3 or Amazon Redshift destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
 * @property extendedS3DestinationConfiguration An Amazon S3 destination for the delivery stream.
 * Conditional. You must specify only one destination configuration.
 * If you change the delivery stream destination from an Amazon Extended S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
 * @property httpEndpointDestinationConfiguration Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint destination. You can specify only one destination.
 * @property kinesisStreamSourceConfiguration When a Kinesis stream is used as the source for the delivery stream, a [KinesisStreamSourceConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html) containing the Kinesis stream ARN and the role ARN for the source stream.
 * @property mskSourceConfiguration The configuration for the Amazon MSK cluster to be used as the source for a delivery stream.
 * @property redshiftDestinationConfiguration An Amazon Redshift destination for the delivery stream.
 * Conditional. You must specify only one destination configuration.
 * If you change the delivery stream destination from an Amazon Redshift destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
 * @property s3DestinationConfiguration The `S3DestinationConfiguration` property type specifies an Amazon Simple Storage Service (Amazon S3) destination to which Amazon Kinesis Data Firehose (Kinesis Data Firehose) delivers data.
 * Conditional. You must specify only one destination configuration.
 * If you change the delivery stream destination from an Amazon S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
 * @property snowflakeDestinationConfiguration Configure Snowflake destination
 * @property splunkDestinationConfiguration The configuration of a destination in Splunk for the delivery stream.
 * @property tags A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
 * You can specify up to 50 tags when creating a delivery stream.
 * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
 * *AccessDeniedException*
 * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
 * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
 */
public data class DeliveryStreamArgs(
    public val amazonOpenSearchServerlessDestinationConfiguration: Output? = null,
    public val amazonopensearchserviceDestinationConfiguration: Output? = null,
    public val deliveryStreamEncryptionConfigurationInput: Output? = null,
    public val deliveryStreamName: Output? = null,
    public val deliveryStreamType: Output? = null,
    public val elasticsearchDestinationConfiguration: Output? = null,
    public val extendedS3DestinationConfiguration: Output? = null,
    public val httpEndpointDestinationConfiguration: Output? = null,
    public val kinesisStreamSourceConfiguration: Output? = null,
    public val mskSourceConfiguration: Output? = null,
    public val redshiftDestinationConfiguration: Output? = null,
    public val s3DestinationConfiguration: Output? =
        null,
    public val snowflakeDestinationConfiguration: Output? = null,
    public val splunkDestinationConfiguration: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.kinesisfirehose.DeliveryStreamArgs =
        com.pulumi.awsnative.kinesisfirehose.DeliveryStreamArgs.builder()
            .amazonOpenSearchServerlessDestinationConfiguration(
                amazonOpenSearchServerlessDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .amazonopensearchserviceDestinationConfiguration(
                amazonopensearchserviceDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .deliveryStreamEncryptionConfigurationInput(
                deliveryStreamEncryptionConfigurationInput?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .deliveryStreamName(deliveryStreamName?.applyValue({ args0 -> args0 }))
            .deliveryStreamType(
                deliveryStreamType?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .elasticsearchDestinationConfiguration(
                elasticsearchDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .extendedS3DestinationConfiguration(
                extendedS3DestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .httpEndpointDestinationConfiguration(
                httpEndpointDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .kinesisStreamSourceConfiguration(
                kinesisStreamSourceConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .mskSourceConfiguration(
                mskSourceConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .redshiftDestinationConfiguration(
                redshiftDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .s3DestinationConfiguration(
                s3DestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .snowflakeDestinationConfiguration(
                snowflakeDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .splunkDestinationConfiguration(
                splunkDestinationConfiguration?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [DeliveryStreamArgs].
 */
@PulumiTagMarker
public class DeliveryStreamArgsBuilder internal constructor() {
    private var amazonOpenSearchServerlessDestinationConfiguration:
        Output? = null

    private var amazonopensearchserviceDestinationConfiguration:
        Output? = null

    private var deliveryStreamEncryptionConfigurationInput:
        Output? = null

    private var deliveryStreamName: Output? = null

    private var deliveryStreamType: Output? = null

    private var elasticsearchDestinationConfiguration:
        Output? = null

    private var extendedS3DestinationConfiguration:
        Output? = null

    private var httpEndpointDestinationConfiguration:
        Output? = null

    private var kinesisStreamSourceConfiguration:
        Output? = null

    private var mskSourceConfiguration: Output? = null

    private var redshiftDestinationConfiguration:
        Output? = null

    private var s3DestinationConfiguration: Output? =
        null

    private var snowflakeDestinationConfiguration:
        Output? = null

    private var splunkDestinationConfiguration:
        Output? = null

    private var tags: Output>? = null

    /**
     * @param value Describes the configuration of a destination in the Serverless offering for Amazon OpenSearch Service.
     */
    @JvmName("vgoirikeuqyfcaag")
    public suspend fun amazonOpenSearchServerlessDestinationConfiguration(`value`: Output) {
        this.amazonOpenSearchServerlessDestinationConfiguration = value
    }

    /**
     * @param value The destination in Amazon OpenSearch Service. You can specify only one destination.
     */
    @JvmName("krhqmclagdgqrwpk")
    public suspend fun amazonopensearchserviceDestinationConfiguration(`value`: Output) {
        this.amazonopensearchserviceDestinationConfiguration = value
    }

    /**
     * @param value Specifies the type and Amazon Resource Name (ARN) of the CMK to use for Server-Side Encryption (SSE).
     */
    @JvmName("xamkobxuuivfynxw")
    public suspend fun deliveryStreamEncryptionConfigurationInput(`value`: Output) {
        this.deliveryStreamEncryptionConfigurationInput = value
    }

    /**
     * @param value The name of the delivery stream.
     */
    @JvmName("vfpfcfaqlpemllxk")
    public suspend fun deliveryStreamName(`value`: Output) {
        this.deliveryStreamName = value
    }

    /**
     * @param value The delivery stream type. This can be one of the following values:
     * - `DirectPut` : Provider applications access the delivery stream directly.
     * - `KinesisStreamAsSource` : The delivery stream uses a Kinesis data stream as a source.
     */
    @JvmName("yoretvllowwupevu")
    public suspend fun deliveryStreamType(`value`: Output) {
        this.deliveryStreamType = value
    }

    /**
     * @param value An Amazon ES destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon ES destination to an Amazon S3 or Amazon Redshift destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("afpawaexkqgiynth")
    public suspend fun elasticsearchDestinationConfiguration(`value`: Output) {
        this.elasticsearchDestinationConfiguration = value
    }

    /**
     * @param value An Amazon S3 destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Extended S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("xaltbbdjjedjayou")
    public suspend fun extendedS3DestinationConfiguration(`value`: Output) {
        this.extendedS3DestinationConfiguration = value
    }

    /**
     * @param value Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint destination. You can specify only one destination.
     */
    @JvmName("hdvopkhjcjvlexkp")
    public suspend fun httpEndpointDestinationConfiguration(`value`: Output) {
        this.httpEndpointDestinationConfiguration = value
    }

    /**
     * @param value When a Kinesis stream is used as the source for the delivery stream, a [KinesisStreamSourceConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html) containing the Kinesis stream ARN and the role ARN for the source stream.
     */
    @JvmName("bngxrvaaauqamrfb")
    public suspend fun kinesisStreamSourceConfiguration(`value`: Output) {
        this.kinesisStreamSourceConfiguration = value
    }

    /**
     * @param value The configuration for the Amazon MSK cluster to be used as the source for a delivery stream.
     */
    @JvmName("jsunafugcbdunjwv")
    public suspend fun mskSourceConfiguration(`value`: Output) {
        this.mskSourceConfiguration = value
    }

    /**
     * @param value An Amazon Redshift destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Redshift destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("yhgnagseoquorcis")
    public suspend fun redshiftDestinationConfiguration(`value`: Output) {
        this.redshiftDestinationConfiguration = value
    }

    /**
     * @param value The `S3DestinationConfiguration` property type specifies an Amazon Simple Storage Service (Amazon S3) destination to which Amazon Kinesis Data Firehose (Kinesis Data Firehose) delivers data.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("xlglaamklesoivhc")
    public suspend fun s3DestinationConfiguration(`value`: Output) {
        this.s3DestinationConfiguration = value
    }

    /**
     * @param value Configure Snowflake destination
     */
    @JvmName("xojwvuyxbmrgsrxp")
    public suspend fun snowflakeDestinationConfiguration(`value`: Output) {
        this.snowflakeDestinationConfiguration = value
    }

    /**
     * @param value The configuration of a destination in Splunk for the delivery stream.
     */
    @JvmName("vkdphetcuogomlgp")
    public suspend fun splunkDestinationConfiguration(`value`: Output) {
        this.splunkDestinationConfiguration = value
    }

    /**
     * @param value A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("lgcegewidtlmwcou")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    @JvmName("ntgbxyubpgkkqhqe")
    public suspend fun tags(vararg values: Output) {
        this.tags = Output.all(values.asList())
    }

    /**
     * @param values A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("qnalbmrmpqvygyri")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value Describes the configuration of a destination in the Serverless offering for Amazon OpenSearch Service.
     */
    @JvmName("actvfmaybmsvegti")
    public suspend fun amazonOpenSearchServerlessDestinationConfiguration(`value`: DeliveryStreamAmazonOpenSearchServerlessDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.amazonOpenSearchServerlessDestinationConfiguration = mapped
    }

    /**
     * @param argument Describes the configuration of a destination in the Serverless offering for Amazon OpenSearch Service.
     */
    @JvmName("hnhiuemwbqcelpci")
    public suspend fun amazonOpenSearchServerlessDestinationConfiguration(argument: suspend DeliveryStreamAmazonOpenSearchServerlessDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped =
            DeliveryStreamAmazonOpenSearchServerlessDestinationConfigurationArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.amazonOpenSearchServerlessDestinationConfiguration = mapped
    }

    /**
     * @param value The destination in Amazon OpenSearch Service. You can specify only one destination.
     */
    @JvmName("ywmarlaxtwguwsph")
    public suspend fun amazonopensearchserviceDestinationConfiguration(`value`: DeliveryStreamAmazonopensearchserviceDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.amazonopensearchserviceDestinationConfiguration = mapped
    }

    /**
     * @param argument The destination in Amazon OpenSearch Service. You can specify only one destination.
     */
    @JvmName("bwhyqsscrfxkfnfe")
    public suspend fun amazonopensearchserviceDestinationConfiguration(argument: suspend DeliveryStreamAmazonopensearchserviceDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped =
            DeliveryStreamAmazonopensearchserviceDestinationConfigurationArgsBuilder().applySuspend {
                argument()
            }.build()
        val mapped = of(toBeMapped)
        this.amazonopensearchserviceDestinationConfiguration = mapped
    }

    /**
     * @param value Specifies the type and Amazon Resource Name (ARN) of the CMK to use for Server-Side Encryption (SSE).
     */
    @JvmName("gurntflmokectiws")
    public suspend fun deliveryStreamEncryptionConfigurationInput(`value`: DeliveryStreamEncryptionConfigurationInputArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deliveryStreamEncryptionConfigurationInput = mapped
    }

    /**
     * @param argument Specifies the type and Amazon Resource Name (ARN) of the CMK to use for Server-Side Encryption (SSE).
     */
    @JvmName("hhufrfmmkymbgylc")
    public suspend fun deliveryStreamEncryptionConfigurationInput(argument: suspend DeliveryStreamEncryptionConfigurationInputArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamEncryptionConfigurationInputArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.deliveryStreamEncryptionConfigurationInput = mapped
    }

    /**
     * @param value The name of the delivery stream.
     */
    @JvmName("wnlytpobkekbdmgt")
    public suspend fun deliveryStreamName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deliveryStreamName = mapped
    }

    /**
     * @param value The delivery stream type. This can be one of the following values:
     * - `DirectPut` : Provider applications access the delivery stream directly.
     * - `KinesisStreamAsSource` : The delivery stream uses a Kinesis data stream as a source.
     */
    @JvmName("iwahwdjjywmvaguj")
    public suspend fun deliveryStreamType(`value`: DeliveryStreamType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deliveryStreamType = mapped
    }

    /**
     * @param value An Amazon ES destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon ES destination to an Amazon S3 or Amazon Redshift destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("fjlnilygmbgmimxg")
    public suspend fun elasticsearchDestinationConfiguration(`value`: DeliveryStreamElasticsearchDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.elasticsearchDestinationConfiguration = mapped
    }

    /**
     * @param argument An Amazon ES destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon ES destination to an Amazon S3 or Amazon Redshift destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("eudpgkarpkwtyuof")
    public suspend fun elasticsearchDestinationConfiguration(argument: suspend DeliveryStreamElasticsearchDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamElasticsearchDestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.elasticsearchDestinationConfiguration = mapped
    }

    /**
     * @param value An Amazon S3 destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Extended S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("dhdsidpbjtcootvt")
    public suspend fun extendedS3DestinationConfiguration(`value`: DeliveryStreamExtendedS3DestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.extendedS3DestinationConfiguration = mapped
    }

    /**
     * @param argument An Amazon S3 destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Extended S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("rgtqosuojkeasusn")
    public suspend fun extendedS3DestinationConfiguration(argument: suspend DeliveryStreamExtendedS3DestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamExtendedS3DestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.extendedS3DestinationConfiguration = mapped
    }

    /**
     * @param value Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint destination. You can specify only one destination.
     */
    @JvmName("dhxintxbtpmggsod")
    public suspend fun httpEndpointDestinationConfiguration(`value`: DeliveryStreamHttpEndpointDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.httpEndpointDestinationConfiguration = mapped
    }

    /**
     * @param argument Enables configuring Kinesis Firehose to deliver data to any HTTP endpoint destination. You can specify only one destination.
     */
    @JvmName("gtesriqekaunwfrc")
    public suspend fun httpEndpointDestinationConfiguration(argument: suspend DeliveryStreamHttpEndpointDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamHttpEndpointDestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.httpEndpointDestinationConfiguration = mapped
    }

    /**
     * @param value When a Kinesis stream is used as the source for the delivery stream, a [KinesisStreamSourceConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html) containing the Kinesis stream ARN and the role ARN for the source stream.
     */
    @JvmName("oaghsxsfbhfosmvh")
    public suspend fun kinesisStreamSourceConfiguration(`value`: DeliveryStreamKinesisStreamSourceConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kinesisStreamSourceConfiguration = mapped
    }

    /**
     * @param argument When a Kinesis stream is used as the source for the delivery stream, a [KinesisStreamSourceConfiguration](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-kinesisfirehose-deliverystream-kinesisstreamsourceconfiguration.html) containing the Kinesis stream ARN and the role ARN for the source stream.
     */
    @JvmName("kcreokuaaxxbturl")
    public suspend fun kinesisStreamSourceConfiguration(argument: suspend DeliveryStreamKinesisStreamSourceConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamKinesisStreamSourceConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.kinesisStreamSourceConfiguration = mapped
    }

    /**
     * @param value The configuration for the Amazon MSK cluster to be used as the source for a delivery stream.
     */
    @JvmName("okelybwmccccceyo")
    public suspend fun mskSourceConfiguration(`value`: DeliveryStreamMskSourceConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.mskSourceConfiguration = mapped
    }

    /**
     * @param argument The configuration for the Amazon MSK cluster to be used as the source for a delivery stream.
     */
    @JvmName("bienlmiggybxeajx")
    public suspend fun mskSourceConfiguration(argument: suspend DeliveryStreamMskSourceConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamMskSourceConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.mskSourceConfiguration = mapped
    }

    /**
     * @param value An Amazon Redshift destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Redshift destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("jbawlyewpgonngvi")
    public suspend fun redshiftDestinationConfiguration(`value`: DeliveryStreamRedshiftDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.redshiftDestinationConfiguration = mapped
    }

    /**
     * @param argument An Amazon Redshift destination for the delivery stream.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon Redshift destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("qvxnpggpyulwiaxc")
    public suspend fun redshiftDestinationConfiguration(argument: suspend DeliveryStreamRedshiftDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamRedshiftDestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.redshiftDestinationConfiguration = mapped
    }

    /**
     * @param value The `S3DestinationConfiguration` property type specifies an Amazon Simple Storage Service (Amazon S3) destination to which Amazon Kinesis Data Firehose (Kinesis Data Firehose) delivers data.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("jgrclbgkqovwiswb")
    public suspend fun s3DestinationConfiguration(`value`: DeliveryStreamS3DestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.s3DestinationConfiguration = mapped
    }

    /**
     * @param argument The `S3DestinationConfiguration` property type specifies an Amazon Simple Storage Service (Amazon S3) destination to which Amazon Kinesis Data Firehose (Kinesis Data Firehose) delivers data.
     * Conditional. You must specify only one destination configuration.
     * If you change the delivery stream destination from an Amazon S3 destination to an Amazon ES destination, update requires [some interruptions](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-some-interrupt) .
     */
    @JvmName("biucxujrevbmixvb")
    public suspend fun s3DestinationConfiguration(argument: suspend DeliveryStreamS3DestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamS3DestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.s3DestinationConfiguration = mapped
    }

    /**
     * @param value Configure Snowflake destination
     */
    @JvmName("wtnaoybpnisduply")
    public suspend fun snowflakeDestinationConfiguration(`value`: DeliveryStreamSnowflakeDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.snowflakeDestinationConfiguration = mapped
    }

    /**
     * @param argument Configure Snowflake destination
     */
    @JvmName("jvorghwfojuuovsl")
    public suspend fun snowflakeDestinationConfiguration(argument: suspend DeliveryStreamSnowflakeDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamSnowflakeDestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.snowflakeDestinationConfiguration = mapped
    }

    /**
     * @param value The configuration of a destination in Splunk for the delivery stream.
     */
    @JvmName("ofvbgqlcwxcwjnvx")
    public suspend fun splunkDestinationConfiguration(`value`: DeliveryStreamSplunkDestinationConfigurationArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.splunkDestinationConfiguration = mapped
    }

    /**
     * @param argument The configuration of a destination in Splunk for the delivery stream.
     */
    @JvmName("hjfcfgvucgerpixf")
    public suspend fun splunkDestinationConfiguration(argument: suspend DeliveryStreamSplunkDestinationConfigurationArgsBuilder.() -> Unit) {
        val toBeMapped = DeliveryStreamSplunkDestinationConfigurationArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.splunkDestinationConfiguration = mapped
    }

    /**
     * @param value A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("gljlwpsshsfedxtk")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("fdqsexeegitrgyyh")
    public suspend fun tags(argument: List Unit>) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("itikegpkxkclotcg")
    public suspend fun tags(vararg argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map { TagArgsBuilder().applySuspend { it() }.build() }
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param argument A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("wypvoqpqbfgbucsl")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values A set of tags to assign to the delivery stream. A tag is a key-value pair that you can define and assign to AWS resources. Tags are metadata. For example, you can add friendly names and descriptions or other types of information that can help you distinguish the delivery stream. For more information about tags, see [Using Cost Allocation Tags](https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/cost-alloc-tags.html) in the AWS Billing and Cost Management User Guide.
     * You can specify up to 50 tags when creating a delivery stream.
     * If you specify tags in the `CreateDeliveryStream` action, Amazon Data Firehose performs an additional authorization on the `firehose:TagDeliveryStream` action to verify if users have permissions to create tags. If you do not provide this permission, requests to create new Firehose delivery streams with IAM resource tags will fail with an `AccessDeniedException` such as following.
     * *AccessDeniedException*
     * User: arn:aws:sts::x:assumed-role/x/x is not authorized to perform: firehose:TagDeliveryStream on resource: arn:aws:firehose:us-east-1:x:deliverystream/x with an explicit deny in an identity-based policy.
     * For an example IAM policy, see [Tag example.](https://docs.aws.amazon.com/firehose/latest/APIReference/API_CreateDeliveryStream.html#API_CreateDeliveryStream_Examples)
     */
    @JvmName("mnqiirgwscifeptu")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): DeliveryStreamArgs = DeliveryStreamArgs(
        amazonOpenSearchServerlessDestinationConfiguration = amazonOpenSearchServerlessDestinationConfiguration,
        amazonopensearchserviceDestinationConfiguration = amazonopensearchserviceDestinationConfiguration,
        deliveryStreamEncryptionConfigurationInput = deliveryStreamEncryptionConfigurationInput,
        deliveryStreamName = deliveryStreamName,
        deliveryStreamType = deliveryStreamType,
        elasticsearchDestinationConfiguration = elasticsearchDestinationConfiguration,
        extendedS3DestinationConfiguration = extendedS3DestinationConfiguration,
        httpEndpointDestinationConfiguration = httpEndpointDestinationConfiguration,
        kinesisStreamSourceConfiguration = kinesisStreamSourceConfiguration,
        mskSourceConfiguration = mskSourceConfiguration,
        redshiftDestinationConfiguration = redshiftDestinationConfiguration,
        s3DestinationConfiguration = s3DestinationConfiguration,
        snowflakeDestinationConfiguration = snowflakeDestinationConfiguration,
        splunkDestinationConfiguration = splunkDestinationConfiguration,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy