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

com.pulumi.awsnative.securitylake.kotlin.SubscriberArgs.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.securitylake.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.securitylake.SubscriberArgs.builder
import com.pulumi.awsnative.securitylake.kotlin.enums.SubscriberAccessTypesItem
import com.pulumi.awsnative.securitylake.kotlin.inputs.SubscriberIdentityPropertiesArgs
import com.pulumi.awsnative.securitylake.kotlin.inputs.SubscriberIdentityPropertiesArgsBuilder
import com.pulumi.awsnative.securitylake.kotlin.inputs.SubscriberSourceArgs
import com.pulumi.awsnative.securitylake.kotlin.inputs.SubscriberSourceArgsBuilder
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::SecurityLake::Subscriber
 * @property accessTypes You can choose to notify subscribers of new objects with an Amazon Simple Queue Service (Amazon SQS) queue or through messaging to an HTTPS endpoint provided by the subscriber.
 * Subscribers can consume data by directly querying AWS Lake Formation tables in your Amazon S3 bucket through services like Amazon Athena. This subscription type is defined as `LAKEFORMATION` .
 * @property dataLakeArn The ARN for the data lake.
 * @property sources The supported AWS services from which logs and events are collected.
 * @property subscriberDescription The description for your subscriber account in Security Lake.
 * @property subscriberIdentity The AWS identity used to access your data.
 * @property subscriberName The name of your Security Lake subscriber account.
 * @property tags An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
 */
public data class SubscriberArgs(
    public val accessTypes: Output>? = null,
    public val dataLakeArn: Output? = null,
    public val sources: Output>? = null,
    public val subscriberDescription: Output? = null,
    public val subscriberIdentity: Output? = null,
    public val subscriberName: Output? = null,
    public val tags: Output>? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.securitylake.SubscriberArgs =
        com.pulumi.awsnative.securitylake.SubscriberArgs.builder()
            .accessTypes(
                accessTypes?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .dataLakeArn(dataLakeArn?.applyValue({ args0 -> args0 }))
            .sources(
                sources?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            )
            .subscriberDescription(subscriberDescription?.applyValue({ args0 -> args0 }))
            .subscriberIdentity(
                subscriberIdentity?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .subscriberName(subscriberName?.applyValue({ args0 -> args0 }))
            .tags(
                tags?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.let({ args0 ->
                            args0.toJava()
                        })
                    })
                }),
            ).build()
}

/**
 * Builder for [SubscriberArgs].
 */
@PulumiTagMarker
public class SubscriberArgsBuilder internal constructor() {
    private var accessTypes: Output>? = null

    private var dataLakeArn: Output? = null

    private var sources: Output>? = null

    private var subscriberDescription: Output? = null

    private var subscriberIdentity: Output? = null

    private var subscriberName: Output? = null

    private var tags: Output>? = null

    /**
     * @param value You can choose to notify subscribers of new objects with an Amazon Simple Queue Service (Amazon SQS) queue or through messaging to an HTTPS endpoint provided by the subscriber.
     * Subscribers can consume data by directly querying AWS Lake Formation tables in your Amazon S3 bucket through services like Amazon Athena. This subscription type is defined as `LAKEFORMATION` .
     */
    @JvmName("hadalnmhuplgrwrh")
    public suspend fun accessTypes(`value`: Output>) {
        this.accessTypes = value
    }

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

    /**
     * @param values You can choose to notify subscribers of new objects with an Amazon Simple Queue Service (Amazon SQS) queue or through messaging to an HTTPS endpoint provided by the subscriber.
     * Subscribers can consume data by directly querying AWS Lake Formation tables in your Amazon S3 bucket through services like Amazon Athena. This subscription type is defined as `LAKEFORMATION` .
     */
    @JvmName("hlbirjhwuocvfujm")
    public suspend fun accessTypes(values: List>) {
        this.accessTypes = Output.all(values)
    }

    /**
     * @param value The ARN for the data lake.
     */
    @JvmName("pyfhckeeaertvxec")
    public suspend fun dataLakeArn(`value`: Output) {
        this.dataLakeArn = value
    }

    /**
     * @param value The supported AWS services from which logs and events are collected.
     */
    @JvmName("fcybjxfuvgscgywv")
    public suspend fun sources(`value`: Output>) {
        this.sources = value
    }

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

    /**
     * @param values The supported AWS services from which logs and events are collected.
     */
    @JvmName("vqtqovhgkwiynyxj")
    public suspend fun sources(values: List>) {
        this.sources = Output.all(values)
    }

    /**
     * @param value The description for your subscriber account in Security Lake.
     */
    @JvmName("pbpkthwmemeqjahw")
    public suspend fun subscriberDescription(`value`: Output) {
        this.subscriberDescription = value
    }

    /**
     * @param value The AWS identity used to access your data.
     */
    @JvmName("tkmutqgmuxlaffbm")
    public suspend fun subscriberIdentity(`value`: Output) {
        this.subscriberIdentity = value
    }

    /**
     * @param value The name of your Security Lake subscriber account.
     */
    @JvmName("jurbdirsjopyykrw")
    public suspend fun subscriberName(`value`: Output) {
        this.subscriberName = value
    }

    /**
     * @param value An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("ldphofjxgwgovnsg")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("tpwhhpppobntajjr")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value You can choose to notify subscribers of new objects with an Amazon Simple Queue Service (Amazon SQS) queue or through messaging to an HTTPS endpoint provided by the subscriber.
     * Subscribers can consume data by directly querying AWS Lake Formation tables in your Amazon S3 bucket through services like Amazon Athena. This subscription type is defined as `LAKEFORMATION` .
     */
    @JvmName("ynneaptplcfjiifb")
    public suspend fun accessTypes(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.accessTypes = mapped
    }

    /**
     * @param values You can choose to notify subscribers of new objects with an Amazon Simple Queue Service (Amazon SQS) queue or through messaging to an HTTPS endpoint provided by the subscriber.
     * Subscribers can consume data by directly querying AWS Lake Formation tables in your Amazon S3 bucket through services like Amazon Athena. This subscription type is defined as `LAKEFORMATION` .
     */
    @JvmName("mggewokuvyhiqytb")
    public suspend fun accessTypes(vararg values: SubscriberAccessTypesItem) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.accessTypes = mapped
    }

    /**
     * @param value The ARN for the data lake.
     */
    @JvmName("vvrnfdhdscmtpwsa")
    public suspend fun dataLakeArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.dataLakeArn = mapped
    }

    /**
     * @param value The supported AWS services from which logs and events are collected.
     */
    @JvmName("wnolbopasynrgqrj")
    public suspend fun sources(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sources = mapped
    }

    /**
     * @param argument The supported AWS services from which logs and events are collected.
     */
    @JvmName("gohysjisxpctsxbq")
    public suspend fun sources(argument: List Unit>) {
        val toBeMapped = argument.toList().map {
            SubscriberSourceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.sources = mapped
    }

    /**
     * @param argument The supported AWS services from which logs and events are collected.
     */
    @JvmName("cbjveyiyrijswofs")
    public suspend fun sources(vararg argument: suspend SubscriberSourceArgsBuilder.() -> Unit) {
        val toBeMapped = argument.toList().map {
            SubscriberSourceArgsBuilder().applySuspend {
                it()
            }.build()
        }
        val mapped = of(toBeMapped)
        this.sources = mapped
    }

    /**
     * @param argument The supported AWS services from which logs and events are collected.
     */
    @JvmName("yeljsxhdgmraevhp")
    public suspend fun sources(argument: suspend SubscriberSourceArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(SubscriberSourceArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.sources = mapped
    }

    /**
     * @param values The supported AWS services from which logs and events are collected.
     */
    @JvmName("ghxojxlvelhoyynd")
    public suspend fun sources(vararg values: SubscriberSourceArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.sources = mapped
    }

    /**
     * @param value The description for your subscriber account in Security Lake.
     */
    @JvmName("octitbiikvnhrxyd")
    public suspend fun subscriberDescription(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subscriberDescription = mapped
    }

    /**
     * @param value The AWS identity used to access your data.
     */
    @JvmName("boyolvunjbovcxwj")
    public suspend fun subscriberIdentity(`value`: SubscriberIdentityPropertiesArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subscriberIdentity = mapped
    }

    /**
     * @param argument The AWS identity used to access your data.
     */
    @JvmName("bafnbwvbnprfxlnc")
    public suspend fun subscriberIdentity(argument: suspend SubscriberIdentityPropertiesArgsBuilder.() -> Unit) {
        val toBeMapped = SubscriberIdentityPropertiesArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.subscriberIdentity = mapped
    }

    /**
     * @param value The name of your Security Lake subscriber account.
     */
    @JvmName("hymqbtnvgakuublc")
    public suspend fun subscriberName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.subscriberName = mapped
    }

    /**
     * @param value An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("qqyfttyibpnmvbgf")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("xbprifyfiuhiimnq")
    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 An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("kbmnalpumntnujqp")
    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 An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("udfglmntgvlcytuv")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values An array of objects, one for each tag to associate with the subscriber. For each tag, you must specify both a tag key and a tag value. A tag value cannot be null, but it can be an empty string.
     */
    @JvmName("rfbnbuonyhanvwov")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    internal fun build(): SubscriberArgs = SubscriberArgs(
        accessTypes = accessTypes,
        dataLakeArn = dataLakeArn,
        sources = sources,
        subscriberDescription = subscriberDescription,
        subscriberIdentity = subscriberIdentity,
        subscriberName = subscriberName,
        tags = tags,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy