UNPKG

@aws-cdk/aws-cloudwatch

Version:

The CDK Construct Library for AWS::CloudWatch

889 lines 451 kB
"use strict"; var _a, _b, _c, _d, _e, _f; Object.defineProperty(exports, "__esModule", { value: true }); exports.CfnMetricStream = exports.CfnInsightRule = exports.CfnDashboard = exports.CfnCompositeAlarm = exports.CfnAnomalyDetector = exports.CfnAlarm = void 0; const jsiiDeprecationWarnings = require("../.warnings.jsii.js"); const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); // Copyright 2012-2022 Amazon.com, Inc. or its affiliates. All Rights Reserved. // Generated from the AWS CloudFormation Resource Specification // See: docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/cfn-resource-specification.html // @cfn2ts:meta@ {"generated":"2022-05-20T21:34:05.389Z","fingerprint":"P4HnLNWHyoNst1+SBX0BlcDxiXR+/chB1KM4y2yQhZI="} /* eslint-disable max-len */ // This is generated code - line lengths are difficult to control const cdk = require("@aws-cdk/core"); const cfn_parse = require("@aws-cdk/core/lib/helpers-internal"); /** * Determine whether the given properties match those of a `CfnAlarmProps` * * @param properties - the TypeScript properties of a `CfnAlarmProps` * * @returns the result of the validation. */ function CfnAlarmPropsValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('actionsEnabled', cdk.validateBoolean)(properties.actionsEnabled)); errors.collect(cdk.propertyValidator('alarmActions', cdk.listValidator(cdk.validateString))(properties.alarmActions)); errors.collect(cdk.propertyValidator('alarmDescription', cdk.validateString)(properties.alarmDescription)); errors.collect(cdk.propertyValidator('alarmName', cdk.validateString)(properties.alarmName)); errors.collect(cdk.propertyValidator('comparisonOperator', cdk.requiredValidator)(properties.comparisonOperator)); errors.collect(cdk.propertyValidator('comparisonOperator', cdk.validateString)(properties.comparisonOperator)); errors.collect(cdk.propertyValidator('datapointsToAlarm', cdk.validateNumber)(properties.datapointsToAlarm)); errors.collect(cdk.propertyValidator('dimensions', cdk.listValidator(CfnAlarm_DimensionPropertyValidator))(properties.dimensions)); errors.collect(cdk.propertyValidator('evaluateLowSampleCountPercentile', cdk.validateString)(properties.evaluateLowSampleCountPercentile)); errors.collect(cdk.propertyValidator('evaluationPeriods', cdk.requiredValidator)(properties.evaluationPeriods)); errors.collect(cdk.propertyValidator('evaluationPeriods', cdk.validateNumber)(properties.evaluationPeriods)); errors.collect(cdk.propertyValidator('extendedStatistic', cdk.validateString)(properties.extendedStatistic)); errors.collect(cdk.propertyValidator('insufficientDataActions', cdk.listValidator(cdk.validateString))(properties.insufficientDataActions)); errors.collect(cdk.propertyValidator('metricName', cdk.validateString)(properties.metricName)); errors.collect(cdk.propertyValidator('metrics', cdk.listValidator(CfnAlarm_MetricDataQueryPropertyValidator))(properties.metrics)); errors.collect(cdk.propertyValidator('namespace', cdk.validateString)(properties.namespace)); errors.collect(cdk.propertyValidator('okActions', cdk.listValidator(cdk.validateString))(properties.okActions)); errors.collect(cdk.propertyValidator('period', cdk.validateNumber)(properties.period)); errors.collect(cdk.propertyValidator('statistic', cdk.validateString)(properties.statistic)); errors.collect(cdk.propertyValidator('threshold', cdk.validateNumber)(properties.threshold)); errors.collect(cdk.propertyValidator('thresholdMetricId', cdk.validateString)(properties.thresholdMetricId)); errors.collect(cdk.propertyValidator('treatMissingData', cdk.validateString)(properties.treatMissingData)); errors.collect(cdk.propertyValidator('unit', cdk.validateString)(properties.unit)); return errors.wrap('supplied properties not correct for "CfnAlarmProps"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm` resource * * @param properties - the TypeScript properties of a `CfnAlarmProps` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm` resource. */ // @ts-ignore TS6133 function cfnAlarmPropsToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAlarmPropsValidator(properties).assertSuccess(); return { ComparisonOperator: cdk.stringToCloudFormation(properties.comparisonOperator), EvaluationPeriods: cdk.numberToCloudFormation(properties.evaluationPeriods), ActionsEnabled: cdk.booleanToCloudFormation(properties.actionsEnabled), AlarmActions: cdk.listMapper(cdk.stringToCloudFormation)(properties.alarmActions), AlarmDescription: cdk.stringToCloudFormation(properties.alarmDescription), AlarmName: cdk.stringToCloudFormation(properties.alarmName), DatapointsToAlarm: cdk.numberToCloudFormation(properties.datapointsToAlarm), Dimensions: cdk.listMapper(cfnAlarmDimensionPropertyToCloudFormation)(properties.dimensions), EvaluateLowSampleCountPercentile: cdk.stringToCloudFormation(properties.evaluateLowSampleCountPercentile), ExtendedStatistic: cdk.stringToCloudFormation(properties.extendedStatistic), InsufficientDataActions: cdk.listMapper(cdk.stringToCloudFormation)(properties.insufficientDataActions), MetricName: cdk.stringToCloudFormation(properties.metricName), Metrics: cdk.listMapper(cfnAlarmMetricDataQueryPropertyToCloudFormation)(properties.metrics), Namespace: cdk.stringToCloudFormation(properties.namespace), OKActions: cdk.listMapper(cdk.stringToCloudFormation)(properties.okActions), Period: cdk.numberToCloudFormation(properties.period), Statistic: cdk.stringToCloudFormation(properties.statistic), Threshold: cdk.numberToCloudFormation(properties.threshold), ThresholdMetricId: cdk.stringToCloudFormation(properties.thresholdMetricId), TreatMissingData: cdk.stringToCloudFormation(properties.treatMissingData), Unit: cdk.stringToCloudFormation(properties.unit), }; } // @ts-ignore TS6133 function CfnAlarmPropsFromCloudFormation(properties) { properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('comparisonOperator', 'ComparisonOperator', cfn_parse.FromCloudFormation.getString(properties.ComparisonOperator)); ret.addPropertyResult('evaluationPeriods', 'EvaluationPeriods', cfn_parse.FromCloudFormation.getNumber(properties.EvaluationPeriods)); ret.addPropertyResult('actionsEnabled', 'ActionsEnabled', properties.ActionsEnabled != null ? cfn_parse.FromCloudFormation.getBoolean(properties.ActionsEnabled) : undefined); ret.addPropertyResult('alarmActions', 'AlarmActions', properties.AlarmActions != null ? cfn_parse.FromCloudFormation.getStringArray(properties.AlarmActions) : undefined); ret.addPropertyResult('alarmDescription', 'AlarmDescription', properties.AlarmDescription != null ? cfn_parse.FromCloudFormation.getString(properties.AlarmDescription) : undefined); ret.addPropertyResult('alarmName', 'AlarmName', properties.AlarmName != null ? cfn_parse.FromCloudFormation.getString(properties.AlarmName) : undefined); ret.addPropertyResult('datapointsToAlarm', 'DatapointsToAlarm', properties.DatapointsToAlarm != null ? cfn_parse.FromCloudFormation.getNumber(properties.DatapointsToAlarm) : undefined); ret.addPropertyResult('dimensions', 'Dimensions', properties.Dimensions != null ? cfn_parse.FromCloudFormation.getArray(CfnAlarmDimensionPropertyFromCloudFormation)(properties.Dimensions) : undefined); ret.addPropertyResult('evaluateLowSampleCountPercentile', 'EvaluateLowSampleCountPercentile', properties.EvaluateLowSampleCountPercentile != null ? cfn_parse.FromCloudFormation.getString(properties.EvaluateLowSampleCountPercentile) : undefined); ret.addPropertyResult('extendedStatistic', 'ExtendedStatistic', properties.ExtendedStatistic != null ? cfn_parse.FromCloudFormation.getString(properties.ExtendedStatistic) : undefined); ret.addPropertyResult('insufficientDataActions', 'InsufficientDataActions', properties.InsufficientDataActions != null ? cfn_parse.FromCloudFormation.getStringArray(properties.InsufficientDataActions) : undefined); ret.addPropertyResult('metricName', 'MetricName', properties.MetricName != null ? cfn_parse.FromCloudFormation.getString(properties.MetricName) : undefined); ret.addPropertyResult('metrics', 'Metrics', properties.Metrics != null ? cfn_parse.FromCloudFormation.getArray(CfnAlarmMetricDataQueryPropertyFromCloudFormation)(properties.Metrics) : undefined); ret.addPropertyResult('namespace', 'Namespace', properties.Namespace != null ? cfn_parse.FromCloudFormation.getString(properties.Namespace) : undefined); ret.addPropertyResult('okActions', 'OKActions', properties.OKActions != null ? cfn_parse.FromCloudFormation.getStringArray(properties.OKActions) : undefined); ret.addPropertyResult('period', 'Period', properties.Period != null ? cfn_parse.FromCloudFormation.getNumber(properties.Period) : undefined); ret.addPropertyResult('statistic', 'Statistic', properties.Statistic != null ? cfn_parse.FromCloudFormation.getString(properties.Statistic) : undefined); ret.addPropertyResult('threshold', 'Threshold', properties.Threshold != null ? cfn_parse.FromCloudFormation.getNumber(properties.Threshold) : undefined); ret.addPropertyResult('thresholdMetricId', 'ThresholdMetricId', properties.ThresholdMetricId != null ? cfn_parse.FromCloudFormation.getString(properties.ThresholdMetricId) : undefined); ret.addPropertyResult('treatMissingData', 'TreatMissingData', properties.TreatMissingData != null ? cfn_parse.FromCloudFormation.getString(properties.TreatMissingData) : undefined); ret.addPropertyResult('unit', 'Unit', properties.Unit != null ? cfn_parse.FromCloudFormation.getString(properties.Unit) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * A CloudFormation `AWS::CloudWatch::Alarm` * * The `AWS::CloudWatch::Alarm` type specifies an alarm and associates it with the specified metric or metric math expression. * * When this operation creates an alarm, the alarm state is immediately set to `INSUFFICIENT_DATA` . The alarm is then evaluated and its state is set appropriately. Any actions associated with the new state are then executed. * * When you update an existing alarm, its state is left unchanged, but the update completely overwrites the previous configuration of the alarm. * * @cloudformationResource AWS::CloudWatch::Alarm * @stability external * * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-properties-cw-alarm.html */ class CfnAlarm extends cdk.CfnResource { /** * Create a new `AWS::CloudWatch::Alarm`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props) { super(scope, id, { type: CfnAlarm.CFN_RESOURCE_TYPE_NAME, properties: props }); try { jsiiDeprecationWarnings._aws_cdk_aws_cloudwatch_CfnAlarmProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.constructor); } throw error; } cdk.requireProperty(props, 'comparisonOperator', this); cdk.requireProperty(props, 'evaluationPeriods', this); this.attrArn = cdk.Token.asString(this.getAtt('Arn')); this.comparisonOperator = props.comparisonOperator; this.evaluationPeriods = props.evaluationPeriods; this.actionsEnabled = props.actionsEnabled; this.alarmActions = props.alarmActions; this.alarmDescription = props.alarmDescription; this.alarmName = props.alarmName; this.datapointsToAlarm = props.datapointsToAlarm; this.dimensions = props.dimensions; this.evaluateLowSampleCountPercentile = props.evaluateLowSampleCountPercentile; this.extendedStatistic = props.extendedStatistic; this.insufficientDataActions = props.insufficientDataActions; this.metricName = props.metricName; this.metrics = props.metrics; this.namespace = props.namespace; this.okActions = props.okActions; this.period = props.period; this.statistic = props.statistic; this.threshold = props.threshold; this.thresholdMetricId = props.thresholdMetricId; this.treatMissingData = props.treatMissingData; this.unit = props.unit; } /** * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope, id, resourceAttributes, options) { resourceAttributes = resourceAttributes || {}; const resourceProperties = options.parser.parseValue(resourceAttributes.Properties); const propsResult = CfnAlarmPropsFromCloudFormation(resourceProperties); const ret = new CfnAlarm(scope, id, propsResult.value); for (const [propKey, propVal] of Object.entries(propsResult.extraProperties)) { ret.addPropertyOverride(propKey, propVal); } options.parser.handleAttributes(ret, resourceAttributes, id); return ret; } /** * Examines the CloudFormation resource and discloses attributes. * * @param inspector - tree inspector to collect and process attributes * */ inspect(inspector) { inspector.addAttribute("aws:cdk:cloudformation:type", CfnAlarm.CFN_RESOURCE_TYPE_NAME); inspector.addAttribute("aws:cdk:cloudformation:props", this.cfnProperties); } get cfnProperties() { return { comparisonOperator: this.comparisonOperator, evaluationPeriods: this.evaluationPeriods, actionsEnabled: this.actionsEnabled, alarmActions: this.alarmActions, alarmDescription: this.alarmDescription, alarmName: this.alarmName, datapointsToAlarm: this.datapointsToAlarm, dimensions: this.dimensions, evaluateLowSampleCountPercentile: this.evaluateLowSampleCountPercentile, extendedStatistic: this.extendedStatistic, insufficientDataActions: this.insufficientDataActions, metricName: this.metricName, metrics: this.metrics, namespace: this.namespace, okActions: this.okActions, period: this.period, statistic: this.statistic, threshold: this.threshold, thresholdMetricId: this.thresholdMetricId, treatMissingData: this.treatMissingData, unit: this.unit, }; } renderProperties(props) { return cfnAlarmPropsToCloudFormation(props); } } exports.CfnAlarm = CfnAlarm; _a = JSII_RTTI_SYMBOL_1; CfnAlarm[_a] = { fqn: "@aws-cdk/aws-cloudwatch.CfnAlarm", version: "1.157.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnAlarm.CFN_RESOURCE_TYPE_NAME = "AWS::CloudWatch::Alarm"; /** * Determine whether the given properties match those of a `DimensionProperty` * * @param properties - the TypeScript properties of a `DimensionProperty` * * @returns the result of the validation. */ function CfnAlarm_DimensionPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('name', cdk.requiredValidator)(properties.name)); errors.collect(cdk.propertyValidator('name', cdk.validateString)(properties.name)); errors.collect(cdk.propertyValidator('value', cdk.requiredValidator)(properties.value)); errors.collect(cdk.propertyValidator('value', cdk.validateString)(properties.value)); return errors.wrap('supplied properties not correct for "DimensionProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.Dimension` resource * * @param properties - the TypeScript properties of a `DimensionProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.Dimension` resource. */ // @ts-ignore TS6133 function cfnAlarmDimensionPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAlarm_DimensionPropertyValidator(properties).assertSuccess(); return { Name: cdk.stringToCloudFormation(properties.name), Value: cdk.stringToCloudFormation(properties.value), }; } // @ts-ignore TS6133 function CfnAlarmDimensionPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('name', 'Name', cfn_parse.FromCloudFormation.getString(properties.Name)); ret.addPropertyResult('value', 'Value', cfn_parse.FromCloudFormation.getString(properties.Value)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricProperty` * * @param properties - the TypeScript properties of a `MetricProperty` * * @returns the result of the validation. */ function CfnAlarm_MetricPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('dimensions', cdk.listValidator(CfnAlarm_DimensionPropertyValidator))(properties.dimensions)); errors.collect(cdk.propertyValidator('metricName', cdk.validateString)(properties.metricName)); errors.collect(cdk.propertyValidator('namespace', cdk.validateString)(properties.namespace)); return errors.wrap('supplied properties not correct for "MetricProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.Metric` resource * * @param properties - the TypeScript properties of a `MetricProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.Metric` resource. */ // @ts-ignore TS6133 function cfnAlarmMetricPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAlarm_MetricPropertyValidator(properties).assertSuccess(); return { Dimensions: cdk.listMapper(cfnAlarmDimensionPropertyToCloudFormation)(properties.dimensions), MetricName: cdk.stringToCloudFormation(properties.metricName), Namespace: cdk.stringToCloudFormation(properties.namespace), }; } // @ts-ignore TS6133 function CfnAlarmMetricPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('dimensions', 'Dimensions', properties.Dimensions != null ? cfn_parse.FromCloudFormation.getArray(CfnAlarmDimensionPropertyFromCloudFormation)(properties.Dimensions) : undefined); ret.addPropertyResult('metricName', 'MetricName', properties.MetricName != null ? cfn_parse.FromCloudFormation.getString(properties.MetricName) : undefined); ret.addPropertyResult('namespace', 'Namespace', properties.Namespace != null ? cfn_parse.FromCloudFormation.getString(properties.Namespace) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricDataQueryProperty` * * @param properties - the TypeScript properties of a `MetricDataQueryProperty` * * @returns the result of the validation. */ function CfnAlarm_MetricDataQueryPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('accountId', cdk.validateString)(properties.accountId)); errors.collect(cdk.propertyValidator('expression', cdk.validateString)(properties.expression)); errors.collect(cdk.propertyValidator('id', cdk.requiredValidator)(properties.id)); errors.collect(cdk.propertyValidator('id', cdk.validateString)(properties.id)); errors.collect(cdk.propertyValidator('label', cdk.validateString)(properties.label)); errors.collect(cdk.propertyValidator('metricStat', CfnAlarm_MetricStatPropertyValidator)(properties.metricStat)); errors.collect(cdk.propertyValidator('period', cdk.validateNumber)(properties.period)); errors.collect(cdk.propertyValidator('returnData', cdk.validateBoolean)(properties.returnData)); return errors.wrap('supplied properties not correct for "MetricDataQueryProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.MetricDataQuery` resource * * @param properties - the TypeScript properties of a `MetricDataQueryProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.MetricDataQuery` resource. */ // @ts-ignore TS6133 function cfnAlarmMetricDataQueryPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAlarm_MetricDataQueryPropertyValidator(properties).assertSuccess(); return { AccountId: cdk.stringToCloudFormation(properties.accountId), Expression: cdk.stringToCloudFormation(properties.expression), Id: cdk.stringToCloudFormation(properties.id), Label: cdk.stringToCloudFormation(properties.label), MetricStat: cfnAlarmMetricStatPropertyToCloudFormation(properties.metricStat), Period: cdk.numberToCloudFormation(properties.period), ReturnData: cdk.booleanToCloudFormation(properties.returnData), }; } // @ts-ignore TS6133 function CfnAlarmMetricDataQueryPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('accountId', 'AccountId', properties.AccountId != null ? cfn_parse.FromCloudFormation.getString(properties.AccountId) : undefined); ret.addPropertyResult('expression', 'Expression', properties.Expression != null ? cfn_parse.FromCloudFormation.getString(properties.Expression) : undefined); ret.addPropertyResult('id', 'Id', cfn_parse.FromCloudFormation.getString(properties.Id)); ret.addPropertyResult('label', 'Label', properties.Label != null ? cfn_parse.FromCloudFormation.getString(properties.Label) : undefined); ret.addPropertyResult('metricStat', 'MetricStat', properties.MetricStat != null ? CfnAlarmMetricStatPropertyFromCloudFormation(properties.MetricStat) : undefined); ret.addPropertyResult('period', 'Period', properties.Period != null ? cfn_parse.FromCloudFormation.getNumber(properties.Period) : undefined); ret.addPropertyResult('returnData', 'ReturnData', properties.ReturnData != null ? cfn_parse.FromCloudFormation.getBoolean(properties.ReturnData) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricStatProperty` * * @param properties - the TypeScript properties of a `MetricStatProperty` * * @returns the result of the validation. */ function CfnAlarm_MetricStatPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('metric', cdk.requiredValidator)(properties.metric)); errors.collect(cdk.propertyValidator('metric', CfnAlarm_MetricPropertyValidator)(properties.metric)); errors.collect(cdk.propertyValidator('period', cdk.requiredValidator)(properties.period)); errors.collect(cdk.propertyValidator('period', cdk.validateNumber)(properties.period)); errors.collect(cdk.propertyValidator('stat', cdk.requiredValidator)(properties.stat)); errors.collect(cdk.propertyValidator('stat', cdk.validateString)(properties.stat)); errors.collect(cdk.propertyValidator('unit', cdk.validateString)(properties.unit)); return errors.wrap('supplied properties not correct for "MetricStatProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.MetricStat` resource * * @param properties - the TypeScript properties of a `MetricStatProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::Alarm.MetricStat` resource. */ // @ts-ignore TS6133 function cfnAlarmMetricStatPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAlarm_MetricStatPropertyValidator(properties).assertSuccess(); return { Metric: cfnAlarmMetricPropertyToCloudFormation(properties.metric), Period: cdk.numberToCloudFormation(properties.period), Stat: cdk.stringToCloudFormation(properties.stat), Unit: cdk.stringToCloudFormation(properties.unit), }; } // @ts-ignore TS6133 function CfnAlarmMetricStatPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('metric', 'Metric', CfnAlarmMetricPropertyFromCloudFormation(properties.Metric)); ret.addPropertyResult('period', 'Period', cfn_parse.FromCloudFormation.getNumber(properties.Period)); ret.addPropertyResult('stat', 'Stat', cfn_parse.FromCloudFormation.getString(properties.Stat)); ret.addPropertyResult('unit', 'Unit', properties.Unit != null ? cfn_parse.FromCloudFormation.getString(properties.Unit) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `CfnAnomalyDetectorProps` * * @param properties - the TypeScript properties of a `CfnAnomalyDetectorProps` * * @returns the result of the validation. */ function CfnAnomalyDetectorPropsValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('configuration', CfnAnomalyDetector_ConfigurationPropertyValidator)(properties.configuration)); errors.collect(cdk.propertyValidator('dimensions', cdk.listValidator(CfnAnomalyDetector_DimensionPropertyValidator))(properties.dimensions)); errors.collect(cdk.propertyValidator('metricMathAnomalyDetector', CfnAnomalyDetector_MetricMathAnomalyDetectorPropertyValidator)(properties.metricMathAnomalyDetector)); errors.collect(cdk.propertyValidator('metricName', cdk.validateString)(properties.metricName)); errors.collect(cdk.propertyValidator('namespace', cdk.validateString)(properties.namespace)); errors.collect(cdk.propertyValidator('singleMetricAnomalyDetector', CfnAnomalyDetector_SingleMetricAnomalyDetectorPropertyValidator)(properties.singleMetricAnomalyDetector)); errors.collect(cdk.propertyValidator('stat', cdk.validateString)(properties.stat)); return errors.wrap('supplied properties not correct for "CfnAnomalyDetectorProps"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector` resource * * @param properties - the TypeScript properties of a `CfnAnomalyDetectorProps` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector` resource. */ // @ts-ignore TS6133 function cfnAnomalyDetectorPropsToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAnomalyDetectorPropsValidator(properties).assertSuccess(); return { Configuration: cfnAnomalyDetectorConfigurationPropertyToCloudFormation(properties.configuration), Dimensions: cdk.listMapper(cfnAnomalyDetectorDimensionPropertyToCloudFormation)(properties.dimensions), MetricMathAnomalyDetector: cfnAnomalyDetectorMetricMathAnomalyDetectorPropertyToCloudFormation(properties.metricMathAnomalyDetector), MetricName: cdk.stringToCloudFormation(properties.metricName), Namespace: cdk.stringToCloudFormation(properties.namespace), SingleMetricAnomalyDetector: cfnAnomalyDetectorSingleMetricAnomalyDetectorPropertyToCloudFormation(properties.singleMetricAnomalyDetector), Stat: cdk.stringToCloudFormation(properties.stat), }; } // @ts-ignore TS6133 function CfnAnomalyDetectorPropsFromCloudFormation(properties) { properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('configuration', 'Configuration', properties.Configuration != null ? CfnAnomalyDetectorConfigurationPropertyFromCloudFormation(properties.Configuration) : undefined); ret.addPropertyResult('dimensions', 'Dimensions', properties.Dimensions != null ? cfn_parse.FromCloudFormation.getArray(CfnAnomalyDetectorDimensionPropertyFromCloudFormation)(properties.Dimensions) : undefined); ret.addPropertyResult('metricMathAnomalyDetector', 'MetricMathAnomalyDetector', properties.MetricMathAnomalyDetector != null ? CfnAnomalyDetectorMetricMathAnomalyDetectorPropertyFromCloudFormation(properties.MetricMathAnomalyDetector) : undefined); ret.addPropertyResult('metricName', 'MetricName', properties.MetricName != null ? cfn_parse.FromCloudFormation.getString(properties.MetricName) : undefined); ret.addPropertyResult('namespace', 'Namespace', properties.Namespace != null ? cfn_parse.FromCloudFormation.getString(properties.Namespace) : undefined); ret.addPropertyResult('singleMetricAnomalyDetector', 'SingleMetricAnomalyDetector', properties.SingleMetricAnomalyDetector != null ? CfnAnomalyDetectorSingleMetricAnomalyDetectorPropertyFromCloudFormation(properties.SingleMetricAnomalyDetector) : undefined); ret.addPropertyResult('stat', 'Stat', properties.Stat != null ? cfn_parse.FromCloudFormation.getString(properties.Stat) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * A CloudFormation `AWS::CloudWatch::AnomalyDetector` * * The `AWS::CloudWatch::AnomalyDetector` type specifies an anomaly detection band for a certain metric and statistic. The band represents the expected "normal" range for the metric values. Anomaly detection bands can be used for visualization of a metric's expected values, and for alarms. * * @cloudformationResource AWS::CloudWatch::AnomalyDetector * @stability external * * @link http://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-cloudwatch-anomalydetector.html */ class CfnAnomalyDetector extends cdk.CfnResource { /** * Create a new `AWS::CloudWatch::AnomalyDetector`. * * @param scope - scope in which this resource is defined * @param id - scoped id of the resource * @param props - resource properties */ constructor(scope, id, props = {}) { super(scope, id, { type: CfnAnomalyDetector.CFN_RESOURCE_TYPE_NAME, properties: props }); try { jsiiDeprecationWarnings._aws_cdk_aws_cloudwatch_CfnAnomalyDetectorProps(props); } catch (error) { if (process.env.JSII_DEBUG !== "1" && error.name === "DeprecationError") { Error.captureStackTrace(error, this.constructor); } throw error; } this.configuration = props.configuration; this.dimensions = props.dimensions; this.metricMathAnomalyDetector = props.metricMathAnomalyDetector; this.metricName = props.metricName; this.namespace = props.namespace; this.singleMetricAnomalyDetector = props.singleMetricAnomalyDetector; this.stat = props.stat; } /** * A factory method that creates a new instance of this class from an object * containing the CloudFormation properties of this resource. * Used in the @aws-cdk/cloudformation-include module. * * @internal */ static _fromCloudFormation(scope, id, resourceAttributes, options) { resourceAttributes = resourceAttributes || {}; const resourceProperties = options.parser.parseValue(resourceAttributes.Properties); const propsResult = CfnAnomalyDetectorPropsFromCloudFormation(resourceProperties); const ret = new CfnAnomalyDetector(scope, id, propsResult.value); for (const [propKey, propVal] of Object.entries(propsResult.extraProperties)) { ret.addPropertyOverride(propKey, propVal); } options.parser.handleAttributes(ret, resourceAttributes, id); return ret; } /** * Examines the CloudFormation resource and discloses attributes. * * @param inspector - tree inspector to collect and process attributes * */ inspect(inspector) { inspector.addAttribute("aws:cdk:cloudformation:type", CfnAnomalyDetector.CFN_RESOURCE_TYPE_NAME); inspector.addAttribute("aws:cdk:cloudformation:props", this.cfnProperties); } get cfnProperties() { return { configuration: this.configuration, dimensions: this.dimensions, metricMathAnomalyDetector: this.metricMathAnomalyDetector, metricName: this.metricName, namespace: this.namespace, singleMetricAnomalyDetector: this.singleMetricAnomalyDetector, stat: this.stat, }; } renderProperties(props) { return cfnAnomalyDetectorPropsToCloudFormation(props); } } exports.CfnAnomalyDetector = CfnAnomalyDetector; _b = JSII_RTTI_SYMBOL_1; CfnAnomalyDetector[_b] = { fqn: "@aws-cdk/aws-cloudwatch.CfnAnomalyDetector", version: "1.157.0" }; /** * The CloudFormation resource type name for this resource class. */ CfnAnomalyDetector.CFN_RESOURCE_TYPE_NAME = "AWS::CloudWatch::AnomalyDetector"; /** * Determine whether the given properties match those of a `ConfigurationProperty` * * @param properties - the TypeScript properties of a `ConfigurationProperty` * * @returns the result of the validation. */ function CfnAnomalyDetector_ConfigurationPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('excludedTimeRanges', cdk.listValidator(CfnAnomalyDetector_RangePropertyValidator))(properties.excludedTimeRanges)); errors.collect(cdk.propertyValidator('metricTimeZone', cdk.validateString)(properties.metricTimeZone)); return errors.wrap('supplied properties not correct for "ConfigurationProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Configuration` resource * * @param properties - the TypeScript properties of a `ConfigurationProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Configuration` resource. */ // @ts-ignore TS6133 function cfnAnomalyDetectorConfigurationPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAnomalyDetector_ConfigurationPropertyValidator(properties).assertSuccess(); return { ExcludedTimeRanges: cdk.listMapper(cfnAnomalyDetectorRangePropertyToCloudFormation)(properties.excludedTimeRanges), MetricTimeZone: cdk.stringToCloudFormation(properties.metricTimeZone), }; } // @ts-ignore TS6133 function CfnAnomalyDetectorConfigurationPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('excludedTimeRanges', 'ExcludedTimeRanges', properties.ExcludedTimeRanges != null ? cfn_parse.FromCloudFormation.getArray(CfnAnomalyDetectorRangePropertyFromCloudFormation)(properties.ExcludedTimeRanges) : undefined); ret.addPropertyResult('metricTimeZone', 'MetricTimeZone', properties.MetricTimeZone != null ? cfn_parse.FromCloudFormation.getString(properties.MetricTimeZone) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `DimensionProperty` * * @param properties - the TypeScript properties of a `DimensionProperty` * * @returns the result of the validation. */ function CfnAnomalyDetector_DimensionPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('name', cdk.requiredValidator)(properties.name)); errors.collect(cdk.propertyValidator('name', cdk.validateString)(properties.name)); errors.collect(cdk.propertyValidator('value', cdk.requiredValidator)(properties.value)); errors.collect(cdk.propertyValidator('value', cdk.validateString)(properties.value)); return errors.wrap('supplied properties not correct for "DimensionProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Dimension` resource * * @param properties - the TypeScript properties of a `DimensionProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Dimension` resource. */ // @ts-ignore TS6133 function cfnAnomalyDetectorDimensionPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAnomalyDetector_DimensionPropertyValidator(properties).assertSuccess(); return { Name: cdk.stringToCloudFormation(properties.name), Value: cdk.stringToCloudFormation(properties.value), }; } // @ts-ignore TS6133 function CfnAnomalyDetectorDimensionPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('name', 'Name', cfn_parse.FromCloudFormation.getString(properties.Name)); ret.addPropertyResult('value', 'Value', cfn_parse.FromCloudFormation.getString(properties.Value)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricProperty` * * @param properties - the TypeScript properties of a `MetricProperty` * * @returns the result of the validation. */ function CfnAnomalyDetector_MetricPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('dimensions', cdk.listValidator(CfnAnomalyDetector_DimensionPropertyValidator))(properties.dimensions)); errors.collect(cdk.propertyValidator('metricName', cdk.requiredValidator)(properties.metricName)); errors.collect(cdk.propertyValidator('metricName', cdk.validateString)(properties.metricName)); errors.collect(cdk.propertyValidator('namespace', cdk.requiredValidator)(properties.namespace)); errors.collect(cdk.propertyValidator('namespace', cdk.validateString)(properties.namespace)); return errors.wrap('supplied properties not correct for "MetricProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Metric` resource * * @param properties - the TypeScript properties of a `MetricProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.Metric` resource. */ // @ts-ignore TS6133 function cfnAnomalyDetectorMetricPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAnomalyDetector_MetricPropertyValidator(properties).assertSuccess(); return { Dimensions: cdk.listMapper(cfnAnomalyDetectorDimensionPropertyToCloudFormation)(properties.dimensions), MetricName: cdk.stringToCloudFormation(properties.metricName), Namespace: cdk.stringToCloudFormation(properties.namespace), }; } // @ts-ignore TS6133 function CfnAnomalyDetectorMetricPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('dimensions', 'Dimensions', properties.Dimensions != null ? cfn_parse.FromCloudFormation.getArray(CfnAnomalyDetectorDimensionPropertyFromCloudFormation)(properties.Dimensions) : undefined); ret.addPropertyResult('metricName', 'MetricName', cfn_parse.FromCloudFormation.getString(properties.MetricName)); ret.addPropertyResult('namespace', 'Namespace', cfn_parse.FromCloudFormation.getString(properties.Namespace)); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricDataQueryProperty` * * @param properties - the TypeScript properties of a `MetricDataQueryProperty` * * @returns the result of the validation. */ function CfnAnomalyDetector_MetricDataQueryPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('accountId', cdk.validateString)(properties.accountId)); errors.collect(cdk.propertyValidator('expression', cdk.validateString)(properties.expression)); errors.collect(cdk.propertyValidator('id', cdk.requiredValidator)(properties.id)); errors.collect(cdk.propertyValidator('id', cdk.validateString)(properties.id)); errors.collect(cdk.propertyValidator('label', cdk.validateString)(properties.label)); errors.collect(cdk.propertyValidator('metricStat', CfnAnomalyDetector_MetricStatPropertyValidator)(properties.metricStat)); errors.collect(cdk.propertyValidator('period', cdk.validateNumber)(properties.period)); errors.collect(cdk.propertyValidator('returnData', cdk.validateBoolean)(properties.returnData)); return errors.wrap('supplied properties not correct for "MetricDataQueryProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.MetricDataQuery` resource * * @param properties - the TypeScript properties of a `MetricDataQueryProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.MetricDataQuery` resource. */ // @ts-ignore TS6133 function cfnAnomalyDetectorMetricDataQueryPropertyToCloudFormation(properties) { if (!cdk.canInspect(properties)) { return properties; } CfnAnomalyDetector_MetricDataQueryPropertyValidator(properties).assertSuccess(); return { AccountId: cdk.stringToCloudFormation(properties.accountId), Expression: cdk.stringToCloudFormation(properties.expression), Id: cdk.stringToCloudFormation(properties.id), Label: cdk.stringToCloudFormation(properties.label), MetricStat: cfnAnomalyDetectorMetricStatPropertyToCloudFormation(properties.metricStat), Period: cdk.numberToCloudFormation(properties.period), ReturnData: cdk.booleanToCloudFormation(properties.returnData), }; } // @ts-ignore TS6133 function CfnAnomalyDetectorMetricDataQueryPropertyFromCloudFormation(properties) { if (cdk.isResolvableObject(properties)) { return new cfn_parse.FromCloudFormationResult(properties); } properties = properties == null ? {} : properties; if (typeof properties !== 'object') { return new cfn_parse.FromCloudFormationResult(properties); } const ret = new cfn_parse.FromCloudFormationPropertyObject(); ret.addPropertyResult('accountId', 'AccountId', properties.AccountId != null ? cfn_parse.FromCloudFormation.getString(properties.AccountId) : undefined); ret.addPropertyResult('expression', 'Expression', properties.Expression != null ? cfn_parse.FromCloudFormation.getString(properties.Expression) : undefined); ret.addPropertyResult('id', 'Id', cfn_parse.FromCloudFormation.getString(properties.Id)); ret.addPropertyResult('label', 'Label', properties.Label != null ? cfn_parse.FromCloudFormation.getString(properties.Label) : undefined); ret.addPropertyResult('metricStat', 'MetricStat', properties.MetricStat != null ? CfnAnomalyDetectorMetricStatPropertyFromCloudFormation(properties.MetricStat) : undefined); ret.addPropertyResult('period', 'Period', properties.Period != null ? cfn_parse.FromCloudFormation.getNumber(properties.Period) : undefined); ret.addPropertyResult('returnData', 'ReturnData', properties.ReturnData != null ? cfn_parse.FromCloudFormation.getBoolean(properties.ReturnData) : undefined); ret.addUnrecognizedPropertiesAsExtra(properties); return ret; } /** * Determine whether the given properties match those of a `MetricMathAnomalyDetectorProperty` * * @param properties - the TypeScript properties of a `MetricMathAnomalyDetectorProperty` * * @returns the result of the validation. */ function CfnAnomalyDetector_MetricMathAnomalyDetectorPropertyValidator(properties) { if (!cdk.canInspect(properties)) { return cdk.VALIDATION_SUCCESS; } const errors = new cdk.ValidationResults(); if (typeof properties !== 'object') { errors.collect(new cdk.ValidationResult('Expected an object, but received: ' + JSON.stringify(properties))); } errors.collect(cdk.propertyValidator('metricDataQueries', cdk.listValidator(CfnAnomalyDetector_MetricDataQueryPropertyValidator))(properties.metricDataQueries)); return errors.wrap('supplied properties not correct for "MetricMathAnomalyDetectorProperty"'); } /** * Renders the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.MetricMathAnomalyDetector` resource * * @param properties - the TypeScript properties of a `MetricMathAnomalyDetectorProperty` * * @returns the AWS CloudFormation properties of an `AWS::CloudWatch::AnomalyDetector.MetricMathAnomalyDetector` resource. */ // @ts-ignore TS613