Manages an AWS CloudWatch Observability Admin Telemetry Rule for an AWS Organization.
An organization-wide telemetry rule defines how telemetry data (logs, metrics, or traces) should be collected for AWS resources across the accounts in your organization. The rule can target one or more Regions and 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 for organization must be enabled. Use the `aws.observabilityadmin.TelemetryEvaluationForOrganization` resource to enable it.
> **NOTE:** This resource can only be used from the organization management account.
## 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.TelemetryEvaluationForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganizationArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleArgs;
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 TelemetryEvaluationForOrganization("example");
var exampleTelemetryRuleForOrganization = new TelemetryRuleForOrganization("exampleTelemetryRuleForOrganization", TelemetryRuleForOrganizationArgs.builder()
.rule(TelemetryRuleForOrganizationRuleArgs.builder()
.telemetryType("Logs")
.resourceType("AWS::EC2::VPC")
.build())
.ruleName("example-org-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.TelemetryEvaluationForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganizationArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleDestinationConfigurationArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleDestinationConfigurationVpcFlowLogParametersArgs;
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 TelemetryEvaluationForOrganization("example");
var exampleTelemetryRuleForOrganization = new TelemetryRuleForOrganization("exampleTelemetryRuleForOrganization", TelemetryRuleForOrganizationArgs.builder()
.rule(TelemetryRuleForOrganizationRuleArgs.builder()
.destinationConfiguration(TelemetryRuleForOrganizationRuleDestinationConfigurationArgs.builder()
.vpcFlowLogParameters(TelemetryRuleForOrganizationRuleDestinationConfigurationVpcFlowLogParametersArgs.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("org-vpc-flow-logs-rule")
.build(), CustomResourceOptions.builder()
.dependsOn(example)
.build());
}
}
### Scoped to Specific Organizational Units
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.organizations.OrganizationsFunctions;
import com.pulumi.aws.organizations.inputs.GetOrganizationArgs;
import com.pulumi.aws.observabilityadmin.TelemetryEvaluationForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganizationArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleArgs;
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) {
final var current = OrganizationsFunctions.getOrganization(GetOrganizationArgs.builder()
.build());
var example = new TelemetryEvaluationForOrganization("example");
var exampleTelemetryRuleForOrganization = new TelemetryRuleForOrganization("exampleTelemetryRuleForOrganization", TelemetryRuleForOrganizationArgs.builder()
.rule(TelemetryRuleForOrganizationRuleArgs.builder()
.telemetryType("Logs")
.resourceType("AWS::EKS::Cluster")
.scope(String.format("OrganizationId = '%s'", current.id()))
.selectionCriteria("ResourceTags.Environment = 'production'")
.regions(
"us-east-1",
"us-west-2")
.build())
.ruleName("org-scoped-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.TelemetryEvaluationForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganization;
import com.pulumi.aws.observabilityadmin.TelemetryRuleForOrganizationArgs;
import com.pulumi.aws.observabilityadmin.inputs.TelemetryRuleForOrganizationRuleArgs;
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 TelemetryEvaluationForOrganization("example");
var exampleTelemetryRuleForOrganization = new TelemetryRuleForOrganization("exampleTelemetryRuleForOrganization", TelemetryRuleForOrganizationArgs.builder()
.rule(TelemetryRuleForOrganizationRuleArgs.builder()
.telemetryType("Logs")
.resourceType("AWS::EC2::VPC")
.build())
.ruleName("org-tagged-rule")
.tags(Map.ofEntries(
Map.entry("Environment", "production"),
Map.entry("Purpose", "organization-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 for Organization using `ruleName`. For example:
```sh
$ pulumi import aws:observabilityadmin/telemetryRuleForOrganization:TelemetryRuleForOrganization example example-org-telemetry-rule
```