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

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

package com.pulumi.awsnative.internetmonitor.kotlin

import com.pulumi.awsnative.internetmonitor.MonitorArgs.builder
import com.pulumi.awsnative.internetmonitor.kotlin.enums.MonitorConfigState
import com.pulumi.awsnative.internetmonitor.kotlin.inputs.MonitorHealthEventsConfigArgs
import com.pulumi.awsnative.internetmonitor.kotlin.inputs.MonitorHealthEventsConfigArgsBuilder
import com.pulumi.awsnative.internetmonitor.kotlin.inputs.MonitorInternetMeasurementsLogDeliveryArgs
import com.pulumi.awsnative.internetmonitor.kotlin.inputs.MonitorInternetMeasurementsLogDeliveryArgsBuilder
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.Boolean
import kotlin.Int
import kotlin.String
import kotlin.Suppress
import kotlin.Unit
import kotlin.collections.List
import kotlin.jvm.JvmName

/**
 * Represents a monitor, which defines the monitoring boundaries for measurements that Internet Monitor publishes information about for an application
 * @property healthEventsConfig A complex type with the configuration information that determines the threshold and other conditions for when Internet Monitor creates a health event for an overall performance or availability issue, across an application's geographies.
 * Defines the percentages, for overall performance scores and availability scores for an application, that are the thresholds for when Amazon CloudWatch Internet Monitor creates a health event. You can override the defaults to set a custom threshold for overall performance or availability scores, or both.
 * You can also set thresholds for local health scores,, where Internet Monitor creates a health event when scores cross a threshold for one or more city-networks, in addition to creating an event when an overall score crosses a threshold.
 * If you don't set a health event threshold, the default value is 95%.
 * For local thresholds, you also set a minimum percentage of overall traffic that is impacted by an issue before Internet Monitor creates an event. In addition, you can disable local thresholds, for performance scores, availability scores, or both.
 * For more information, see [Change health event thresholds](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-overview.html#IMUpdateThresholdFromOverview) in the Internet Monitor section of the *CloudWatch User Guide* .
 * @property includeLinkedAccounts A boolean option that you can set to `TRUE` to include monitors for linked accounts in a list of monitors, when you've set up cross-account sharing in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
 * @property internetMeasurementsLogDelivery Publish internet measurements for a monitor for all city-networks (up to the 500,000 service limit) to another location, such as an Amazon S3 bucket. Measurements are also published to Amazon CloudWatch Logs for the first 500 (by traffic volume) city-networks (client locations and ASNs, typically internet service providers or ISPs).
 * @property linkedAccountId The account ID for an account that you've set up cross-account sharing for in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
 * @property maxCityNetworksToMonitor The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network, such as an internet service provider, that clients access the resources through.
 * For more information, see [Choosing a city-network maximum value](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/IMCityNetworksMaximum.html) in *Using Amazon CloudWatch Internet Monitor* .
 * @property monitorName The name of the monitor. A monitor name can contain only alphanumeric characters, dashes (-), periods (.), and underscores (_).
 * @property resources The resources that have been added for the monitor, listed by their Amazon Resource Names (ARNs). Use this option to add or remove resources when making an update.
 * > Be aware that if you include content in the `Resources` field when you update a monitor, the `ResourcesToAdd` and `ResourcesToRemove` fields must be empty.
 * @property resourcesToAdd The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). Resources can be Amazon Virtual Private Cloud VPCs, Network Load Balancers (NLBs), Amazon CloudFront distributions, or Amazon WorkSpaces directories.
 * You can add a combination of VPCs and CloudFront distributions, or you can add WorkSpaces directories, or you can add NLBs. You can't add NLBs or WorkSpaces directories together with any other resources.
 * If you add only VPC resources, at least one VPC must have an Internet Gateway attached to it, to make sure that it has internet connectivity.
 * > You can specify this field for a monitor update only if the `Resources` field is empty.
 * @property resourcesToRemove The resources to remove from a monitor, which you provide as a set of Amazon Resource Names (ARNs)
 * > You can specify this field for a monitor update only if the `Resources` field is empty.
 * @property status The status of a monitor. The accepted values that you can specify for `Status` are `ACTIVE` and `INACTIVE` .
 * @property tags The tags for a monitor, listed as a set of *key:value* pairs.
 * @property trafficPercentageToMonitor The percentage of the internet-facing traffic for your application that you want to monitor. You can also, optionally, set a limit for the number of city-networks (client locations and ASNs, typically internet service providers) that Internet Monitor will monitor traffic for. The city-networks maximum limit caps the number of city-networks that Internet Monitor monitors for your application, regardless of the percentage of traffic that you choose to monitor.
 */
public data class MonitorArgs(
    public val healthEventsConfig: Output? = null,
    public val includeLinkedAccounts: Output? = null,
    public val internetMeasurementsLogDelivery: Output? =
        null,
    public val linkedAccountId: Output? = null,
    public val maxCityNetworksToMonitor: Output? = null,
    public val monitorName: Output? = null,
    public val resources: Output>? = null,
    public val resourcesToAdd: Output>? = null,
    public val resourcesToRemove: Output>? = null,
    public val status: Output? = null,
    public val tags: Output>? = null,
    public val trafficPercentageToMonitor: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.awsnative.internetmonitor.MonitorArgs =
        com.pulumi.awsnative.internetmonitor.MonitorArgs.builder()
            .healthEventsConfig(
                healthEventsConfig?.applyValue({ args0 ->
                    args0.let({ args0 ->
                        args0.toJava()
                    })
                }),
            )
            .includeLinkedAccounts(includeLinkedAccounts?.applyValue({ args0 -> args0 }))
            .internetMeasurementsLogDelivery(
                internetMeasurementsLogDelivery?.applyValue({ args0 ->
                    args0.let({ args0 -> args0.toJava() })
                }),
            )
            .linkedAccountId(linkedAccountId?.applyValue({ args0 -> args0 }))
            .maxCityNetworksToMonitor(maxCityNetworksToMonitor?.applyValue({ args0 -> args0 }))
            .monitorName(monitorName?.applyValue({ args0 -> args0 }))
            .resources(resources?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .resourcesToAdd(resourcesToAdd?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .resourcesToRemove(resourcesToRemove?.applyValue({ args0 -> args0.map({ args0 -> args0 }) }))
            .status(status?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
            .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
            .trafficPercentageToMonitor(trafficPercentageToMonitor?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [MonitorArgs].
 */
@PulumiTagMarker
public class MonitorArgsBuilder internal constructor() {
    private var healthEventsConfig: Output? = null

    private var includeLinkedAccounts: Output? = null

    private var internetMeasurementsLogDelivery: Output? =
        null

    private var linkedAccountId: Output? = null

    private var maxCityNetworksToMonitor: Output? = null

    private var monitorName: Output? = null

    private var resources: Output>? = null

    private var resourcesToAdd: Output>? = null

    private var resourcesToRemove: Output>? = null

    private var status: Output? = null

    private var tags: Output>? = null

    private var trafficPercentageToMonitor: Output? = null

    /**
     * @param value A complex type with the configuration information that determines the threshold and other conditions for when Internet Monitor creates a health event for an overall performance or availability issue, across an application's geographies.
     * Defines the percentages, for overall performance scores and availability scores for an application, that are the thresholds for when Amazon CloudWatch Internet Monitor creates a health event. You can override the defaults to set a custom threshold for overall performance or availability scores, or both.
     * You can also set thresholds for local health scores,, where Internet Monitor creates a health event when scores cross a threshold for one or more city-networks, in addition to creating an event when an overall score crosses a threshold.
     * If you don't set a health event threshold, the default value is 95%.
     * For local thresholds, you also set a minimum percentage of overall traffic that is impacted by an issue before Internet Monitor creates an event. In addition, you can disable local thresholds, for performance scores, availability scores, or both.
     * For more information, see [Change health event thresholds](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-overview.html#IMUpdateThresholdFromOverview) in the Internet Monitor section of the *CloudWatch User Guide* .
     */
    @JvmName("qxapuidadasosddk")
    public suspend fun healthEventsConfig(`value`: Output) {
        this.healthEventsConfig = value
    }

    /**
     * @param value A boolean option that you can set to `TRUE` to include monitors for linked accounts in a list of monitors, when you've set up cross-account sharing in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
     */
    @JvmName("aqrmvqbqxjeklwqg")
    public suspend fun includeLinkedAccounts(`value`: Output) {
        this.includeLinkedAccounts = value
    }

    /**
     * @param value Publish internet measurements for a monitor for all city-networks (up to the 500,000 service limit) to another location, such as an Amazon S3 bucket. Measurements are also published to Amazon CloudWatch Logs for the first 500 (by traffic volume) city-networks (client locations and ASNs, typically internet service providers or ISPs).
     */
    @JvmName("qhdtxqlhwdivwqan")
    public suspend fun internetMeasurementsLogDelivery(`value`: Output) {
        this.internetMeasurementsLogDelivery = value
    }

    /**
     * @param value The account ID for an account that you've set up cross-account sharing for in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
     */
    @JvmName("fydkmtgxyxjopbwc")
    public suspend fun linkedAccountId(`value`: Output) {
        this.linkedAccountId = value
    }

    /**
     * @param value The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network, such as an internet service provider, that clients access the resources through.
     * For more information, see [Choosing a city-network maximum value](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/IMCityNetworksMaximum.html) in *Using Amazon CloudWatch Internet Monitor* .
     */
    @JvmName("whjrmuxvdhmwulos")
    public suspend fun maxCityNetworksToMonitor(`value`: Output) {
        this.maxCityNetworksToMonitor = value
    }

    /**
     * @param value The name of the monitor. A monitor name can contain only alphanumeric characters, dashes (-), periods (.), and underscores (_).
     */
    @JvmName("xifpubjcalxnjtok")
    public suspend fun monitorName(`value`: Output) {
        this.monitorName = value
    }

    /**
     * @param value The resources that have been added for the monitor, listed by their Amazon Resource Names (ARNs). Use this option to add or remove resources when making an update.
     * > Be aware that if you include content in the `Resources` field when you update a monitor, the `ResourcesToAdd` and `ResourcesToRemove` fields must be empty.
     */
    @JvmName("jkuguxgceclbbulr")
    public suspend fun resources(`value`: Output>) {
        this.resources = value
    }

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

    /**
     * @param values The resources that have been added for the monitor, listed by their Amazon Resource Names (ARNs). Use this option to add or remove resources when making an update.
     * > Be aware that if you include content in the `Resources` field when you update a monitor, the `ResourcesToAdd` and `ResourcesToRemove` fields must be empty.
     */
    @JvmName("ilyffacnswhakigp")
    public suspend fun resources(values: List>) {
        this.resources = Output.all(values)
    }

    /**
     * @param value The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). Resources can be Amazon Virtual Private Cloud VPCs, Network Load Balancers (NLBs), Amazon CloudFront distributions, or Amazon WorkSpaces directories.
     * You can add a combination of VPCs and CloudFront distributions, or you can add WorkSpaces directories, or you can add NLBs. You can't add NLBs or WorkSpaces directories together with any other resources.
     * If you add only VPC resources, at least one VPC must have an Internet Gateway attached to it, to make sure that it has internet connectivity.
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("xakedjkfkrlpbdmr")
    public suspend fun resourcesToAdd(`value`: Output>) {
        this.resourcesToAdd = value
    }

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

    /**
     * @param values The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). Resources can be Amazon Virtual Private Cloud VPCs, Network Load Balancers (NLBs), Amazon CloudFront distributions, or Amazon WorkSpaces directories.
     * You can add a combination of VPCs and CloudFront distributions, or you can add WorkSpaces directories, or you can add NLBs. You can't add NLBs or WorkSpaces directories together with any other resources.
     * If you add only VPC resources, at least one VPC must have an Internet Gateway attached to it, to make sure that it has internet connectivity.
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("igldspsvvhuvfsqx")
    public suspend fun resourcesToAdd(values: List>) {
        this.resourcesToAdd = Output.all(values)
    }

    /**
     * @param value The resources to remove from a monitor, which you provide as a set of Amazon Resource Names (ARNs)
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("xtgwnfyoruhwgfky")
    public suspend fun resourcesToRemove(`value`: Output>) {
        this.resourcesToRemove = value
    }

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

    /**
     * @param values The resources to remove from a monitor, which you provide as a set of Amazon Resource Names (ARNs)
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("kvrhcxjnjmcthxkv")
    public suspend fun resourcesToRemove(values: List>) {
        this.resourcesToRemove = Output.all(values)
    }

    /**
     * @param value The status of a monitor. The accepted values that you can specify for `Status` are `ACTIVE` and `INACTIVE` .
     */
    @JvmName("kivafdhuxqdqosqm")
    public suspend fun status(`value`: Output) {
        this.status = value
    }

    /**
     * @param value The tags for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("gsxvhimokfudcpyc")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

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

    /**
     * @param values The tags for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("srntefnharmywbhc")
    public suspend fun tags(values: List>) {
        this.tags = Output.all(values)
    }

    /**
     * @param value The percentage of the internet-facing traffic for your application that you want to monitor. You can also, optionally, set a limit for the number of city-networks (client locations and ASNs, typically internet service providers) that Internet Monitor will monitor traffic for. The city-networks maximum limit caps the number of city-networks that Internet Monitor monitors for your application, regardless of the percentage of traffic that you choose to monitor.
     */
    @JvmName("vnhbrwjnbqccjtvg")
    public suspend fun trafficPercentageToMonitor(`value`: Output) {
        this.trafficPercentageToMonitor = value
    }

    /**
     * @param value A complex type with the configuration information that determines the threshold and other conditions for when Internet Monitor creates a health event for an overall performance or availability issue, across an application's geographies.
     * Defines the percentages, for overall performance scores and availability scores for an application, that are the thresholds for when Amazon CloudWatch Internet Monitor creates a health event. You can override the defaults to set a custom threshold for overall performance or availability scores, or both.
     * You can also set thresholds for local health scores,, where Internet Monitor creates a health event when scores cross a threshold for one or more city-networks, in addition to creating an event when an overall score crosses a threshold.
     * If you don't set a health event threshold, the default value is 95%.
     * For local thresholds, you also set a minimum percentage of overall traffic that is impacted by an issue before Internet Monitor creates an event. In addition, you can disable local thresholds, for performance scores, availability scores, or both.
     * For more information, see [Change health event thresholds](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-overview.html#IMUpdateThresholdFromOverview) in the Internet Monitor section of the *CloudWatch User Guide* .
     */
    @JvmName("fjqarvfpbknsxlvq")
    public suspend fun healthEventsConfig(`value`: MonitorHealthEventsConfigArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.healthEventsConfig = mapped
    }

    /**
     * @param argument A complex type with the configuration information that determines the threshold and other conditions for when Internet Monitor creates a health event for an overall performance or availability issue, across an application's geographies.
     * Defines the percentages, for overall performance scores and availability scores for an application, that are the thresholds for when Amazon CloudWatch Internet Monitor creates a health event. You can override the defaults to set a custom threshold for overall performance or availability scores, or both.
     * You can also set thresholds for local health scores,, where Internet Monitor creates a health event when scores cross a threshold for one or more city-networks, in addition to creating an event when an overall score crosses a threshold.
     * If you don't set a health event threshold, the default value is 95%.
     * For local thresholds, you also set a minimum percentage of overall traffic that is impacted by an issue before Internet Monitor creates an event. In addition, you can disable local thresholds, for performance scores, availability scores, or both.
     * For more information, see [Change health event thresholds](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-IM-overview.html#IMUpdateThresholdFromOverview) in the Internet Monitor section of the *CloudWatch User Guide* .
     */
    @JvmName("ufkkeerbsehumptw")
    public suspend fun healthEventsConfig(argument: suspend MonitorHealthEventsConfigArgsBuilder.() -> Unit) {
        val toBeMapped = MonitorHealthEventsConfigArgsBuilder().applySuspend { argument() }.build()
        val mapped = of(toBeMapped)
        this.healthEventsConfig = mapped
    }

    /**
     * @param value A boolean option that you can set to `TRUE` to include monitors for linked accounts in a list of monitors, when you've set up cross-account sharing in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
     */
    @JvmName("kmuyovryxublfgbv")
    public suspend fun includeLinkedAccounts(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.includeLinkedAccounts = mapped
    }

    /**
     * @param value Publish internet measurements for a monitor for all city-networks (up to the 500,000 service limit) to another location, such as an Amazon S3 bucket. Measurements are also published to Amazon CloudWatch Logs for the first 500 (by traffic volume) city-networks (client locations and ASNs, typically internet service providers or ISPs).
     */
    @JvmName("ccyvhtdufrmbydko")
    public suspend fun internetMeasurementsLogDelivery(`value`: MonitorInternetMeasurementsLogDeliveryArgs?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.internetMeasurementsLogDelivery = mapped
    }

    /**
     * @param argument Publish internet measurements for a monitor for all city-networks (up to the 500,000 service limit) to another location, such as an Amazon S3 bucket. Measurements are also published to Amazon CloudWatch Logs for the first 500 (by traffic volume) city-networks (client locations and ASNs, typically internet service providers or ISPs).
     */
    @JvmName("vamtbmybfopxqpav")
    public suspend fun internetMeasurementsLogDelivery(argument: suspend MonitorInternetMeasurementsLogDeliveryArgsBuilder.() -> Unit) {
        val toBeMapped = MonitorInternetMeasurementsLogDeliveryArgsBuilder().applySuspend {
            argument()
        }.build()
        val mapped = of(toBeMapped)
        this.internetMeasurementsLogDelivery = mapped
    }

    /**
     * @param value The account ID for an account that you've set up cross-account sharing for in Internet Monitor. You configure cross-account sharing by using Amazon CloudWatch Observability Access Manager. For more information, see [Internet Monitor cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cwim-cross-account.html) in the Amazon CloudWatch User Guide.
     */
    @JvmName("hatipgvmbtrguqtx")
    public suspend fun linkedAccountId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.linkedAccountId = mapped
    }

    /**
     * @param value The maximum number of city-networks to monitor for your resources. A city-network is the location (city) where clients access your application resources from and the network, such as an internet service provider, that clients access the resources through.
     * For more information, see [Choosing a city-network maximum value](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/IMCityNetworksMaximum.html) in *Using Amazon CloudWatch Internet Monitor* .
     */
    @JvmName("sriswjikalrriwwk")
    public suspend fun maxCityNetworksToMonitor(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.maxCityNetworksToMonitor = mapped
    }

    /**
     * @param value The name of the monitor. A monitor name can contain only alphanumeric characters, dashes (-), periods (.), and underscores (_).
     */
    @JvmName("iueqygkfkddxbswm")
    public suspend fun monitorName(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.monitorName = mapped
    }

    /**
     * @param value The resources that have been added for the monitor, listed by their Amazon Resource Names (ARNs). Use this option to add or remove resources when making an update.
     * > Be aware that if you include content in the `Resources` field when you update a monitor, the `ResourcesToAdd` and `ResourcesToRemove` fields must be empty.
     */
    @JvmName("fbvgavdxqlmebbbl")
    public suspend fun resources(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resources = mapped
    }

    /**
     * @param values The resources that have been added for the monitor, listed by their Amazon Resource Names (ARNs). Use this option to add or remove resources when making an update.
     * > Be aware that if you include content in the `Resources` field when you update a monitor, the `ResourcesToAdd` and `ResourcesToRemove` fields must be empty.
     */
    @JvmName("fkcsbxwhllgdxmws")
    public suspend fun resources(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resources = mapped
    }

    /**
     * @param value The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). Resources can be Amazon Virtual Private Cloud VPCs, Network Load Balancers (NLBs), Amazon CloudFront distributions, or Amazon WorkSpaces directories.
     * You can add a combination of VPCs and CloudFront distributions, or you can add WorkSpaces directories, or you can add NLBs. You can't add NLBs or WorkSpaces directories together with any other resources.
     * If you add only VPC resources, at least one VPC must have an Internet Gateway attached to it, to make sure that it has internet connectivity.
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("sljcipdfnkcsdqcj")
    public suspend fun resourcesToAdd(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourcesToAdd = mapped
    }

    /**
     * @param values The resources to include in a monitor, which you provide as a set of Amazon Resource Names (ARNs). Resources can be Amazon Virtual Private Cloud VPCs, Network Load Balancers (NLBs), Amazon CloudFront distributions, or Amazon WorkSpaces directories.
     * You can add a combination of VPCs and CloudFront distributions, or you can add WorkSpaces directories, or you can add NLBs. You can't add NLBs or WorkSpaces directories together with any other resources.
     * If you add only VPC resources, at least one VPC must have an Internet Gateway attached to it, to make sure that it has internet connectivity.
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("lxkdahieyekhljqv")
    public suspend fun resourcesToAdd(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resourcesToAdd = mapped
    }

    /**
     * @param value The resources to remove from a monitor, which you provide as a set of Amazon Resource Names (ARNs)
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("gcnluxumloiokijc")
    public suspend fun resourcesToRemove(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.resourcesToRemove = mapped
    }

    /**
     * @param values The resources to remove from a monitor, which you provide as a set of Amazon Resource Names (ARNs)
     * > You can specify this field for a monitor update only if the `Resources` field is empty.
     */
    @JvmName("yqwkparjcicpmddr")
    public suspend fun resourcesToRemove(vararg values: String) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.resourcesToRemove = mapped
    }

    /**
     * @param value The status of a monitor. The accepted values that you can specify for `Status` are `ACTIVE` and `INACTIVE` .
     */
    @JvmName("hwctslfjisbbasjx")
    public suspend fun status(`value`: MonitorConfigState?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.status = mapped
    }

    /**
     * @param value The tags for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("einnmubdkjrrxeid")
    public suspend fun tags(`value`: List?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param argument The tags for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("cwismckbhhqfxxeg")
    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 for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("iutsjvypetvmrrdo")
    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 for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("eaolqdruroqepndm")
    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 for a monitor, listed as a set of *key:value* pairs.
     */
    @JvmName("dxdlrtemjdinobkn")
    public suspend fun tags(vararg values: TagArgs) {
        val toBeMapped = values.toList()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value The percentage of the internet-facing traffic for your application that you want to monitor. You can also, optionally, set a limit for the number of city-networks (client locations and ASNs, typically internet service providers) that Internet Monitor will monitor traffic for. The city-networks maximum limit caps the number of city-networks that Internet Monitor monitors for your application, regardless of the percentage of traffic that you choose to monitor.
     */
    @JvmName("fumjrkuxqmjysuql")
    public suspend fun trafficPercentageToMonitor(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.trafficPercentageToMonitor = mapped
    }

    internal fun build(): MonitorArgs = MonitorArgs(
        healthEventsConfig = healthEventsConfig,
        includeLinkedAccounts = includeLinkedAccounts,
        internetMeasurementsLogDelivery = internetMeasurementsLogDelivery,
        linkedAccountId = linkedAccountId,
        maxCityNetworksToMonitor = maxCityNetworksToMonitor,
        monitorName = monitorName,
        resources = resources,
        resourcesToAdd = resourcesToAdd,
        resourcesToRemove = resourcesToRemove,
        status = status,
        tags = tags,
        trafficPercentageToMonitor = trafficPercentageToMonitor,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy