import { Value } from '../../../cloudformation/Value';
import { DimensionProps } from './DimensionProps';
/**
  <code>MetricTransformation</code> is a property of the <code>AWS::Logs::MetricFilter</code> resource that describes how to transform log streams into a CloudWatch metric.
  For full documentation go to <a href="http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-logs-metricfilter-metrictransformation.html">the AWS Docs</a>
*/
export interface MetricTransformationProps {
    /** <code>DefaultValue</code>  <a name="cfn-logs-metricfilter-metrictransformation-defaultvalue"></a>
  (Optional) The value to emit when a filter pattern does not match a log event. This value can be null.<br />
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    defaultValue?: Value<number>;
    /** <code>MetricName</code>  <a name="cfn-logs-metricfilter-metrictransformation-metricname"></a>
  The name of the CloudWatch metric.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    metricName: Value<string>;
    /** <code>MetricValue</code>  <a name="cfn-logs-metricfilter-metrictransformation-metricvalue"></a>
  The value that is published to the CloudWatch metric. For example, if you’re counting the occurrences of a particular term like <code>Error</code>, specify 1 for the metric value. If you’re counting the number of bytes transferred, reference the value that is in the log event by using $. followed by the name of the field that you specified in the filter pattern, such as <code>$.size</code>.<br />
  
  Required: Yes<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    metricValue: Value<string>;
    /** <code>MetricNamespace</code>  <a name="cfn-logs-metricfilter-metrictransformation-metricnamespace"></a>
  A custom namespace to contain your metric in CloudWatch. Use namespaces to group together metrics that are similar. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/cloudwatch_concepts.html#Namespace">Namespaces</a>.<br />
  
  Required: Yes<br />
  
  Maximum: <code>255</code><br />
  
  Pattern: <code>[^:*$]*</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    metricNamespace: Value<string>;
    /** <code>Dimensions</code>  <a name="cfn-logs-metricfilter-metrictransformation-dimensions"></a>
  The fields to use as dimensions for the metric. One metric filter can include as many as three dimensions.<br />
  Metrics extracted from log events are charged as custom metrics. To prevent unexpected high charges, do not specify high-cardinality fields such as <code>IPAddress</code> or <code>requestID</code> as dimensions. Each different value found for a dimension is treated as a separate metric and accrues charges as a separate custom metric.<br />
  CloudWatch Logs disables a metric filter if it generates 1000 different name/value pairs for your specified dimensions within a certain amount of time. This helps to prevent accidental high charges.<br />
  You can also set up a billing alarm to alert you if your charges are higher than expected. For more information, see <a href="https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/monitor_estimated_charges_with_cloudwatch.html"> Creating a Billing Alarm to Monitor Your Estimated AWS Charges</a>.
  
  Required: No<br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    dimensions?: DimensionProps[];
    /** <code>Unit</code>  <a name="cfn-logs-metricfilter-metrictransformation-unit"></a>
  The unit to assign to the metric. If you omit this, the unit is set as <code>None</code>.<br />
  
  Required: No<br />
  
  Allowed values: <code>Bits | Bits/Second | Bytes | Bytes/Second | Count | Count/Second | Gigabits | Gigabits/Second | Gigabytes | Gigabytes/Second | Kilobits | Kilobits/Second | Kilobytes | Kilobytes/Second | Megabits | Megabits/Second | Megabytes | Megabytes/Second | Microseconds | Milliseconds | None | Percent | Seconds | Terabits | Terabits/Second | Terabytes | Terabytes/Second</code><br />
  
  Update requires: <a href="https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/using-cfn-updating-stacks-update-behaviors.html#update-no-interrupt">No interruption</a> */
    unit?: Value<'Bits' | 'Bits/Second' | 'Bytes' | 'Bytes/Second' | 'Count' | 'Count/Second' | 'Gigabits' | 'Gigabits/Second' | 'Gigabytes' | 'Gigabytes/Second' | 'Kilobits' | 'Kilobits/Second' | 'Kilobytes' | 'Kilobytes/Second' | 'Megabits' | 'Megabits/Second' | 'Megabytes' | 'Megabytes/Second' | 'Microseconds' | 'Milliseconds' | 'None' | 'Percent' | 'Seconds' | 'Terabits' | 'Terabits/Second' | 'Terabytes' | 'Terabytes/Second'>;
}
