Class TelemetryRule


  • public class TelemetryRule
    extends com.pulumi.resources.CustomResource
    Manages an AWS CloudWatch Observability Admin Telemetry Rule. A telemetry rule defines how telemetry data (logs, metrics, or traces) should be collected for AWS resources within an AWS account. The rule can target one or more Regions and optionally configure a destination (such as CloudWatch Logs or S3) along with source-specific parameters for VPC flow logs, WAF logs, CloudTrail events, ELB access logs, and more. > **NOTE:** Before using this resource, telemetry evaluation must be enabled for your AWS account. Use the `aws.observabilityadmin.TelemetryEvaluation` resource to enable it. ## Example Usage ### Basic Usage
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.observabilityadmin.TelemetryEvaluation;
     import com.pulumi.aws.observabilityadmin.TelemetryRule;
     import com.pulumi.aws.observabilityadmin.TelemetryRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 example = new TelemetryEvaluation("example");
     
             var exampleTelemetryRule = new TelemetryRule("exampleTelemetryRule", TelemetryRuleArgs.builder()
                 .rule(TelemetryRuleRuleArgs.builder()
                     .telemetryType("Logs")
                     .resourceType("AWS::EC2::VPC")
                     .build())
                 .ruleName("example-telemetry-rule")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ### VPC Flow Logs to CloudWatch Logs
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.observabilityadmin.TelemetryEvaluation;
     import com.pulumi.aws.observabilityadmin.TelemetryRule;
     import com.pulumi.aws.observabilityadmin.TelemetryRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationVpcFlowLogParametersArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 example = new TelemetryEvaluation("example");
     
             var exampleTelemetryRule = new TelemetryRule("exampleTelemetryRule", TelemetryRuleArgs.builder()
                 .rule(TelemetryRuleRuleArgs.builder()
                     .destinationConfiguration(TelemetryRuleRuleDestinationConfigurationArgs.builder()
                         .vpcFlowLogParameters(TelemetryRuleRuleDestinationConfigurationVpcFlowLogParametersArgs.builder()
                             .trafficType("ALL")
                             .maxAggregationInterval(60)
                             .build())
                         .destinationType("cloud-watch-logs")
                         .destinationPattern("/aws/vpcflowlogs/<resourceId>")
                         .retentionInDays(30)
                         .build())
                     .telemetryType("Logs")
                     .resourceType("AWS::EC2::VPC")
                     .telemetrySourceTypes("VPC_FLOW_LOGS")
                     .allRegions(true)
                     .allowFieldUpdates(true)
                     .build())
                 .ruleName("vpc-flow-logs-rule")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ### Replicated Across Specific Regions
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.observabilityadmin.TelemetryEvaluation;
     import com.pulumi.aws.observabilityadmin.TelemetryRule;
     import com.pulumi.aws.observabilityadmin.TelemetryRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 example = new TelemetryEvaluation("example");
     
             var exampleTelemetryRule = new TelemetryRule("exampleTelemetryRule", TelemetryRuleArgs.builder()
                 .rule(TelemetryRuleRuleArgs.builder()
                     .telemetryType("Logs")
                     .resourceType("AWS::EKS::Cluster")
                     .regions(                
                         "us-east-1",
                         "us-west-2",
                         "eu-west-1")
                     .build())
                 .ruleName("multi-region-rule")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ### WAF Logging with Filters and Redacted Fields
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.observabilityadmin.TelemetryEvaluation;
     import com.pulumi.aws.observabilityadmin.TelemetryRule;
     import com.pulumi.aws.observabilityadmin.TelemetryRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterConditionArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterConditionActionConditionArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersRedactedFieldArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleDestinationConfigurationWafLoggingParametersRedactedFieldSingleHeaderArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 example = new TelemetryEvaluation("example");
     
             var exampleTelemetryRule = new TelemetryRule("exampleTelemetryRule", TelemetryRuleArgs.builder()
                 .rule(TelemetryRuleRuleArgs.builder()
                     .destinationConfiguration(TelemetryRuleRuleDestinationConfigurationArgs.builder()
                         .wafLoggingParameters(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersArgs.builder()
                             .loggingFilter(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterArgs.builder()
                                 .filters(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterArgs.builder()
                                     .conditions(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterConditionArgs.builder()
                                         .actionCondition(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersLoggingFilterFilterConditionActionConditionArgs.builder()
                                             .action("ALLOW")
                                             .build())
                                         .build())
                                     .behavior("DROP")
                                     .requirement("MEETS_ANY")
                                     .build())
                                 .defaultBehavior("KEEP")
                                 .build())
                             .redactedFields(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersRedactedFieldArgs.builder()
                                 .singleHeader(TelemetryRuleRuleDestinationConfigurationWafLoggingParametersRedactedFieldSingleHeaderArgs.builder()
                                     .name("authorization")
                                     .build())
                                 .queryString("")
                                 .build())
                             .logType("WAF_LOGS")
                             .build())
                         .destinationType("cloud-watch-logs")
                         .destinationPattern("aws-waf-logs-<resourceId>")
                         .retentionInDays(30)
                         .build())
                     .telemetryType("Logs")
                     .resourceType("AWS::WAFv2::WebACL")
                     .build())
                 .ruleName("waf-logs-rule")
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ### With Tags
     
     package generated_program;
     
     import com.pulumi.Context;
     import com.pulumi.Pulumi;
     import com.pulumi.core.Output;
     import com.pulumi.aws.observabilityadmin.TelemetryEvaluation;
     import com.pulumi.aws.observabilityadmin.TelemetryRule;
     import com.pulumi.aws.observabilityadmin.TelemetryRuleArgs;
     import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleRuleArgs;
     import com.pulumi.resources.CustomResourceOptions;
     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 example = new TelemetryEvaluation("example");
     
             var exampleTelemetryRule = new TelemetryRule("exampleTelemetryRule", TelemetryRuleArgs.builder()
                 .rule(TelemetryRuleRuleArgs.builder()
                     .telemetryType("Logs")
                     .resourceType("AWS::EC2::VPC")
                     .build())
                 .ruleName("tagged-rule")
                 .tags(Map.ofEntries(
                     Map.entry("Environment", "production"),
                     Map.entry("Purpose", "monitoring")
                 ))
                 .build(), CustomResourceOptions.builder()
                     .dependsOn(example)
                     .build());
     
         }
     }
     
     
    ## Import ### Identity Schema #### Required - `ruleName` (String) Name of the telemetry rule. #### Optional * `accountId` (String) AWS Account where this resource is managed. * `region` (String) Region where this resource is managed. Using `pulumi import`, import CloudWatch Observability Admin Telemetry Rules using `ruleName`. For example: ```sh $ pulumi import aws:observabilityadmin/telemetryRule:TelemetryRule example example-telemetry-rule ```
    • 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
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static TelemetryRule get​(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, TelemetryRuleState state, 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.
      com.pulumi.core.Output<java.lang.String> region()  
      com.pulumi.core.Output<TelemetryRuleRule> rule()  
      com.pulumi.core.Output<java.lang.String> ruleArn()  
      com.pulumi.core.Output<java.lang.String> ruleName()  
      com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,​java.lang.String>>> tags()  
      com.pulumi.core.Output<java.util.Map<java.lang.String,​java.lang.String>> tagsAll()  
      com.pulumi.core.Output<java.util.Optional<TelemetryRuleTimeouts>> timeouts()  
      • Methods inherited from class com.pulumi.resources.CustomResource

        getId, id, idFuture
      • Methods inherited from class com.pulumi.resources.Resource

        getChildResources, getResourceName, getResourceType, getUrn, pulumiChildResources, pulumiResourceName, pulumiResourceType, urn
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • TelemetryRule

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

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

        public TelemetryRule​(java.lang.String name,
                             TelemetryRuleArgs 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

      • 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.
      • rule

        public com.pulumi.core.Output<TelemetryRuleRule> rule()
        Returns:
        Configuration block for the telemetry rule. See `rule` below.
      • ruleArn

        public com.pulumi.core.Output<java.lang.String> ruleArn()
        Returns:
        ARN of the telemetry rule.
      • ruleName

        public com.pulumi.core.Output<java.lang.String> ruleName()
        Returns:
        Name of the telemetry rule. Must be between 1 and 100 characters and contain only alphanumeric characters, hyphens, underscores, periods, hash symbols, and forward slashes. Changing this argument forces a new resource to be created. The following arguments are optional:
      • 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:
        Map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
      • get

        public static TelemetryRule get​(java.lang.String name,
                                        com.pulumi.core.Output<java.lang.String> id,
                                        @Nullable
                                        TelemetryRuleState 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.