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

com.pulumi.aws.sns.kotlin.TopicArgs.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: 6.57.0.0
Show newest version
@file:Suppress("NAME_SHADOWING", "DEPRECATION")

package com.pulumi.aws.sns.kotlin

import com.pulumi.aws.sns.TopicArgs.builder
import com.pulumi.core.Output
import com.pulumi.core.Output.of
import com.pulumi.kotlin.ConvertibleToJava
import com.pulumi.kotlin.PulumiTagMarker
import kotlin.Boolean
import kotlin.Int
import kotlin.Pair
import kotlin.String
import kotlin.Suppress
import kotlin.collections.Map
import kotlin.jvm.JvmName

/**
 * Provides an SNS topic resource
 * ## Example Usage
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const userUpdates = new aws.sns.Topic("user_updates", {name: "user-updates-topic"});
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * user_updates = aws.sns.Topic("user_updates", name="user-updates-topic")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var userUpdates = new Aws.Sns.Topic("user_updates", new()
 *     {
 *         Name = "user-updates-topic",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := sns.NewTopic(ctx, "user_updates", &sns.TopicArgs{
 * 			Name: pulumi.String("user-updates-topic"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.sns.Topic;
 * import com.pulumi.aws.sns.TopicArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var userUpdates = new Topic("userUpdates", TopicArgs.builder()
 *             .name("user-updates-topic")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   userUpdates:
 *     type: aws:sns:Topic
 *     name: user_updates
 *     properties:
 *       name: user-updates-topic
 * ```
 * 
 * ## Example with Delivery Policy
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const userUpdates = new aws.sns.Topic("user_updates", {
 *     name: "user-updates-topic",
 *     deliveryPolicy: `{
 *   "http": {
 *     "defaultHealthyRetryPolicy": {
 *       "minDelayTarget": 20,
 *       "maxDelayTarget": 20,
 *       "numRetries": 3,
 *       "numMaxDelayRetries": 0,
 *       "numNoDelayRetries": 0,
 *       "numMinDelayRetries": 0,
 *       "backoffFunction": "linear"
 *     },
 *     "disableSubscriptionOverrides": false,
 *     "defaultThrottlePolicy": {
 *       "maxReceivesPerSecond": 1
 *     }
 *   }
 * }
 * `,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * user_updates = aws.sns.Topic("user_updates",
 *     name="user-updates-topic",
 *     delivery_policy="""{
 *   "http": {
 *     "defaultHealthyRetryPolicy": {
 *       "minDelayTarget": 20,
 *       "maxDelayTarget": 20,
 *       "numRetries": 3,
 *       "numMaxDelayRetries": 0,
 *       "numNoDelayRetries": 0,
 *       "numMinDelayRetries": 0,
 *       "backoffFunction": "linear"
 *     },
 *     "disableSubscriptionOverrides": false,
 *     "defaultThrottlePolicy": {
 *       "maxReceivesPerSecond": 1
 *     }
 *   }
 * }
 * """)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var userUpdates = new Aws.Sns.Topic("user_updates", new()
 *     {
 *         Name = "user-updates-topic",
 *         DeliveryPolicy = @"{
 *   ""http"": {
 *     ""defaultHealthyRetryPolicy"": {
 *       ""minDelayTarget"": 20,
 *       ""maxDelayTarget"": 20,
 *       ""numRetries"": 3,
 *       ""numMaxDelayRetries"": 0,
 *       ""numNoDelayRetries"": 0,
 *       ""numMinDelayRetries"": 0,
 *       ""backoffFunction"": ""linear""
 *     },
 *     ""disableSubscriptionOverrides"": false,
 *     ""defaultThrottlePolicy"": {
 *       ""maxReceivesPerSecond"": 1
 *     }
 *   }
 * }
 * ",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := sns.NewTopic(ctx, "user_updates", &sns.TopicArgs{
 * 			Name: pulumi.String("user-updates-topic"),
 * 			DeliveryPolicy: pulumi.String(`{
 *   "http": {
 *     "defaultHealthyRetryPolicy": {
 *       "minDelayTarget": 20,
 *       "maxDelayTarget": 20,
 *       "numRetries": 3,
 *       "numMaxDelayRetries": 0,
 *       "numNoDelayRetries": 0,
 *       "numMinDelayRetries": 0,
 *       "backoffFunction": "linear"
 *     },
 *     "disableSubscriptionOverrides": false,
 *     "defaultThrottlePolicy": {
 *       "maxReceivesPerSecond": 1
 *     }
 *   }
 * }
 * `),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.sns.Topic;
 * import com.pulumi.aws.sns.TopicArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var userUpdates = new Topic("userUpdates", TopicArgs.builder()
 *             .name("user-updates-topic")
 *             .deliveryPolicy("""
 * {
 *   "http": {
 *     "defaultHealthyRetryPolicy": {
 *       "minDelayTarget": 20,
 *       "maxDelayTarget": 20,
 *       "numRetries": 3,
 *       "numMaxDelayRetries": 0,
 *       "numNoDelayRetries": 0,
 *       "numMinDelayRetries": 0,
 *       "backoffFunction": "linear"
 *     },
 *     "disableSubscriptionOverrides": false,
 *     "defaultThrottlePolicy": {
 *       "maxReceivesPerSecond": 1
 *     }
 *   }
 * }
 *             """)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   userUpdates:
 *     type: aws:sns:Topic
 *     name: user_updates
 *     properties:
 *       name: user-updates-topic
 *       deliveryPolicy: |
 *         {
 *           "http": {
 *             "defaultHealthyRetryPolicy": {
 *               "minDelayTarget": 20,
 *               "maxDelayTarget": 20,
 *               "numRetries": 3,
 *               "numMaxDelayRetries": 0,
 *               "numNoDelayRetries": 0,
 *               "numMinDelayRetries": 0,
 *               "backoffFunction": "linear"
 *             },
 *             "disableSubscriptionOverrides": false,
 *             "defaultThrottlePolicy": {
 *               "maxReceivesPerSecond": 1
 *             }
 *           }
 *         }
 * ```
 * 
 * ## Example with Server-side encryption (SSE)
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const userUpdates = new aws.sns.Topic("user_updates", {
 *     name: "user-updates-topic",
 *     kmsMasterKeyId: "alias/aws/sns",
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * user_updates = aws.sns.Topic("user_updates",
 *     name="user-updates-topic",
 *     kms_master_key_id="alias/aws/sns")
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var userUpdates = new Aws.Sns.Topic("user_updates", new()
 *     {
 *         Name = "user-updates-topic",
 *         KmsMasterKeyId = "alias/aws/sns",
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := sns.NewTopic(ctx, "user_updates", &sns.TopicArgs{
 * 			Name:           pulumi.String("user-updates-topic"),
 * 			KmsMasterKeyId: pulumi.String("alias/aws/sns"),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.sns.Topic;
 * import com.pulumi.aws.sns.TopicArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var userUpdates = new Topic("userUpdates", TopicArgs.builder()
 *             .name("user-updates-topic")
 *             .kmsMasterKeyId("alias/aws/sns")
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   userUpdates:
 *     type: aws:sns:Topic
 *     name: user_updates
 *     properties:
 *       name: user-updates-topic
 *       kmsMasterKeyId: alias/aws/sns
 * ```
 * 
 * ## Example with First-In-First-Out (FIFO)
 * 
 * ```typescript
 * import * as pulumi from "@pulumi/pulumi";
 * import * as aws from "@pulumi/aws";
 * const userUpdates = new aws.sns.Topic("user_updates", {
 *     name: "user-updates-topic.fifo",
 *     fifoTopic: true,
 *     contentBasedDeduplication: true,
 * });
 * ```
 * ```python
 * import pulumi
 * import pulumi_aws as aws
 * user_updates = aws.sns.Topic("user_updates",
 *     name="user-updates-topic.fifo",
 *     fifo_topic=True,
 *     content_based_deduplication=True)
 * ```
 * ```csharp
 * using System.Collections.Generic;
 * using System.Linq;
 * using Pulumi;
 * using Aws = Pulumi.Aws;
 * return await Deployment.RunAsync(() =>
 * {
 *     var userUpdates = new Aws.Sns.Topic("user_updates", new()
 *     {
 *         Name = "user-updates-topic.fifo",
 *         FifoTopic = true,
 *         ContentBasedDeduplication = true,
 *     });
 * });
 * ```
 * ```go
 * package main
 * import (
 * 	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/sns"
 * 	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
 * )
 * func main() {
 * 	pulumi.Run(func(ctx *pulumi.Context) error {
 * 		_, err := sns.NewTopic(ctx, "user_updates", &sns.TopicArgs{
 * 			Name:                      pulumi.String("user-updates-topic.fifo"),
 * 			FifoTopic:                 pulumi.Bool(true),
 * 			ContentBasedDeduplication: pulumi.Bool(true),
 * 		})
 * 		if err != nil {
 * 			return err
 * 		}
 * 		return nil
 * 	})
 * }
 * ```
 * ```java
 * package generated_program;
 * import com.pulumi.Context;
 * import com.pulumi.Pulumi;
 * import com.pulumi.core.Output;
 * import com.pulumi.aws.sns.Topic;
 * import com.pulumi.aws.sns.TopicArgs;
 * import java.util.List;
 * import java.util.ArrayList;
 * import java.util.Map;
 * import java.io.File;
 * import java.nio.file.Files;
 * import java.nio.file.Paths;
 * public class App {
 *     public static void main(String[] args) {
 *         Pulumi.run(App::stack);
 *     }
 *     public static void stack(Context ctx) {
 *         var userUpdates = new Topic("userUpdates", TopicArgs.builder()
 *             .name("user-updates-topic.fifo")
 *             .fifoTopic(true)
 *             .contentBasedDeduplication(true)
 *             .build());
 *     }
 * }
 * ```
 * ```yaml
 * resources:
 *   userUpdates:
 *     type: aws:sns:Topic
 *     name: user_updates
 *     properties:
 *       name: user-updates-topic.fifo
 *       fifoTopic: true
 *       contentBasedDeduplication: true
 * ```
 * 
 * ## Message Delivery Status Arguments
 * The `_success_feedback_role_arn` and `_failure_feedback_role_arn` arguments are used to give Amazon SNS write access to use CloudWatch Logs on your behalf. The `_success_feedback_sample_rate` argument is for specifying the sample rate percentage (0-100) of successfully delivered messages. After you configure the  `_failure_feedback_role_arn` argument, then all failed message deliveries generate CloudWatch Logs.
 * ## Import
 * Using `pulumi import`, import SNS Topics using the topic `arn`. For example:
 * ```sh
 * $ pulumi import aws:sns/topic:Topic user_updates arn:aws:sns:us-west-2:0123456789012:my-topic
 * ```
 * @property applicationFailureFeedbackRoleArn IAM role for failure feedback
 * @property applicationSuccessFeedbackRoleArn The IAM role permitted to receive success feedback for this topic
 * @property applicationSuccessFeedbackSampleRate Percentage of success to sample
 * @property archivePolicy The message archive policy for FIFO topics. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/message-archiving-and-replay-topic-owner.html).
 * @property contentBasedDeduplication Enables content-based deduplication for FIFO topics. For more information, see the [related documentation](https://docs.aws.amazon.com/sns/latest/dg/fifo-message-dedup.html)
 * @property deliveryPolicy The SNS delivery policy. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html).
 * @property displayName The display name for the topic
 * @property fifoTopic Boolean indicating whether or not to create a FIFO (first-in-first-out) topic. FIFO topics can't deliver messages to customer managed endpoints, such as email addresses, mobile apps, SMS, or HTTP(S) endpoints. These endpoint types aren't guaranteed to preserve strict message ordering. Default is `false`.
 * @property firehoseFailureFeedbackRoleArn IAM role for failure feedback
 * @property firehoseSuccessFeedbackRoleArn The IAM role permitted to receive success feedback for this topic
 * @property firehoseSuccessFeedbackSampleRate Percentage of success to sample
 * @property httpFailureFeedbackRoleArn IAM role for failure feedback
 * @property httpSuccessFeedbackRoleArn The IAM role permitted to receive success feedback for this topic
 * @property httpSuccessFeedbackSampleRate Percentage of success to sample
 * @property kmsMasterKeyId The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see [Key Terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms)
 * @property lambdaFailureFeedbackRoleArn IAM role for failure feedback
 * @property lambdaSuccessFeedbackRoleArn The IAM role permitted to receive success feedback for this topic
 * @property lambdaSuccessFeedbackSampleRate Percentage of success to sample
 * @property name The name of the topic. Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. For a FIFO (first-in-first-out) topic, the name must end with the `.fifo` suffix. If omitted, the provider will assign a random, unique name. Conflicts with `name_prefix`
 * @property namePrefix Creates a unique name beginning with the specified prefix. Conflicts with `name`
 * @property policy The fully-formed AWS policy as JSON.
 * @property signatureVersion If `SignatureVersion` should be [1 (SHA1) or 2 (SHA256)](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html). The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS.
 * @property sqsFailureFeedbackRoleArn IAM role for failure feedback
 * @property sqsSuccessFeedbackRoleArn The IAM role permitted to receive success feedback for this topic
 * @property sqsSuccessFeedbackSampleRate Percentage of success to sample
 * @property tags Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
 * @property tracingConfig Tracing mode of an Amazon SNS topic. Valid values: `"PassThrough"`, `"Active"`.
 */
public data class TopicArgs(
    public val applicationFailureFeedbackRoleArn: Output? = null,
    public val applicationSuccessFeedbackRoleArn: Output? = null,
    public val applicationSuccessFeedbackSampleRate: Output? = null,
    public val archivePolicy: Output? = null,
    public val contentBasedDeduplication: Output? = null,
    public val deliveryPolicy: Output? = null,
    public val displayName: Output? = null,
    public val fifoTopic: Output? = null,
    public val firehoseFailureFeedbackRoleArn: Output? = null,
    public val firehoseSuccessFeedbackRoleArn: Output? = null,
    public val firehoseSuccessFeedbackSampleRate: Output? = null,
    public val httpFailureFeedbackRoleArn: Output? = null,
    public val httpSuccessFeedbackRoleArn: Output? = null,
    public val httpSuccessFeedbackSampleRate: Output? = null,
    public val kmsMasterKeyId: Output? = null,
    public val lambdaFailureFeedbackRoleArn: Output? = null,
    public val lambdaSuccessFeedbackRoleArn: Output? = null,
    public val lambdaSuccessFeedbackSampleRate: Output? = null,
    public val name: Output? = null,
    public val namePrefix: Output? = null,
    public val policy: Output? = null,
    public val signatureVersion: Output? = null,
    public val sqsFailureFeedbackRoleArn: Output? = null,
    public val sqsSuccessFeedbackRoleArn: Output? = null,
    public val sqsSuccessFeedbackSampleRate: Output? = null,
    public val tags: Output>? = null,
    public val tracingConfig: Output? = null,
) : ConvertibleToJava {
    override fun toJava(): com.pulumi.aws.sns.TopicArgs = com.pulumi.aws.sns.TopicArgs.builder()
        .applicationFailureFeedbackRoleArn(
            applicationFailureFeedbackRoleArn?.applyValue({ args0 ->
                args0
            }),
        )
        .applicationSuccessFeedbackRoleArn(
            applicationSuccessFeedbackRoleArn?.applyValue({ args0 ->
                args0
            }),
        )
        .applicationSuccessFeedbackSampleRate(
            applicationSuccessFeedbackSampleRate?.applyValue({ args0 ->
                args0
            }),
        )
        .archivePolicy(archivePolicy?.applyValue({ args0 -> args0 }))
        .contentBasedDeduplication(contentBasedDeduplication?.applyValue({ args0 -> args0 }))
        .deliveryPolicy(deliveryPolicy?.applyValue({ args0 -> args0 }))
        .displayName(displayName?.applyValue({ args0 -> args0 }))
        .fifoTopic(fifoTopic?.applyValue({ args0 -> args0 }))
        .firehoseFailureFeedbackRoleArn(firehoseFailureFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .firehoseSuccessFeedbackRoleArn(firehoseSuccessFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .firehoseSuccessFeedbackSampleRate(
            firehoseSuccessFeedbackSampleRate?.applyValue({ args0 ->
                args0
            }),
        )
        .httpFailureFeedbackRoleArn(httpFailureFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .httpSuccessFeedbackRoleArn(httpSuccessFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .httpSuccessFeedbackSampleRate(httpSuccessFeedbackSampleRate?.applyValue({ args0 -> args0 }))
        .kmsMasterKeyId(kmsMasterKeyId?.applyValue({ args0 -> args0 }))
        .lambdaFailureFeedbackRoleArn(lambdaFailureFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .lambdaSuccessFeedbackRoleArn(lambdaSuccessFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .lambdaSuccessFeedbackSampleRate(lambdaSuccessFeedbackSampleRate?.applyValue({ args0 -> args0 }))
        .name(name?.applyValue({ args0 -> args0 }))
        .namePrefix(namePrefix?.applyValue({ args0 -> args0 }))
        .policy(policy?.applyValue({ args0 -> args0 }))
        .signatureVersion(signatureVersion?.applyValue({ args0 -> args0 }))
        .sqsFailureFeedbackRoleArn(sqsFailureFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .sqsSuccessFeedbackRoleArn(sqsSuccessFeedbackRoleArn?.applyValue({ args0 -> args0 }))
        .sqsSuccessFeedbackSampleRate(sqsSuccessFeedbackSampleRate?.applyValue({ args0 -> args0 }))
        .tags(tags?.applyValue({ args0 -> args0.map({ args0 -> args0.key.to(args0.value) }).toMap() }))
        .tracingConfig(tracingConfig?.applyValue({ args0 -> args0 })).build()
}

/**
 * Builder for [TopicArgs].
 */
@PulumiTagMarker
public class TopicArgsBuilder internal constructor() {
    private var applicationFailureFeedbackRoleArn: Output? = null

    private var applicationSuccessFeedbackRoleArn: Output? = null

    private var applicationSuccessFeedbackSampleRate: Output? = null

    private var archivePolicy: Output? = null

    private var contentBasedDeduplication: Output? = null

    private var deliveryPolicy: Output? = null

    private var displayName: Output? = null

    private var fifoTopic: Output? = null

    private var firehoseFailureFeedbackRoleArn: Output? = null

    private var firehoseSuccessFeedbackRoleArn: Output? = null

    private var firehoseSuccessFeedbackSampleRate: Output? = null

    private var httpFailureFeedbackRoleArn: Output? = null

    private var httpSuccessFeedbackRoleArn: Output? = null

    private var httpSuccessFeedbackSampleRate: Output? = null

    private var kmsMasterKeyId: Output? = null

    private var lambdaFailureFeedbackRoleArn: Output? = null

    private var lambdaSuccessFeedbackRoleArn: Output? = null

    private var lambdaSuccessFeedbackSampleRate: Output? = null

    private var name: Output? = null

    private var namePrefix: Output? = null

    private var policy: Output? = null

    private var signatureVersion: Output? = null

    private var sqsFailureFeedbackRoleArn: Output? = null

    private var sqsSuccessFeedbackRoleArn: Output? = null

    private var sqsSuccessFeedbackSampleRate: Output? = null

    private var tags: Output>? = null

    private var tracingConfig: Output? = null

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("ojmfmdcyeqdxnmsb")
    public suspend fun applicationFailureFeedbackRoleArn(`value`: Output) {
        this.applicationFailureFeedbackRoleArn = value
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("okxkcgvndhyrcnkf")
    public suspend fun applicationSuccessFeedbackRoleArn(`value`: Output) {
        this.applicationSuccessFeedbackRoleArn = value
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("isnkmsjxtqsxpwke")
    public suspend fun applicationSuccessFeedbackSampleRate(`value`: Output) {
        this.applicationSuccessFeedbackSampleRate = value
    }

    /**
     * @param value The message archive policy for FIFO topics. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/message-archiving-and-replay-topic-owner.html).
     */
    @JvmName("cmncncncjwaqjimg")
    public suspend fun archivePolicy(`value`: Output) {
        this.archivePolicy = value
    }

    /**
     * @param value Enables content-based deduplication for FIFO topics. For more information, see the [related documentation](https://docs.aws.amazon.com/sns/latest/dg/fifo-message-dedup.html)
     */
    @JvmName("qkxbxisdqsdiijen")
    public suspend fun contentBasedDeduplication(`value`: Output) {
        this.contentBasedDeduplication = value
    }

    /**
     * @param value The SNS delivery policy. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html).
     */
    @JvmName("wofplnwsvjwpuckr")
    public suspend fun deliveryPolicy(`value`: Output) {
        this.deliveryPolicy = value
    }

    /**
     * @param value The display name for the topic
     */
    @JvmName("txiduorjctvovdlf")
    public suspend fun displayName(`value`: Output) {
        this.displayName = value
    }

    /**
     * @param value Boolean indicating whether or not to create a FIFO (first-in-first-out) topic. FIFO topics can't deliver messages to customer managed endpoints, such as email addresses, mobile apps, SMS, or HTTP(S) endpoints. These endpoint types aren't guaranteed to preserve strict message ordering. Default is `false`.
     */
    @JvmName("xuwvsmuxvfdvsegt")
    public suspend fun fifoTopic(`value`: Output) {
        this.fifoTopic = value
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("gviblnuslrpnqfrx")
    public suspend fun firehoseFailureFeedbackRoleArn(`value`: Output) {
        this.firehoseFailureFeedbackRoleArn = value
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("qpctdipxsuewacbp")
    public suspend fun firehoseSuccessFeedbackRoleArn(`value`: Output) {
        this.firehoseSuccessFeedbackRoleArn = value
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("irpjlxhjvcjuiqum")
    public suspend fun firehoseSuccessFeedbackSampleRate(`value`: Output) {
        this.firehoseSuccessFeedbackSampleRate = value
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("ugmhnilnausrgepb")
    public suspend fun httpFailureFeedbackRoleArn(`value`: Output) {
        this.httpFailureFeedbackRoleArn = value
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("vyjgopugofrpqygn")
    public suspend fun httpSuccessFeedbackRoleArn(`value`: Output) {
        this.httpSuccessFeedbackRoleArn = value
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("orblpgndnryexwsv")
    public suspend fun httpSuccessFeedbackSampleRate(`value`: Output) {
        this.httpSuccessFeedbackSampleRate = value
    }

    /**
     * @param value The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see [Key Terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms)
     */
    @JvmName("osybwvjlgiyuajhm")
    public suspend fun kmsMasterKeyId(`value`: Output) {
        this.kmsMasterKeyId = value
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("mjrfsjwekymogxcb")
    public suspend fun lambdaFailureFeedbackRoleArn(`value`: Output) {
        this.lambdaFailureFeedbackRoleArn = value
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("dktvsgeifxjoeucv")
    public suspend fun lambdaSuccessFeedbackRoleArn(`value`: Output) {
        this.lambdaSuccessFeedbackRoleArn = value
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("jelohwltvkjsitfv")
    public suspend fun lambdaSuccessFeedbackSampleRate(`value`: Output) {
        this.lambdaSuccessFeedbackSampleRate = value
    }

    /**
     * @param value The name of the topic. Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. For a FIFO (first-in-first-out) topic, the name must end with the `.fifo` suffix. If omitted, the provider will assign a random, unique name. Conflicts with `name_prefix`
     */
    @JvmName("gucckwafshviqwlu")
    public suspend fun name(`value`: Output) {
        this.name = value
    }

    /**
     * @param value Creates a unique name beginning with the specified prefix. Conflicts with `name`
     */
    @JvmName("bgqiuoqqbnprkhge")
    public suspend fun namePrefix(`value`: Output) {
        this.namePrefix = value
    }

    /**
     * @param value The fully-formed AWS policy as JSON.
     */
    @JvmName("edtmuhywgeivrjuq")
    public suspend fun policy(`value`: Output) {
        this.policy = value
    }

    /**
     * @param value If `SignatureVersion` should be [1 (SHA1) or 2 (SHA256)](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html). The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS.
     */
    @JvmName("viqcjdjvudniaffc")
    public suspend fun signatureVersion(`value`: Output) {
        this.signatureVersion = value
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("mevacqiltkemcwny")
    public suspend fun sqsFailureFeedbackRoleArn(`value`: Output) {
        this.sqsFailureFeedbackRoleArn = value
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("fhftfdshyjbevcjr")
    public suspend fun sqsSuccessFeedbackRoleArn(`value`: Output) {
        this.sqsSuccessFeedbackRoleArn = value
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("iyaaonydvsyndjmn")
    public suspend fun sqsSuccessFeedbackSampleRate(`value`: Output) {
        this.sqsSuccessFeedbackSampleRate = value
    }

    /**
     * @param value Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("qugfvbwchhunpdrr")
    public suspend fun tags(`value`: Output>) {
        this.tags = value
    }

    /**
     * @param value Tracing mode of an Amazon SNS topic. Valid values: `"PassThrough"`, `"Active"`.
     */
    @JvmName("eiqxwouhhuxlcrdq")
    public suspend fun tracingConfig(`value`: Output) {
        this.tracingConfig = value
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("lnjgxitdjvuwulxi")
    public suspend fun applicationFailureFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationFailureFeedbackRoleArn = mapped
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("bruwuoomrnmkyakp")
    public suspend fun applicationSuccessFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationSuccessFeedbackRoleArn = mapped
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("guvmxcseqgwxmssd")
    public suspend fun applicationSuccessFeedbackSampleRate(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.applicationSuccessFeedbackSampleRate = mapped
    }

    /**
     * @param value The message archive policy for FIFO topics. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/message-archiving-and-replay-topic-owner.html).
     */
    @JvmName("qhqvfhpqxbhtnyqy")
    public suspend fun archivePolicy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.archivePolicy = mapped
    }

    /**
     * @param value Enables content-based deduplication for FIFO topics. For more information, see the [related documentation](https://docs.aws.amazon.com/sns/latest/dg/fifo-message-dedup.html)
     */
    @JvmName("pxdajbbcemykoqwr")
    public suspend fun contentBasedDeduplication(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.contentBasedDeduplication = mapped
    }

    /**
     * @param value The SNS delivery policy. More details in the [AWS documentation](https://docs.aws.amazon.com/sns/latest/dg/DeliveryPolicies.html).
     */
    @JvmName("kjxyvigbrwkqtekt")
    public suspend fun deliveryPolicy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.deliveryPolicy = mapped
    }

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

    /**
     * @param value Boolean indicating whether or not to create a FIFO (first-in-first-out) topic. FIFO topics can't deliver messages to customer managed endpoints, such as email addresses, mobile apps, SMS, or HTTP(S) endpoints. These endpoint types aren't guaranteed to preserve strict message ordering. Default is `false`.
     */
    @JvmName("yakmcnbhkperwtdg")
    public suspend fun fifoTopic(`value`: Boolean?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.fifoTopic = mapped
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("umwwqgdenenbquhy")
    public suspend fun firehoseFailureFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.firehoseFailureFeedbackRoleArn = mapped
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("lmoalmcxqlggbjmg")
    public suspend fun firehoseSuccessFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.firehoseSuccessFeedbackRoleArn = mapped
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("acglbfflsvfcuqdt")
    public suspend fun firehoseSuccessFeedbackSampleRate(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.firehoseSuccessFeedbackSampleRate = mapped
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("qyhswobajkpiggeb")
    public suspend fun httpFailureFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.httpFailureFeedbackRoleArn = mapped
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("xqbnnyhknvavkmft")
    public suspend fun httpSuccessFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.httpSuccessFeedbackRoleArn = mapped
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("lgieqwivwuopvmia")
    public suspend fun httpSuccessFeedbackSampleRate(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.httpSuccessFeedbackSampleRate = mapped
    }

    /**
     * @param value The ID of an AWS-managed customer master key (CMK) for Amazon SNS or a custom CMK. For more information, see [Key Terms](https://docs.aws.amazon.com/sns/latest/dg/sns-server-side-encryption.html#sse-key-terms)
     */
    @JvmName("stqupamnogljfnuj")
    public suspend fun kmsMasterKeyId(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.kmsMasterKeyId = mapped
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("pjrrmcxglsqhlnmg")
    public suspend fun lambdaFailureFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.lambdaFailureFeedbackRoleArn = mapped
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("brdsnmudlydxfykj")
    public suspend fun lambdaSuccessFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.lambdaSuccessFeedbackRoleArn = mapped
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("ukxaqkbkfghkhrde")
    public suspend fun lambdaSuccessFeedbackSampleRate(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.lambdaSuccessFeedbackSampleRate = mapped
    }

    /**
     * @param value The name of the topic. Topic names must be made up of only uppercase and lowercase ASCII letters, numbers, underscores, and hyphens, and must be between 1 and 256 characters long. For a FIFO (first-in-first-out) topic, the name must end with the `.fifo` suffix. If omitted, the provider will assign a random, unique name. Conflicts with `name_prefix`
     */
    @JvmName("mtesqvjselwhagey")
    public suspend fun name(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.name = mapped
    }

    /**
     * @param value Creates a unique name beginning with the specified prefix. Conflicts with `name`
     */
    @JvmName("locgrmcisyadcsnn")
    public suspend fun namePrefix(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.namePrefix = mapped
    }

    /**
     * @param value The fully-formed AWS policy as JSON.
     */
    @JvmName("rpkvuegopigsbhak")
    public suspend fun policy(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.policy = mapped
    }

    /**
     * @param value If `SignatureVersion` should be [1 (SHA1) or 2 (SHA256)](https://docs.aws.amazon.com/sns/latest/dg/sns-verify-signature-of-message.html). The signature version corresponds to the hashing algorithm used while creating the signature of the notifications, subscription confirmations, or unsubscribe confirmation messages sent by Amazon SNS.
     */
    @JvmName("wtkcrplfxcyaqycw")
    public suspend fun signatureVersion(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.signatureVersion = mapped
    }

    /**
     * @param value IAM role for failure feedback
     */
    @JvmName("eyymhmtvayxvktdt")
    public suspend fun sqsFailureFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sqsFailureFeedbackRoleArn = mapped
    }

    /**
     * @param value The IAM role permitted to receive success feedback for this topic
     */
    @JvmName("ihtrbxyvwlyxxtos")
    public suspend fun sqsSuccessFeedbackRoleArn(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sqsSuccessFeedbackRoleArn = mapped
    }

    /**
     * @param value Percentage of success to sample
     */
    @JvmName("ymiofxkmgejttlkr")
    public suspend fun sqsSuccessFeedbackSampleRate(`value`: Int?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.sqsSuccessFeedbackSampleRate = mapped
    }

    /**
     * @param value Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("mciyrtqbuoaxddrs")
    public suspend fun tags(`value`: Map?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param values Key-value map of resource tags. If configured with a provider `default_tags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
     */
    @JvmName("pcytkpaewheqbhjg")
    public fun tags(vararg values: Pair) {
        val toBeMapped = values.toMap()
        val mapped = toBeMapped.let({ args0 -> of(args0) })
        this.tags = mapped
    }

    /**
     * @param value Tracing mode of an Amazon SNS topic. Valid values: `"PassThrough"`, `"Active"`.
     */
    @JvmName("srxvsmynondaiupc")
    public suspend fun tracingConfig(`value`: String?) {
        val toBeMapped = value
        val mapped = toBeMapped?.let({ args0 -> of(args0) })
        this.tracingConfig = mapped
    }

    internal fun build(): TopicArgs = TopicArgs(
        applicationFailureFeedbackRoleArn = applicationFailureFeedbackRoleArn,
        applicationSuccessFeedbackRoleArn = applicationSuccessFeedbackRoleArn,
        applicationSuccessFeedbackSampleRate = applicationSuccessFeedbackSampleRate,
        archivePolicy = archivePolicy,
        contentBasedDeduplication = contentBasedDeduplication,
        deliveryPolicy = deliveryPolicy,
        displayName = displayName,
        fifoTopic = fifoTopic,
        firehoseFailureFeedbackRoleArn = firehoseFailureFeedbackRoleArn,
        firehoseSuccessFeedbackRoleArn = firehoseSuccessFeedbackRoleArn,
        firehoseSuccessFeedbackSampleRate = firehoseSuccessFeedbackSampleRate,
        httpFailureFeedbackRoleArn = httpFailureFeedbackRoleArn,
        httpSuccessFeedbackRoleArn = httpSuccessFeedbackRoleArn,
        httpSuccessFeedbackSampleRate = httpSuccessFeedbackSampleRate,
        kmsMasterKeyId = kmsMasterKeyId,
        lambdaFailureFeedbackRoleArn = lambdaFailureFeedbackRoleArn,
        lambdaSuccessFeedbackRoleArn = lambdaSuccessFeedbackRoleArn,
        lambdaSuccessFeedbackSampleRate = lambdaSuccessFeedbackSampleRate,
        name = name,
        namePrefix = namePrefix,
        policy = policy,
        signatureVersion = signatureVersion,
        sqsFailureFeedbackRoleArn = sqsFailureFeedbackRoleArn,
        sqsSuccessFeedbackRoleArn = sqsSuccessFeedbackRoleArn,
        sqsSuccessFeedbackSampleRate = sqsSuccessFeedbackSampleRate,
        tags = tags,
        tracingConfig = tracingConfig,
    )
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy