Package com.pulumi.aws.cloudwatch
Class MetricStream
- java.lang.Object
-
- com.pulumi.resources.Resource
-
- com.pulumi.resources.CustomResource
-
- com.pulumi.aws.cloudwatch.MetricStream
-
public class MetricStream extends com.pulumi.resources.CustomResource
Provides a CloudWatch Metric Stream resource. ## Example Usage ### Filters <!--Start PulumiCodeChooser -->package generated_program; import com.pulumi.Context; import com.pulumi.Pulumi; import com.pulumi.core.Output; import com.pulumi.aws.iam.IamFunctions; import com.pulumi.aws.iam.inputs.GetPolicyDocumentArgs; import com.pulumi.aws.iam.Role; import com.pulumi.aws.iam.RoleArgs; import com.pulumi.aws.s3.BucketV2; import com.pulumi.aws.s3.BucketV2Args; import com.pulumi.aws.kinesis.FirehoseDeliveryStream; import com.pulumi.aws.kinesis.FirehoseDeliveryStreamArgs; import com.pulumi.aws.kinesis.inputs.FirehoseDeliveryStreamExtendedS3ConfigurationArgs; 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) { // https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html final var streamsAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .effect("Allow") .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("streams.metrics.cloudwatch.amazonaws.com") .build()) .actions("sts:AssumeRole") .build()) .build()); var metricStreamToFirehoseRole = new Role("metricStreamToFirehoseRole", RoleArgs.builder() .name("metric_stream_to_firehose_role") .assumeRolePolicy(streamsAssumeRole.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json())) .build()); var bucket = new BucketV2("bucket", BucketV2Args.builder() .bucket("metric-stream-test-bucket") .build()); final var firehoseAssumeRole = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .effect("Allow") .principals(GetPolicyDocumentStatementPrincipalArgs.builder() .type("Service") .identifiers("firehose.amazonaws.com") .build()) .actions("sts:AssumeRole") .build()) .build()); var firehoseToS3Role = new Role("firehoseToS3Role", RoleArgs.builder() .assumeRolePolicy(firehoseAssumeRole.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json())) .build()); var s3Stream = new FirehoseDeliveryStream("s3Stream", FirehoseDeliveryStreamArgs.builder() .name("metric-stream-test-stream") .destination("extended_s3") .extendedS3Configuration(FirehoseDeliveryStreamExtendedS3ConfigurationArgs.builder() .roleArn(firehoseToS3Role.arn()) .bucketArn(bucket.arn()) .build()) .build()); var main = new MetricStream("main", MetricStreamArgs.builder() .name("my-metric-stream") .roleArn(metricStreamToFirehoseRole.arn()) .firehoseArn(s3Stream.arn()) .outputFormat("json") .includeFilters( MetricStreamIncludeFilterArgs.builder() .namespace("AWS/EC2") .metricNames( "CPUUtilization", "NetworkOut") .build(), MetricStreamIncludeFilterArgs.builder() .namespace("AWS/EBS") .metricNames() .build()) .build()); // https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html final var metricStreamToFirehose = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .effect("Allow") .actions( "firehose:PutRecord", "firehose:PutRecordBatch") .resources(s3Stream.arn()) .build()) .build()); var metricStreamToFirehoseRolePolicy = new RolePolicy("metricStreamToFirehoseRolePolicy", RolePolicyArgs.builder() .name("default") .role(metricStreamToFirehoseRole.id()) .policy(metricStreamToFirehose.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult).applyValue(metricStreamToFirehose -> metricStreamToFirehose.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))) .build()); var bucketAcl = new BucketAclV2("bucketAcl", BucketAclV2Args.builder() .bucket(bucket.id()) .acl("private") .build()); final var firehoseToS3 = IamFunctions.getPolicyDocument(GetPolicyDocumentArgs.builder() .statements(GetPolicyDocumentStatementArgs.builder() .effect("Allow") .actions( "s3:AbortMultipartUpload", "s3:GetBucketLocation", "s3:GetObject", "s3:ListBucket", "s3:ListBucketMultipartUploads", "s3:PutObject") .resources( bucket.arn(), bucket.arn().applyValue(arn -> String.format("%s/*", arn))) .build()) .build()); var firehoseToS3RolePolicy = new RolePolicy("firehoseToS3RolePolicy", RolePolicyArgs.builder() .name("default") .role(firehoseToS3Role.id()) .policy(firehoseToS3.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult).applyValue(firehoseToS3 -> firehoseToS3.applyValue(getPolicyDocumentResult -> getPolicyDocumentResult.json()))) .build()); } }
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() .name("my-metric-stream") .roleArn(metricStreamToFirehose.arn()) .firehoseArn(s3Stream.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()); } }
-
-
Constructor Summary
Constructors Constructor Description MetricStream(java.lang.String name)
MetricStream(java.lang.String name, MetricStreamArgs args)
MetricStream(java.lang.String name, MetricStreamArgs args, com.pulumi.resources.CustomResourceOptions options)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description com.pulumi.core.Output<java.lang.String>
arn()
com.pulumi.core.Output<java.lang.String>
creationDate()
com.pulumi.core.Output<java.util.Optional<java.util.List<MetricStreamExcludeFilter>>>
excludeFilters()
com.pulumi.core.Output<java.lang.String>
firehoseArn()
static MetricStream
get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, MetricStreamState 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.util.Optional<java.util.List<MetricStreamIncludeFilter>>>
includeFilters()
com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>>
includeLinkedAccountsMetrics()
com.pulumi.core.Output<java.lang.String>
lastUpdateDate()
com.pulumi.core.Output<java.lang.String>
name()
com.pulumi.core.Output<java.lang.String>
namePrefix()
com.pulumi.core.Output<java.lang.String>
outputFormat()
com.pulumi.core.Output<java.lang.String>
roleArn()
com.pulumi.core.Output<java.lang.String>
state()
com.pulumi.core.Output<java.util.Optional<java.util.List<MetricStreamStatisticsConfiguration>>>
statisticsConfigurations()
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()
-
-
-
Constructor Detail
-
MetricStream
public MetricStream(java.lang.String name)
- Parameters:
name
- The _unique_ name of the resulting resource.
-
MetricStream
public MetricStream(java.lang.String name, MetricStreamArgs args)
- Parameters:
name
- The _unique_ name of the resulting resource.args
- The arguments to use to populate this resource's properties.
-
MetricStream
public MetricStream(java.lang.String name, MetricStreamArgs 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:
- ARN of the metric stream.
-
creationDate
public com.pulumi.core.Output<java.lang.String> creationDate()
- Returns:
- Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was created.
-
excludeFilters
public com.pulumi.core.Output<java.util.Optional<java.util.List<MetricStreamExcludeFilter>>> excludeFilters()
- Returns:
- List of exclusive metric filters. If you specify this parameter, the stream sends metrics from all metric namespaces except for the namespaces and the conditional metric names that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is excluded. Conflicts with `include_filter`.
-
firehoseArn
public com.pulumi.core.Output<java.lang.String> firehoseArn()
- Returns:
- ARN of the Amazon Kinesis Firehose delivery stream to use for this metric stream.
-
includeFilters
public com.pulumi.core.Output<java.util.Optional<java.util.List<MetricStreamIncludeFilter>>> includeFilters()
- Returns:
- List of inclusive metric filters. If you specify this parameter, the stream sends only the conditional metric names from the metric namespaces that you specify here. If you don't specify metric names or provide empty metric names whole metric namespace is included. Conflicts with `exclude_filter`.
-
includeLinkedAccountsMetrics
public com.pulumi.core.Output<java.util.Optional<java.lang.Boolean>> includeLinkedAccountsMetrics()
- Returns:
- If you are creating a metric stream in a monitoring account, specify true to include metrics from source accounts that are linked to this monitoring account, in the metric stream. The default is false. For more information about linking accounts, see [CloudWatch cross-account observability](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Unified-Cross-Account.html).
-
lastUpdateDate
public com.pulumi.core.Output<java.lang.String> lastUpdateDate()
- Returns:
- Date and time in [RFC3339 format](https://tools.ietf.org/html/rfc3339#section-5.8) that the metric stream was last updated.
-
name
public com.pulumi.core.Output<java.lang.String> name()
- Returns:
- Friendly name of the metric stream. If omitted, the provider will assign a random, unique name. Conflicts with `name_prefix`.
-
namePrefix
public com.pulumi.core.Output<java.lang.String> namePrefix()
- Returns:
- Creates a unique friendly name beginning with the specified prefix. Conflicts with `name`.
-
outputFormat
public com.pulumi.core.Output<java.lang.String> outputFormat()
- Returns:
- Output format for the stream. Possible values are `json`, `opentelemetry0.7`, and `opentelemetry1.0`. For more information about output formats, see [Metric streams output formats](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-formats.html). The following arguments are optional:
-
roleArn
public com.pulumi.core.Output<java.lang.String> roleArn()
- Returns:
- 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-metric-streams-trustpolicy.html).
-
state
public com.pulumi.core.Output<java.lang.String> state()
- Returns:
- State of the metric stream. Possible values are `running` and `stopped`.
-
statisticsConfigurations
public com.pulumi.core.Output<java.util.Optional<java.util.List<MetricStreamStatisticsConfiguration>>> statisticsConfigurations()
- Returns:
- 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](https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/Statistics-definitions.html.html). If the OutputFormat is `opentelemetry0.7` or `opentelemetry1.0`, you can stream percentile statistics (p99 etc.). See details below.
-
tags
public com.pulumi.core.Output<java.util.Optional<java.util.Map<java.lang.String,java.lang.String>>> tags()
- Returns:
- Map of tags to assign to the resource. If configured with a provider `default_tags` 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 `default_tags` configuration block.
-
get
public static MetricStream get(java.lang.String name, com.pulumi.core.Output<java.lang.String> id, @Nullable MetricStreamState 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.
-
-