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

commonMain.aws.sdk.kotlin.services.rum.model.AppMonitorConfiguration.kt Maven / Gradle / Ivy

// Code generated by smithy-kotlin-codegen. DO NOT EDIT!

package aws.sdk.kotlin.services.rum.model



/**
 * This structure contains much of the configuration data for the app monitor.
 */
public class AppMonitorConfiguration private constructor(builder: Builder) {
    /**
     * If you set this to `true`, the RUM web client sets two cookies, a session cookie and a user cookie. The cookies allow the RUM web client to collect data relating to the number of users an application has and the behavior of the application across a sequence of events. Cookies are stored in the top-level domain of the current page.
     */
    public val allowCookies: kotlin.Boolean? = builder.allowCookies
    /**
     * If you set this to `true`, RUM enables X-Ray tracing for the user sessions that RUM samples. RUM adds an X-Ray trace header to allowed HTTP requests. It also records an X-Ray segment for allowed HTTP requests. You can see traces and segments from these user sessions in the X-Ray console and the CloudWatch ServiceLens console. For more information, see [What is X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)
     */
    public val enableXRay: kotlin.Boolean? = builder.enableXRay
    /**
     * A list of URLs in your website or application to exclude from RUM data collection.
     *
     * You can't include both `ExcludedPages` and `IncludedPages` in the same operation.
     */
    public val excludedPages: List? = builder.excludedPages
    /**
     * A list of pages in your application that are to be displayed with a "favorite" icon in the CloudWatch RUM console.
     */
    public val favoritePages: List? = builder.favoritePages
    /**
     * The ARN of the guest IAM role that is attached to the Amazon Cognito identity pool that is used to authorize the sending of data to RUM.
     *
     * It is possible that an app monitor does not have a value for `GuestRoleArn`. For example, this can happen when you use the console to create an app monitor and you allow CloudWatch RUM to create a new identity pool for Authorization. In this case, `GuestRoleArn` is not present in the [GetAppMonitor](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_GetAppMonitor.html) response because it is not stored by the service.
     *
     * If this issue affects you, you can take one of the following steps:
     * + Use the Cloud Development Kit (CDK) to create an identity pool and the associated IAM role, and use that for your app monitor.
     * + Make a separate [GetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetIdentityPoolRoles.html) call to Amazon Cognito to retrieve the `GuestRoleArn`.
     */
    public val guestRoleArn: kotlin.String? = builder.guestRoleArn
    /**
     * The ID of the Amazon Cognito identity pool that is used to authorize the sending of data to RUM.
     */
    public val identityPoolId: kotlin.String? = builder.identityPoolId
    /**
     * If this app monitor is to collect data from only certain pages in your application, this structure lists those pages.
     *
     * You can't include both `ExcludedPages` and `IncludedPages` in the same operation.
     */
    public val includedPages: List? = builder.includedPages
    /**
     * Specifies the portion of user sessions to use for RUM data collection. Choosing a higher portion gives you more data but also incurs more costs.
     *
     * The range for this value is 0 to 1 inclusive. Setting this to 1 means that 100% of user sessions are sampled, and setting it to 0.1 means that 10% of user sessions are sampled.
     *
     * If you omit this parameter, the default of 0.1 is used, and 10% of sessions will be sampled.
     */
    public val sessionSampleRate: kotlin.Double = builder.sessionSampleRate
    /**
     * An array that lists the types of telemetry data that this app monitor is to collect.
     * + `errors` indicates that RUM collects data about unhandled JavaScript errors raised by your application.
     * + `performance` indicates that RUM collects performance data about how your application and its resources are loaded and rendered. This includes Core Web Vitals.
     * + `http` indicates that RUM collects data about HTTP errors thrown by your application.
     */
    public val telemetries: List? = builder.telemetries

    public companion object {
        public operator fun invoke(block: Builder.() -> kotlin.Unit): aws.sdk.kotlin.services.rum.model.AppMonitorConfiguration = Builder().apply(block).build()
    }

    override fun toString(): kotlin.String = buildString {
        append("AppMonitorConfiguration(")
        append("allowCookies=$allowCookies,")
        append("enableXRay=$enableXRay,")
        append("excludedPages=$excludedPages,")
        append("favoritePages=$favoritePages,")
        append("guestRoleArn=$guestRoleArn,")
        append("identityPoolId=$identityPoolId,")
        append("includedPages=$includedPages,")
        append("sessionSampleRate=$sessionSampleRate,")
        append("telemetries=$telemetries")
        append(")")
    }

    override fun hashCode(): kotlin.Int {
        var result = allowCookies?.hashCode() ?: 0
        result = 31 * result + (enableXRay?.hashCode() ?: 0)
        result = 31 * result + (excludedPages?.hashCode() ?: 0)
        result = 31 * result + (favoritePages?.hashCode() ?: 0)
        result = 31 * result + (guestRoleArn?.hashCode() ?: 0)
        result = 31 * result + (identityPoolId?.hashCode() ?: 0)
        result = 31 * result + (includedPages?.hashCode() ?: 0)
        result = 31 * result + (sessionSampleRate.hashCode())
        result = 31 * result + (telemetries?.hashCode() ?: 0)
        return result
    }

    override fun equals(other: kotlin.Any?): kotlin.Boolean {
        if (this === other) return true
        if (other == null || this::class != other::class) return false

        other as AppMonitorConfiguration

        if (allowCookies != other.allowCookies) return false
        if (enableXRay != other.enableXRay) return false
        if (excludedPages != other.excludedPages) return false
        if (favoritePages != other.favoritePages) return false
        if (guestRoleArn != other.guestRoleArn) return false
        if (identityPoolId != other.identityPoolId) return false
        if (includedPages != other.includedPages) return false
        if (sessionSampleRate != other.sessionSampleRate) return false
        if (telemetries != other.telemetries) return false

        return true
    }

    public inline fun copy(block: Builder.() -> kotlin.Unit = {}): aws.sdk.kotlin.services.rum.model.AppMonitorConfiguration = Builder(this).apply(block).build()

    public class Builder {
        /**
         * If you set this to `true`, the RUM web client sets two cookies, a session cookie and a user cookie. The cookies allow the RUM web client to collect data relating to the number of users an application has and the behavior of the application across a sequence of events. Cookies are stored in the top-level domain of the current page.
         */
        public var allowCookies: kotlin.Boolean? = null
        /**
         * If you set this to `true`, RUM enables X-Ray tracing for the user sessions that RUM samples. RUM adds an X-Ray trace header to allowed HTTP requests. It also records an X-Ray segment for allowed HTTP requests. You can see traces and segments from these user sessions in the X-Ray console and the CloudWatch ServiceLens console. For more information, see [What is X-Ray?](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html)
         */
        public var enableXRay: kotlin.Boolean? = null
        /**
         * A list of URLs in your website or application to exclude from RUM data collection.
         *
         * You can't include both `ExcludedPages` and `IncludedPages` in the same operation.
         */
        public var excludedPages: List? = null
        /**
         * A list of pages in your application that are to be displayed with a "favorite" icon in the CloudWatch RUM console.
         */
        public var favoritePages: List? = null
        /**
         * The ARN of the guest IAM role that is attached to the Amazon Cognito identity pool that is used to authorize the sending of data to RUM.
         *
         * It is possible that an app monitor does not have a value for `GuestRoleArn`. For example, this can happen when you use the console to create an app monitor and you allow CloudWatch RUM to create a new identity pool for Authorization. In this case, `GuestRoleArn` is not present in the [GetAppMonitor](https://docs.aws.amazon.com/cloudwatchrum/latest/APIReference/API_GetAppMonitor.html) response because it is not stored by the service.
         *
         * If this issue affects you, you can take one of the following steps:
         * + Use the Cloud Development Kit (CDK) to create an identity pool and the associated IAM role, and use that for your app monitor.
         * + Make a separate [GetIdentityPoolRoles](https://docs.aws.amazon.com/cognitoidentity/latest/APIReference/API_GetIdentityPoolRoles.html) call to Amazon Cognito to retrieve the `GuestRoleArn`.
         */
        public var guestRoleArn: kotlin.String? = null
        /**
         * The ID of the Amazon Cognito identity pool that is used to authorize the sending of data to RUM.
         */
        public var identityPoolId: kotlin.String? = null
        /**
         * If this app monitor is to collect data from only certain pages in your application, this structure lists those pages.
         *
         * You can't include both `ExcludedPages` and `IncludedPages` in the same operation.
         */
        public var includedPages: List? = null
        /**
         * Specifies the portion of user sessions to use for RUM data collection. Choosing a higher portion gives you more data but also incurs more costs.
         *
         * The range for this value is 0 to 1 inclusive. Setting this to 1 means that 100% of user sessions are sampled, and setting it to 0.1 means that 10% of user sessions are sampled.
         *
         * If you omit this parameter, the default of 0.1 is used, and 10% of sessions will be sampled.
         */
        public var sessionSampleRate: kotlin.Double = 0.0
        /**
         * An array that lists the types of telemetry data that this app monitor is to collect.
         * + `errors` indicates that RUM collects data about unhandled JavaScript errors raised by your application.
         * + `performance` indicates that RUM collects performance data about how your application and its resources are loaded and rendered. This includes Core Web Vitals.
         * + `http` indicates that RUM collects data about HTTP errors thrown by your application.
         */
        public var telemetries: List? = null

        @PublishedApi
        internal constructor()
        @PublishedApi
        internal constructor(x: aws.sdk.kotlin.services.rum.model.AppMonitorConfiguration) : this() {
            this.allowCookies = x.allowCookies
            this.enableXRay = x.enableXRay
            this.excludedPages = x.excludedPages
            this.favoritePages = x.favoritePages
            this.guestRoleArn = x.guestRoleArn
            this.identityPoolId = x.identityPoolId
            this.includedPages = x.includedPages
            this.sessionSampleRate = x.sessionSampleRate
            this.telemetries = x.telemetries
        }

        @PublishedApi
        internal fun build(): aws.sdk.kotlin.services.rum.model.AppMonitorConfiguration = AppMonitorConfiguration(this)

        internal fun correctErrors(): Builder {
            return this
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy