Class TopicRule


  • public class TopicRule
    extends com.pulumi.resources.CustomResource
    Creates and manages an AWS IoT topic rule. ## Example Usage
     
     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 com.pulumi.aws.iot.TopicRule;
     import com.pulumi.aws.iot.TopicRuleArgs;
     import com.pulumi.aws.iot.inputs.TopicRuleErrorActionArgs;
     import com.pulumi.aws.iot.inputs.TopicRuleErrorActionSnsArgs;
     import com.pulumi.aws.iot.inputs.TopicRuleSnsArgs;
     import com.pulumi.aws.iam.IamFunctions;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementArgs;
     import com.pulumi.aws.iam.inputs.GetPolicyDocumentStatementPrincipalArgs;
     import com.pulumi.aws.iam.Role;
     import com.pulumi.aws.iam.RoleArgs;
     import com.pulumi.aws.iam.RolePolicy;
     import com.pulumi.aws.iam.RolePolicyArgs;
     import java.util.ArrayList;
     import java.util.Arrays;
     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 mytopic = new Topic("mytopic", TopicArgs.builder()
                 .name("mytopic")
                 .build());
     
             var myerrortopic = new Topic("myerrortopic", TopicArgs.builder()
                 .name("myerrortopic")
                 .build());
     
             var rule = new TopicRule("rule", TopicRuleArgs.builder()
                 .errorAction(TopicRuleErrorActionArgs.builder()
                     .sns(TopicRuleErrorActionSnsArgs.builder()
                         .messageFormat("RAW")
                         .roleArn(role.arn())
                         .targetArn(myerrortopic.arn())
                         .build())
                     .build())
                 .sns(TopicRuleSnsArgs.builder()
                     .messageFormat("RAW")
                     .roleArn(role.arn())
                     .targetArn(mytopic.arn())
                     .build())
                 .name("MyRule")
                 .description("Example rule")
                 .enabled(true)
                 .sql("SELECT * FROM 'topic/test'")
                 .sqlVersion("2016-03-23")
                 .build());
     
             final var assumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .principals(GetPolicyDocumentStatementPrincipalArgs.builder()
                         .type("Service")
                         .identifiers("iot.amazonaws.com")
                         .build())
                     .effect("Allow")
                     .actions("sts:AssumeRole")
                     .build())
                 .build());
     
             var myrole = new Role("myrole", RoleArgs.builder()
                 .name("myrole")
                 .assumeRolePolicy(assumeRole.json())
                 .build());
     
             final var mypolicy = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder()
                 .statements(GetPolicyDocumentStatementArgs.builder()
                     .effect("Allow")
                     .actions("sns:Publish")
                     .resources(mytopic.arn())
                     .build())
                 .build());
     
             var mypolicyRolePolicy = new RolePolicy("mypolicyRolePolicy", RolePolicyArgs.builder()
                 .name("mypolicy")
                 .role(myrole.id())
                 .policy(mypolicy.applyValue(_mypolicy -> _mypolicy.json()))
                 .build());
     
         }
     }
     
     
    ## Import Using `pulumi import`, import IoT Topic Rules using the `name`. For example: ```sh $ pulumi import aws:iot/topicRule:TopicRule rule <name> ```
    • Nested Class Summary

      • Nested classes/interfaces inherited from class com.pulumi.resources.CustomResource

        com.pulumi.resources.CustomResource.CustomResourceInternal
      • Nested classes/interfaces inherited from class com.pulumi.resources.Resource

        com.pulumi.resources.Resource.LazyField<T extends java.lang.Object>, com.pulumi.resources.Resource.LazyFields, com.pulumi.resources.Resource.ResourceInternal
    • Field Summary

      • Fields inherited from class com.pulumi.resources.Resource

        childResources, remote
    • Constructor Summary

      Constructors 
      Constructor Description
      TopicRule​(java.lang.String name)  
      TopicRule​(java.lang.String name, TopicRuleArgs args)  
      TopicRule​(java.lang.String name, TopicRuleArgs args, com.pulumi.resources.CustomResourceOptions options)  
    • Constructor Detail

      • TopicRule

        public TopicRule​(java.lang.String name)
        Parameters:
        name - The _unique_ name of the resulting resource.
      • TopicRule

        public TopicRule​(java.lang.String name,
                         TopicRuleArgs args)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
      • TopicRule

        public TopicRule​(java.lang.String name,
                         TopicRuleArgs args,
                         @Nullable
                         com.pulumi.resources.CustomResourceOptions options)
        Parameters:
        name - The _unique_ name of the resulting resource.
        args - The arguments to use to populate this resource's properties.
        options - A bag of options that control this resource's behavior.
    • Method Detail

      • arn

        public com.pulumi.core.Output<java.lang.String> arn()
        Returns:
        The ARN of the topic rule
      • cloudwatchAlarms

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleCloudwatchAlarm>>> cloudwatchAlarms()
      • cloudwatchLogs

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleCloudwatchLog>>> cloudwatchLogs()
      • cloudwatchMetrics

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleCloudwatchMetric>>> cloudwatchMetrics()
      • description

        public com.pulumi.core.Output<java.util.Optional<java.lang.String>> description()
        Returns:
        The description of the rule.
      • dynamodbs

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleDynamodb>>> dynamodbs()
      • dynamodbv2s

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleDynamodbv2>>> dynamodbv2s()
      • elasticsearch

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleElasticsearch>>> elasticsearch()
      • enabled

        public com.pulumi.core.Output<java.lang.Boolean> enabled()
        Returns:
        Specifies whether the rule is enabled.
      • errorAction

        public com.pulumi.core.Output<java.util.Optional<TopicRuleErrorAction>> errorAction()
        Returns:
        Configuration block with error action to be associated with the rule. See the documentation for `cloudwatchAlarm`, `cloudwatchLogs`, `cloudwatchMetric`, `dynamodb`, `dynamodbv2`, `elasticsearch`, `firehose`, `http`, `iotAnalytics`, `iotEvents`, `kafka`, `kinesis`, `lambda`, `republish`, `s3`, `sns`, `sqs`, `stepFunctions`, `timestream` configuration blocks for further configuration details.
      • firehoses

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleFirehose>>> firehoses()
      • https

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleHttp>>> https()
      • iotAnalytics

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleIotAnalytic>>> iotAnalytics()
      • iotEvents

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleIotEvent>>> iotEvents()
      • kafkas

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleKafka>>> kafkas()
      • kineses

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleKinesis>>> kineses()
      • lambdas

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleLambda>>> lambdas()
      • name

        public com.pulumi.core.Output<java.lang.String> name()
        Returns:
        The name of the rule.
      • region

        public com.pulumi.core.Output<java.lang.String> region()
        Returns:
        Region where this resource will be [managed](https://docs.aws.amazon.com/general/latest/gr/rande.html#regional-endpoints). Defaults to the Region set in the provider configuration.
      • republishes

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleRepublish>>> republishes()
      • s3

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleS3>>> s3()
      • sns

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleSns>>> sns()
      • sql

        public com.pulumi.core.Output<java.lang.String> sql()
        Returns:
        The SQL statement used to query the topic. For more information, see AWS IoT SQL Reference (http://docs.aws.amazon.com/iot/latest/developerguide/iot-rules.html#aws-iot-sql-reference) in the AWS IoT Developer Guide.
      • sqlVersion

        public com.pulumi.core.Output<java.lang.String> sqlVersion()
        Returns:
        The version of the SQL rules engine to use when evaluating the rule.
      • sqs

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleSqs>>> sqs()
      • stepFunctions

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleStepFunction>>> stepFunctions()
      • tags

        public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()
        Returns:
        Key-value map of resource tags. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
      • tagsAll

        public com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()
        Returns:
        A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • timestreams

        public com.pulumi.core.Output<java.util.Optional<java.util.List<TopicRuleTimestream>>> timestreams()
      • get

        public static TopicRule get​(java.lang.String name,
                                    com.pulumi.core.Output<java.lang.String> id,
                                    @Nullable
                                    TopicRuleState state,
                                    @Nullable
                                    com.pulumi.resources.CustomResourceOptions options)
        Get an existing Host resource's state with the given name, ID, and optional extra properties used to qualify the lookup.
        Parameters:
        name - The _unique_ name of the resulting resource.
        id - The _unique_ provider ID of the resource to lookup.
        state -
        options - Optional settings to control the behavior of the CustomResource.