Metric Stream Args
Provides a CloudWatch Metric Stream resource.
Example Usage
Filters
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.iam.Role;
import com.pulumi.aws.iam.RoleArgs;
import com.pulumi.aws.s3.BucketV2;
import com.pulumi.aws.kinesis.FirehoseDeliveryStream;
import com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs;
import com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamS3ConfigurationArgs;
import com.pulumi.aws.cloudwatch.MetricStream;
import com.pulumi.aws.cloudwatch.MetricStreamArgs;
import com.pulumi.aws.cloudwatch.inputs.MetricStreamIncludeFilterArgs;
import com.pulumi.aws.iam.RolePolicy;
import com.pulumi.aws.iam.RolePolicyArgs;
import com.pulumi.aws.s3.BucketAclV2;
import com.pulumi.aws.s3.BucketAclV2Args;
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 metricStreamToFirehoseRole = new Role("metricStreamToFirehoseRole", RoleArgs.builder()
.assumeRolePolicy("""
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "streams.metrics.cloudwatch.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
""")
.build());
var bucket = new BucketV2("bucket");
var firehoseToS3Role = new Role("firehoseToS3Role", RoleArgs.builder()
.assumeRolePolicy("""
{
"Version": "2012-10-17",
"Statement": [
{
"Action": "sts:AssumeRole",
"Principal": {
"Service": "firehose.amazonaws.com"
},
"Effect": "Allow",
"Sid": ""
}
]
}
""")
.build());
var s3Stream = new FirehoseDeliveryStream("s3Stream", FirehoseDeliveryStreamArgs.builder()
.destination("s3")
.s3Configuration(FirehoseDeliveryStreamS3ConfigurationArgs.builder()
.roleArn(firehoseToS3Role.arn())
.bucketArn(bucket.arn())
.build())
.build());
var main = new MetricStream("main", MetricStreamArgs.builder()
.roleArn(metricStreamToFirehoseRole.arn())
.firehoseArn(s3Stream.arn())
.outputFormat("json")
.includeFilters(
MetricStreamIncludeFilterArgs.builder()
.namespace("AWS/EC2")
.build(),
MetricStreamIncludeFilterArgs.builder()
.namespace("AWS/EBS")
.build())
.build());
var metricStreamToFirehoseRolePolicy = new RolePolicy("metricStreamToFirehoseRolePolicy", RolePolicyArgs.builder()
.role(metricStreamToFirehoseRole.id())
.policy(s3Stream.arn().applyValue(arn -> """
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"firehose:PutRecord",
"firehose:PutRecordBatch"
],
"Resource": "%s"
}
]
}
", arn)))
.build());
var bucketAcl = new BucketAclV2("bucketAcl", BucketAclV2Args.builder()
.bucket(bucket.id())
.acl("private")
.build());
var firehoseToS3RolePolicy = new RolePolicy("firehoseToS3RolePolicy", RolePolicyArgs.builder()
.role(firehoseToS3Role.id())
.policy(Output.tuple(bucket.arn(), bucket.arn()).applyValue(values -> {
var bucketArn = values.t1;
var bucketArn1 = values.t2;
return """
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:AbortMultipartUpload",
"s3:GetBucketLocation",
"s3:GetObject",
"s3:ListBucket",
"s3:ListBucketMultipartUploads",
"s3:PutObject"
],
"Resource": [
"%s",
"%s/*"
]
}
]
}
", bucketArn,bucketArn1);
}))
.build());
}
}
Additional Statistics
package generated_program;
import com.pulumi.Context;
import com.pulumi.Pulumi;
import com.pulumi.core.Output;
import com.pulumi.aws.cloudwatch.MetricStream;
import com.pulumi.aws.cloudwatch.MetricStreamArgs;
import com.pulumi.aws.cloudwatch.inputs.MetricStreamStatisticsConfigurationArgs;
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 main = new MetricStream("main", MetricStreamArgs.builder()
.roleArn(aws_iam_role.metric_stream_to_firehose().arn())
.firehoseArn(aws_kinesis_firehose_delivery_stream.s3_stream().arn())
.outputFormat("json")
.statisticsConfigurations(
MetricStreamStatisticsConfigurationArgs.builder()
.additionalStatistics(
"p1",
"tm99")
.includeMetrics(MetricStreamStatisticsConfigurationIncludeMetricArgs.builder()
.metricName("CPUUtilization")
.namespace("AWS/EC2")
.build())
.build(),
MetricStreamStatisticsConfigurationArgs.builder()
.additionalStatistics("TS(50.5:)")
.includeMetrics(MetricStreamStatisticsConfigurationIncludeMetricArgs.builder()
.metricName("CPUUtilization")
.namespace("AWS/EC2")
.build())
.build())
.build());
}
}
Import
CloudWatch metric streams can be imported using the name
, e.g.,
$ pulumi import aws:cloudwatch/metricStream:MetricStream sample sample-stream-name
Constructors
Functions
Properties
Output format for the stream. Possible values are json
and opentelemetry0.7
. For more information about output formats, see Metric streams output formats.
ARN of the IAM role that this metric stream will use to access Amazon Kinesis Firehose resources. For more information about role permissions, see Trust between CloudWatch and Kinesis Data Firehose.
For each entry in this array, you specify one or more metrics and the list of additional statistics to stream for those metrics. The additional statistics that you can stream depend on the stream's output_format
. If the OutputFormat is json
, you can stream any additional statistic that is supported by CloudWatch, listed in CloudWatch statistics definitions. If the OutputFormat is opentelemetry0.7
, you can stream percentile statistics (p99 etc.). See details below.