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

com.pulumi.awsnative.workspacesweb.kotlin.PortalArgs.kt Maven / Gradle / Ivy

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

package com.pulumi.awsnative.workspacesweb.kotlin

import com.pulumi.awsnative.kotlin.inputs.TagArgs
import com.pulumi.awsnative.kotlin.inputs.TagArgsBuilder
import com.pulumi.awsnative.workspacesweb.PortalArgs.builder
import com.pulumi.awsnative.workspacesweb.kotlin.enums.PortalAuthenticationType
import com.pulumi.awsnative.workspacesweb.kotlin.enums.PortalInstanceType
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.Double
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Definition of AWS::WorkSpacesWeb::Portal Resource Type
 * @property additionalEncryptionContext The additional encryption context of the portal.
 * @property authenticationType The type of authentication integration points used when signing into the web portal. Defaults to `Standard` .
 * `Standard` web portals are authenticated directly through your identity provider (IdP). User and group access to your web portal is controlled through your IdP. You need to include an IdP resource in your template to integrate your IdP with your web portal. Completing the configuration for your IdP requires exchanging WorkSpaces Secure Browser’s SP metadata with your IdP’s IdP metadata. If your IdP requires the SP metadata first before returning the IdP metadata, you should follow these steps:
 * 1. Create and deploy a CloudFormation template with a `Standard` portal with no `IdentityProvider` resource.
 * 2. Retrieve the SP metadata using `Fn:GetAtt` , the WorkSpaces Secure Browser console, or by the calling the `GetPortalServiceProviderMetadata` API.
 * 3. Submit the data to your IdP.
 * 4. Add an `IdentityProvider` resource to your CloudFormation template.
 * `IAM Identity Center` web portals are authenticated through AWS IAM Identity Center . They provide additional features, such as IdP-initiated authentication. Identity sources (including external identity provider integration) and other identity provider information must be configured in IAM Identity Center . User and group assignment must be done through the WorkSpaces Secure Browser console. These cannot be configured in CloudFormation.
 * @property browserSettingsArn The ARN of the browser settings that is associated with this web portal.
 * @property customerManagedKey The customer managed key of the web portal.
 * *Pattern* : `^arn:[\w+=\/,.@-]+:kms:[a-zA-Z0-9\-]*:[a-zA-Z0-9]{1,12}:key\/[a-zA-Z0-9-]+$`
 * @property displayName The name of the web portal.
 * @property instanceType The type and resources of the underlying instance.
 * @property ipAccessSettingsArn The ARN of the IP access settings that is associated with the web portal.
 * @property maxConcurrentSessions The maximum number of concurrent sessions for the portal.
 * @property networkSettingsArn The ARN of the network settings that is associated with the web portal.
 * @property tags The tags to add to the web portal. A tag is a key-value pair.
 * @property trustStoreArn The ARN of the trust store that is associated with the web portal.
 * @property userAccessLoggingSettingsArn The ARN of the user access logging settings that is associated with the web portal.
 * @property userSettingsArn The ARN of the user settings that is associated with the web portal.
 */
public data class PortalArgs(
    public val additionalEncryptionContext: Output>? = null,
    public val authenticationType: Output? = null,
    public val browserSettingsArn: Output? = null,
    public val customerManagedKey: Output? = null,
    public val displayName: Output? = null,
    public val instanceType: Output? = null,
    public val ipAccessSettingsArn: Output? = null,
    public val maxConcurrentSessions: Output? = null,
    public val networkSettingsArn: Output? = null,
    public val tags: Output>? = null,
    public val trustStoreArn: Output? = null,
    public val userAccessLoggingSettingsArn: Output? = null,
    public val userSettingsArn: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.workspacesweb.PortalArgs =
        com.pulumi.awsnative.workspacesweb.PortalArgs.builder()
            .additionalEncryptionContext(
                additionalEncryptionContext?.applyValue({ args0 ->
                    args0.map({ args0 ->
                        args0.key.to(args0.value)
                    }).toMap()
                }),
            )
            .authenticationType(
                authenticationType?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .browserSettingsArn(browserSettingsArn?.applyValue({ args0 -> args0 }))
            .customerManagedKey(customerManagedKey?.applyValue({ args0 -> args0 }))
            .displayName(displayName?.applyValue({ args0 -> args0 }))
            .instanceType(instanceType?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .ipAccessSettingsArn(ipAccessSettingsArn?.applyValue({ args0 -> args0 }))
            .maxConcurrentSessions(maxConcurrentSessions?.applyValue({ args0 -> args0 }))
            .networkSettingsArn(networkSettingsArn?.applyValue({ args0 -> args0 }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .trustStoreArn(trustStoreArn?.applyValue({ args0 -> args0 }))
            .userAccessLoggingSettingsArn(userAccessLoggingSettingsArn?.applyValue({ args0 -> args0 }))
            .userSettingsArn(userSettingsArn?.applyValue({ args0 -> args0 })).build()
}

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

    private var authenticationType: Output? = null

    private var browserSettingsArn: Output? = null

    private var customerManagedKey: Output? = null

    private var displayName: Output? = null

    private var instanceType: Output? = null

    private var ipAccessSettingsArn: Output? = null

    private var maxConcurrentSessions: Output? = null

    private var networkSettingsArn: Output? = null

    private var tags: Output>? = null

    private var trustStoreArn: Output? = null

    private var userAccessLoggingSettingsArn: Output? = null

    private var userSettingsArn: Output? = null

    /**
     * @param value The additional encryption context of the portal.
     */
    @JvmName("elsmcowjmhorjadt")
    public suspend fun additionalEncryptionContext(`value`: Output>) {
        this.additionalEncryptionContext = value
    }

    /**
     * @param value The type of authentication integration points used when signing into the web portal. Defaults to `Standard` .
     * `Standard` web portals are authenticated directly through your identity provider (IdP). User and group access to your web portal is controlled through your IdP. You need to include an IdP resource in your template to integrate your IdP with your web portal. Completing the configuration for your IdP requires exchanging WorkSpaces Secure Browser’s SP metadata with your IdP’s IdP metadata. If your IdP requires the SP metadata first before returning the IdP metadata, you should follow these steps:
     * 1. Create and deploy a CloudFormation template with a `Standard` portal with no `IdentityProvider` resource.
     * 2. Retrieve the SP metadata using `Fn:GetAtt` , the WorkSpaces Secure Browser console, or by the calling the `GetPortalServiceProviderMetadata` API.
     * 3. Submit the data to your IdP.
     * 4. Add an `IdentityProvider` resource to your CloudFormation template.
     * `IAM Identity Center` web portals are authenticated through AWS IAM Identity Center . They provide additional features, such as IdP-initiated authentication. Identity sources (including external identity provider integration) and other identity provider information must be configured in IAM Identity Center . User and group assignment must be done through the WorkSpaces Secure Browser console. These cannot be configured in CloudFormation.
     */
    @JvmName("pwnafdalslfcebwh")
    public suspend fun authenticationType(`value`: Output) {
        this.authenticationType = value
    }

    /**
     * @param value The ARN of the browser settings that is associated with this web portal.
     */
    @JvmName("tsjcqwpqbgvtykaf")
    public suspend fun browserSettingsArn(`value`: Output) {
        this.browserSettingsArn = value
    }

    /**
     * @param value The customer managed key of the web portal.
     * *Pattern* : `^arn:[\w+=\/,.@-]+:kms:[a-zA-Z0-9\-]*:[a-zA-Z0-9]{1,12}:key\/[a-zA-Z0-9-]+$`
     */
    @JvmName("wavshffieigptwxx")
    public suspend fun customerManagedKey(`value`: Output) {
        this.customerManagedKey = value
    }

    /**
     * @param value The name of the web portal.
     */
    @JvmName("pogqbofrfeiefofm")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value The type and resources of the underlying instance.
     */
    @JvmName("sopjseehgttxdgbt")
    public suspend fun instanceType(`value`: Output) {
        this.instanceType = value
    }

    /**
     * @param value The ARN of the IP access settings that is associated with the web portal.
     */
    @JvmName("vkiopmcmbwjgjalp")
    public suspend fun ipAccessSettingsArn(`value`: Output) {
        this.ipAccessSettingsArn = value
    }

    /**
     * @param value The maximum number of concurrent sessions for the portal.
     */
    @JvmName("iowcpiknyyhabbtc")
    public suspend fun maxConcurrentSessions(`value`: Output) {
        this.maxConcurrentSessions = value
    }

    /**
     * @param value The ARN of the network settings that is associated with the web portal.
     */
    @JvmName("xrjeunjnempwhaeq")
    public suspend fun networkSettingsArn(`value`: Output) {
        this.networkSettingsArn = value
    }

    /**
     * @param value The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("tererqmexttohidr")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("mcrxhtyyrnaktvtq")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The ARN of the trust store that is associated with the web portal.
     */
    @JvmName("nydmtskepqnoqxma")
    public suspend fun trustStoreArn(`value`: Output) {
        this.trustStoreArn = value
    }

    /**
     * @param value The ARN of the user access logging settings that is associated with the web portal.
     */
    @JvmName("epaycgatixltxxyw")
    public suspend fun userAccessLoggingSettingsArn(`value`: Output) {
        this.userAccessLoggingSettingsArn = value
    }

    /**
     * @param value The ARN of the user settings that is associated with the web portal.
     */
    @JvmName("jaoamhrlqepxxcxh")
    public suspend fun userSettingsArn(`value`: Output) {
        this.userSettingsArn = value
    }

    /**
     * @param value The additional encryption context of the portal.
     */
    @JvmName("hhaqylhfqddthtdn")
    public suspend fun additionalEncryptionContext(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.additionalEncryptionContext = mapped
    }

    /**
     * @param values The additional encryption context of the portal.
     */
    @JvmName("ncbvrlcwbygarbms")
    public fun additionalEncryptionContext(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.additionalEncryptionContext = mapped
    }

    /**
     * @param value The type of authentication integration points used when signing into the web portal. Defaults to `Standard` .
     * `Standard` web portals are authenticated directly through your identity provider (IdP). User and group access to your web portal is controlled through your IdP. You need to include an IdP resource in your template to integrate your IdP with your web portal. Completing the configuration for your IdP requires exchanging WorkSpaces Secure Browser’s SP metadata with your IdP’s IdP metadata. If your IdP requires the SP metadata first before returning the IdP metadata, you should follow these steps:
     * 1. Create and deploy a CloudFormation template with a `Standard` portal with no `IdentityProvider` resource.
     * 2. Retrieve the SP metadata using `Fn:GetAtt` , the WorkSpaces Secure Browser console, or by the calling the `GetPortalServiceProviderMetadata` API.
     * 3. Submit the data to your IdP.
     * 4. Add an `IdentityProvider` resource to your CloudFormation template.
     * `IAM Identity Center` web portals are authenticated through AWS IAM Identity Center . They provide additional features, such as IdP-initiated authentication. Identity sources (including external identity provider integration) and other identity provider information must be configured in IAM Identity Center . User and group assignment must be done through the WorkSpaces Secure Browser console. These cannot be configured in CloudFormation.
     */
    @JvmName("tiritbadwbchktoj")
    public suspend fun authenticationType(`value`: PortalAuthenticationType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.authenticationType = mapped
    }

    /**
     * @param value The ARN of the browser settings that is associated with this web portal.
     */
    @JvmName("jeqyslfytbpurjaj")
    public suspend fun browserSettingsArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.browserSettingsArn = mapped
    }

    /**
     * @param value The customer managed key of the web portal.
     * *Pattern* : `^arn:[\w+=\/,.@-]+:kms:[a-zA-Z0-9\-]*:[a-zA-Z0-9]{1,12}:key\/[a-zA-Z0-9-]+$`
     */
    @JvmName("vrvdjwaweagrfumn")
    public suspend fun customerManagedKey(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.customerManagedKey = mapped
    }

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

    /**
     * @param value The type and resources of the underlying instance.
     */
    @JvmName("brulpugsmemxqhfg")
    public suspend fun instanceType(`value`: PortalInstanceType?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.instanceType = mapped
    }

    /**
     * @param value The ARN of the IP access settings that is associated with the web portal.
     */
    @JvmName("dhsvgivqvpkyhyqx")
    public suspend fun ipAccessSettingsArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.ipAccessSettingsArn = mapped
    }

    /**
     * @param value The maximum number of concurrent sessions for the portal.
     */
    @JvmName("pmugwesksmeynmop")
    public suspend fun maxConcurrentSessions(`value`: Double?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxConcurrentSessions = mapped
    }

    /**
     * @param value The ARN of the network settings that is associated with the web portal.
     */
    @JvmName("cxbpyiaftojqnxin")
    public suspend fun networkSettingsArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.networkSettingsArn = mapped
    }

    /**
     * @param value The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("nfjjsnaanhvgkrrd")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("muirjkhboyaatcjx")
    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 The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("lmkyoogaymnfxito")
    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 The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("tsmrqvulpywvbkrs")
    public suspend fun tags(argument: suspend TagArgsBuilder.() -> Unit) {
        val toBeMapped = listOf(TagArgsBuilder().applySuspend { argument() }.build())
        val mapped = of(toBeMapped)
        this.tags = mapped
    }

    /**
     * @param values The tags to add to the web portal. A tag is a key-value pair.
     */
    @JvmName("seogbsjsqidifcsf")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The ARN of the trust store that is associated with the web portal.
     */
    @JvmName("novgxagdsfhgosxi")
    public suspend fun trustStoreArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trustStoreArn = mapped
    }

    /**
     * @param value The ARN of the user access logging settings that is associated with the web portal.
     */
    @JvmName("vjcyplgkjakxhaob")
    public suspend fun userAccessLoggingSettingsArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.userAccessLoggingSettingsArn = mapped
    }

    /**
     * @param value The ARN of the user settings that is associated with the web portal.
     */
    @JvmName("bsrltsocasyfdyij")
    public suspend fun userSettingsArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.userSettingsArn = mapped
    }

    internal fun build(): PortalArgs = PortalArgs(
        additionalEncryptionContext = additionalEncryptionContext,
        authenticationType = authenticationType,
        browserSettingsArn = browserSettingsArn,
        customerManagedKey = customerManagedKey,
        displayName = displayName,
        instanceType = instanceType,
        ipAccessSettingsArn = ipAccessSettingsArn,
        maxConcurrentSessions = maxConcurrentSessions,
        networkSettingsArn = networkSettingsArn,
        tags = tags,
        trustStoreArn = trustStoreArn,
        userAccessLoggingSettingsArn = userAccessLoggingSettingsArn,
        userSettingsArn = userSettingsArn,
    )
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy