/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include namespace Aws { namespace Utils { namespace Xml { class XmlNode; } // namespace Xml } // namespace Utils namespace CloudWatch { namespace Model { /** *

This structure is used in both GetMetricData and * PutMetricAlarm. The supported use of this structure is different * for those two operations.

When used in GetMetricData, it * indicates the metric data to return, and whether this call is just retrieving a * batch set of data for one metric, or is performing a Metrics Insights query or a * math expression. A single GetMetricData call can include up to 500 * MetricDataQuery structures.

When used in * PutMetricAlarm, it enables you to create an alarm based on a metric * math expression. Each MetricDataQuery in the array specifies either * a metric to retrieve, or a math expression to be performed on retrieved metrics. * A single PutMetricAlarm call can include up to 20 * MetricDataQuery structures in the array. The 20 structures can * include as many as 10 structures that contain a MetricStat * parameter to retrieve a metric, and as many as 10 structures that contain the * Expression parameter to perform a math expression. Of those * Expression structures, one must have true as the value * for ReturnData. The result of this expression is the value the * alarm watches.

Any expression used in a PutMetricAlarm * operation must return a single time series. For more information, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Some of the parameters of this structure also have different uses whether you * are using this structure in a GetMetricData operation or a * PutMetricAlarm operation. These differences are explained in the * following parameter list.

See Also:

AWS * API Reference

*/ class MetricDataQuery { public: AWS_CLOUDWATCH_API MetricDataQuery(); AWS_CLOUDWATCH_API MetricDataQuery(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_CLOUDWATCH_API MetricDataQuery& operator=(const Aws::Utils::Xml::XmlNode& xmlNode); AWS_CLOUDWATCH_API void OutputToStream(Aws::OStream& ostream, const char* location, unsigned index, const char* locationValue) const; AWS_CLOUDWATCH_API void OutputToStream(Aws::OStream& oStream, const char* location) const; /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline const Aws::String& GetId() const{ return m_id; } /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline bool IdHasBeenSet() const { return m_idHasBeenSet; } /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline void SetId(const Aws::String& value) { m_idHasBeenSet = true; m_id = value; } /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline void SetId(Aws::String&& value) { m_idHasBeenSet = true; m_id = std::move(value); } /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline void SetId(const char* value) { m_idHasBeenSet = true; m_id.assign(value); } /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline MetricDataQuery& WithId(const Aws::String& value) { SetId(value); return *this;} /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline MetricDataQuery& WithId(Aws::String&& value) { SetId(std::move(value)); return *this;} /** *

A short name used to tie this object to the results in the response. This * name must be unique within a single call to GetMetricData. If you * are performing math expressions on this set of data, this name represents that * data and can serve as a variable in the mathematical expression. The valid * characters are letters, numbers, and underscore. The first character must be a * lowercase letter.

*/ inline MetricDataQuery& WithId(const char* value) { SetId(value); return *this;} /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline const MetricStat& GetMetricStat() const{ return m_metricStat; } /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline bool MetricStatHasBeenSet() const { return m_metricStatHasBeenSet; } /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline void SetMetricStat(const MetricStat& value) { m_metricStatHasBeenSet = true; m_metricStat = value; } /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline void SetMetricStat(MetricStat&& value) { m_metricStatHasBeenSet = true; m_metricStat = std::move(value); } /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline MetricDataQuery& WithMetricStat(const MetricStat& value) { SetMetricStat(value); return *this;} /** *

The metric to be returned, along with statistics, period, and units. Use this * parameter only if this object is retrieving a metric and not performing a math * expression on returned data.

Within one MetricDataQuery object, you must * specify either Expression or MetricStat but not * both.

*/ inline MetricDataQuery& WithMetricStat(MetricStat&& value) { SetMetricStat(std::move(value)); return *this;} /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline const Aws::String& GetExpression() const{ return m_expression; } /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline bool ExpressionHasBeenSet() const { return m_expressionHasBeenSet; } /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline void SetExpression(const Aws::String& value) { m_expressionHasBeenSet = true; m_expression = value; } /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline void SetExpression(Aws::String&& value) { m_expressionHasBeenSet = true; m_expression = std::move(value); } /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline void SetExpression(const char* value) { m_expressionHasBeenSet = true; m_expression.assign(value); } /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline MetricDataQuery& WithExpression(const Aws::String& value) { SetExpression(value); return *this;} /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline MetricDataQuery& WithExpression(Aws::String&& value) { SetExpression(std::move(value)); return *this;} /** *

This field can contain either a Metrics Insights query, or a metric math * expression to be performed on the returned data. For more information about * Metrics Insights queries, see Metrics * Insights query components and syntax in the Amazon CloudWatch User * Guide.

A math expression can use the Id of the other * metrics or queries to refer to those metrics, and can also use the * Id of other expressions to use the result of those expressions. For * more information about metric math expressions, see Metric * Math Syntax and Functions in the Amazon CloudWatch User Guide.

*

Within each MetricDataQuery object, you must specify either * Expression or MetricStat but not both.

*/ inline MetricDataQuery& WithExpression(const char* value) { SetExpression(value); return *this;} /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline const Aws::String& GetLabel() const{ return m_label; } /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline bool LabelHasBeenSet() const { return m_labelHasBeenSet; } /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline void SetLabel(const Aws::String& value) { m_labelHasBeenSet = true; m_label = value; } /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline void SetLabel(Aws::String&& value) { m_labelHasBeenSet = true; m_label = std::move(value); } /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline void SetLabel(const char* value) { m_labelHasBeenSet = true; m_label.assign(value); } /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline MetricDataQuery& WithLabel(const Aws::String& value) { SetLabel(value); return *this;} /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline MetricDataQuery& WithLabel(Aws::String&& value) { SetLabel(std::move(value)); return *this;} /** *

A human-readable label for this metric or expression. This is especially * useful if this is an expression, so that you know what the value represents. If * the metric or expression is shown in a CloudWatch dashboard widget, the label is * shown. If Label is omitted, CloudWatch generates a default.

You can put * dynamic expressions into a label, so that it is more descriptive. For more * information, see Using * Dynamic Labels.

*/ inline MetricDataQuery& WithLabel(const char* value) { SetLabel(value); return *this;} /** *

When used in GetMetricData, this option indicates whether to * return the timestamps and raw data values of this metric. If you are performing * this call just to do math expressions and do not also need the raw data * returned, you can specify false. If you omit this, the default of * true is used.

When used in PutMetricAlarm, * specify true for the one expression result to use as the alarm. For * all other metrics and expressions in the same PutMetricAlarm * operation, specify ReturnData as False.

*/ inline bool GetReturnData() const{ return m_returnData; } /** *

When used in GetMetricData, this option indicates whether to * return the timestamps and raw data values of this metric. If you are performing * this call just to do math expressions and do not also need the raw data * returned, you can specify false. If you omit this, the default of * true is used.

When used in PutMetricAlarm, * specify true for the one expression result to use as the alarm. For * all other metrics and expressions in the same PutMetricAlarm * operation, specify ReturnData as False.

*/ inline bool ReturnDataHasBeenSet() const { return m_returnDataHasBeenSet; } /** *

When used in GetMetricData, this option indicates whether to * return the timestamps and raw data values of this metric. If you are performing * this call just to do math expressions and do not also need the raw data * returned, you can specify false. If you omit this, the default of * true is used.

When used in PutMetricAlarm, * specify true for the one expression result to use as the alarm. For * all other metrics and expressions in the same PutMetricAlarm * operation, specify ReturnData as False.

*/ inline void SetReturnData(bool value) { m_returnDataHasBeenSet = true; m_returnData = value; } /** *

When used in GetMetricData, this option indicates whether to * return the timestamps and raw data values of this metric. If you are performing * this call just to do math expressions and do not also need the raw data * returned, you can specify false. If you omit this, the default of * true is used.

When used in PutMetricAlarm, * specify true for the one expression result to use as the alarm. For * all other metrics and expressions in the same PutMetricAlarm * operation, specify ReturnData as False.

*/ inline MetricDataQuery& WithReturnData(bool value) { SetReturnData(value); return *this;} /** *

The granularity, in seconds, of the returned data points. For metrics with * regular resolution, a period can be as short as one minute (60 seconds) and must * be a multiple of 60. For high-resolution metrics that are collected at intervals * of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of * 60. High-resolution metrics are those metrics stored by a * PutMetricData operation that includes a StorageResolution of * 1 second.

*/ inline int GetPeriod() const{ return m_period; } /** *

The granularity, in seconds, of the returned data points. For metrics with * regular resolution, a period can be as short as one minute (60 seconds) and must * be a multiple of 60. For high-resolution metrics that are collected at intervals * of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of * 60. High-resolution metrics are those metrics stored by a * PutMetricData operation that includes a StorageResolution of * 1 second.

*/ inline bool PeriodHasBeenSet() const { return m_periodHasBeenSet; } /** *

The granularity, in seconds, of the returned data points. For metrics with * regular resolution, a period can be as short as one minute (60 seconds) and must * be a multiple of 60. For high-resolution metrics that are collected at intervals * of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of * 60. High-resolution metrics are those metrics stored by a * PutMetricData operation that includes a StorageResolution of * 1 second.

*/ inline void SetPeriod(int value) { m_periodHasBeenSet = true; m_period = value; } /** *

The granularity, in seconds, of the returned data points. For metrics with * regular resolution, a period can be as short as one minute (60 seconds) and must * be a multiple of 60. For high-resolution metrics that are collected at intervals * of less than one minute, the period can be 1, 5, 10, 30, 60, or any multiple of * 60. High-resolution metrics are those metrics stored by a * PutMetricData operation that includes a StorageResolution of * 1 second.

*/ inline MetricDataQuery& WithPeriod(int value) { SetPeriod(value); return *this;} /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline const Aws::String& GetAccountId() const{ return m_accountId; } /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline bool AccountIdHasBeenSet() const { return m_accountIdHasBeenSet; } /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline void SetAccountId(const Aws::String& value) { m_accountIdHasBeenSet = true; m_accountId = value; } /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline void SetAccountId(Aws::String&& value) { m_accountIdHasBeenSet = true; m_accountId = std::move(value); } /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline void SetAccountId(const char* value) { m_accountIdHasBeenSet = true; m_accountId.assign(value); } /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline MetricDataQuery& WithAccountId(const Aws::String& value) { SetAccountId(value); return *this;} /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline MetricDataQuery& WithAccountId(Aws::String&& value) { SetAccountId(std::move(value)); return *this;} /** *

The ID of the account where the metrics are located.

If you are * performing a GetMetricData operation in a monitoring account, use * this to specify which account to retrieve this metric from.

If you are * performing a PutMetricAlarm operation, use this to specify which * account contains the metric that the alarm is watching.

*/ inline MetricDataQuery& WithAccountId(const char* value) { SetAccountId(value); return *this;} private: Aws::String m_id; bool m_idHasBeenSet = false; MetricStat m_metricStat; bool m_metricStatHasBeenSet = false; Aws::String m_expression; bool m_expressionHasBeenSet = false; Aws::String m_label; bool m_labelHasBeenSet = false; bool m_returnData; bool m_returnDataHasBeenSet = false; int m_period; bool m_periodHasBeenSet = false; Aws::String m_accountId; bool m_accountIdHasBeenSet = false; }; } // namespace Model } // namespace CloudWatch } // namespace Aws