com.pulumi.awsnative.apigateway.kotlin.UsagePlanArgs.kt Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of pulumi-aws-native-kotlin Show documentation
Show all versions of pulumi-aws-native-kotlin Show documentation
Build cloud applications and infrastructure by combining the safety and reliability of infrastructure as code with the power of the Kotlin programming language.
@file:Suppress("NAME_SHADOWING", "DEPRECATION")
package com.pulumi.awsnative.apigateway.kotlin
import com.pulumi.awsnative.apigateway.UsagePlanArgs.builder
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanApiStageArgs
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanApiStageArgsBuilder
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanQuotaSettingsArgs
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanQuotaSettingsArgsBuilder
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanThrottleSettingsArgs
import com.pulumi.awsnative.apigateway.kotlin.inputs.UsagePlanThrottleSettingsArgsBuilder
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
/**
* The ``AWS::ApiGateway::UsagePlan`` resource creates a usage plan for deployed APIs. A usage plan sets a target for the throttling and quota limits on individual client API keys. For more information, see [Creating and Using API Usage Plans in Amazon API Gateway](https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-api-usage-plans.html) in the *API Gateway Developer Guide*.
* In some cases clients can exceed the targets that you set. Don’t rely on usage plans to control costs. Consider using [](https://docs.aws.amazon.com/cost-management/latest/userguide/budgets-managing-costs.html) to monitor costs and [](https://docs.aws.amazon.com/waf/latest/developerguide/waf-chapter.html) to manage API requests.
* @property apiStages The associated API stages of a usage plan.
* @property description The description of a usage plan.
* @property quota The target maximum number of permitted requests per a given unit time interval.
* @property tags The collection of tags. Each tag element is associated with a given resource.
* @property throttle A map containing method level throttling information for API stage in a usage plan.
* @property usagePlanName The name of a usage plan.
*/
public data class UsagePlanArgs(
public val apiStages: Output>? = null,
public val description: Output? = null,
public val quota: Output? = null,
public val tags: Output>? = null,
public val throttle: Output? = null,
public val usagePlanName: Output? = null,
) : ConvertibleToJava {
override fun toJava(): com.pulumi.awsnative.apigateway.UsagePlanArgs =
com.pulumi.awsnative.apigateway.UsagePlanArgs.builder()
.apiStages(
apiStages?.applyValue({ args0 ->
args0.map({ args0 ->
args0.let({ args0 ->
args0.toJava()
})
})
}),
)
.description(description?.applyValue({ args0 -> args0 }))
.quota(quota?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.let({ args0 -> args0.toJava() }) }) }))
.throttle(throttle?.applyValue({ args0 -> args0.let({ args0 -> args0.toJava() }) }))
.usagePlanName(usagePlanName?.applyValue({ args0 -> args0 })).build()
}
/**
* Builder for [UsagePlanArgs].
*/
@PulumiTagMarker
public class UsagePlanArgsBuilder internal constructor() {
private var apiStages: Output>? = null
private var description: Output? = null
private var quota: Output? = null
private var tags: Output>? = null
private var throttle: Output? = null
private var usagePlanName: Output? = null
/**
* @param value The associated API stages of a usage plan.
*/
@JvmName("ollctktmnxmojpdq")
public suspend fun apiStages(`value`: Output>) {
this.apiStages = value
}
@JvmName("ufthidtgnnhemeyj")
public suspend fun apiStages(vararg values: Output) {
this.apiStages = Output.all(values.asList())
}
/**
* @param values The associated API stages of a usage plan.
*/
@JvmName("gultxoglmowbpboo")
public suspend fun apiStages(values: List