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
```