/*
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License").
* You may not use this file except in compliance with the License.
* A copy of the License is located at
*
* http://aws.amazon.com/apache2.0
*
* or in the "license" file accompanying this file. This file is distributed
* on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
* express or implied. See the License for the specific language governing
* permissions and limitations under the License.
*/
/*
* Do not modify this file. This file is generated from the monitoring-2010-08-01.normal.json service model.
*/
using System;
using System.Collections.Generic;
using System.Xml.Serialization;
using System.Text;
using System.IO;
using System.Net;
using Amazon.Runtime;
using Amazon.Runtime.Internal;
namespace Amazon.CloudWatch.Model
{
///
/// Container for the parameters to the GetMetricData operation.
/// You can use the GetMetricData
API to retrieve CloudWatch metric values.
/// The operation can also include a CloudWatch Metrics Insights query, and one or more
/// metric math functions.
///
///
///
/// A GetMetricData
operation that does not include a query can retrieve
/// as many as 500 different metrics in a single request, with a total of as many as 100,800
/// data points. You can also optionally perform metric math expressions on the values
/// of the returned statistics, to create new time series that represent new insights
/// into your data. For example, using Lambda metrics, you could divide the Errors metric
/// by the Invocations metric to get an error rate time series. For more information about
/// metric math expressions, see Metric
/// Math Syntax and Functions in the Amazon CloudWatch User Guide.
///
///
///
/// If you include a Metrics Insights query, each GetMetricData
operation
/// can include only one query. But the same GetMetricData
operation can
/// also retrieve other metrics. Metrics Insights queries can query only the most recent
/// three hours of metric data. For more information about Metrics Insights, see Query
/// your metrics with CloudWatch Metrics Insights.
///
///
///
/// Calls to the GetMetricData
API have a different pricing structure than
/// calls to GetMetricStatistics
. For more information about pricing, see
/// Amazon CloudWatch Pricing.
///
///
///
/// Amazon CloudWatch retains metric data as follows:
///
/// -
///
/// Data points with a period of less than 60 seconds are available for 3 hours. These
/// data points are high-resolution metrics and are available only for custom metrics
/// that have been defined with a
StorageResolution
of 1.
///
/// -
///
/// Data points with a period of 60 seconds (1-minute) are available for 15 days.
///
///
-
///
/// Data points with a period of 300 seconds (5-minute) are available for 63 days.
///
///
-
///
/// Data points with a period of 3600 seconds (1 hour) are available for 455 days (15
/// months).
///
///
///
/// Data points that are initially published with a shorter period are aggregated together
/// for long-term storage. For example, if you collect data using a period of 1 minute,
/// the data remains available for 15 days with 1-minute resolution. After 15 days, this
/// data is still available, but is aggregated and retrievable only with a resolution
/// of 5 minutes. After 63 days, the data is further aggregated and is available with
/// a resolution of 1 hour.
///
///
///
/// If you omit Unit
in your request, all data that was collected with any
/// unit is returned, along with the corresponding units that were specified when the
/// data was reported to CloudWatch. If you specify a unit, the operation returns only
/// data that was collected with that unit specified. If you specify a unit that does
/// not match the data collected, the results of the operation are null. CloudWatch does
/// not perform unit conversions.
///
///
///
/// Using Metrics Insights queries with metric math
///
///
///
/// You can't mix a Metric Insights query and metric math syntax in the same expression,
/// but you can reference results from a Metrics Insights query within other Metric math
/// expressions. A Metrics Insights query without a GROUP BY clause returns a single
/// time-series (TS), and can be used as input for a metric math expression that expects
/// a single time series. A Metrics Insights query with a GROUP BY clause returns
/// an array of time-series (TS[]), and can be used as input for a metric math expression
/// that expects an array of time series.
///
///
public partial class GetMetricDataRequest : AmazonCloudWatchRequest
{
private DateTime? _endTimeUtc;
private LabelOptions _labelOptions;
private int? _maxDatapoints;
private List _metricDataQueries = new List();
private string _nextToken;
private ScanBy _scanBy;
private DateTime? _startTimeUtc;
///
/// Gets and sets the property EndTimeUtc.
///
/// The time stamp indicating the latest data to be returned.
///
///
///
/// The value specified is exclusive; results include data points up to the specified
/// time stamp.
///
///
///
/// For better performance, specify StartTime
and EndTime
values
/// that align with the value of the metric's Period
and sync up with the
/// beginning and end of an hour. For example, if the Period
of a metric
/// is 5 minutes, specifying 12:05 or 12:30 as EndTime
can get a faster response
/// from CloudWatch than setting 12:07 or 12:29 as the EndTime
.
///
///
[AWSProperty(Required=true)]
public DateTime EndTimeUtc
{
get { return this._endTimeUtc.GetValueOrDefault(); }
set { this._endTime = this._endTimeUtc = value; }
}
// Check to see if EndTimeUtc property is set
internal bool IsSetEndTimeUtc()
{
return this._endTimeUtc.HasValue;
}
///
/// Gets and sets the property LabelOptions.
///
/// This structure includes the Timezone
parameter, which you can use to
/// specify your time zone so that the labels of returned data display the correct time
/// for your time zone.
///
///
public LabelOptions LabelOptions
{
get { return this._labelOptions; }
set { this._labelOptions = value; }
}
// Check to see if LabelOptions property is set
internal bool IsSetLabelOptions()
{
return this._labelOptions != null;
}
///
/// Gets and sets the property MaxDatapoints.
///
/// The maximum number of data points the request should return before paginating. If
/// you omit this, the default of 100,800 is used.
///
///
public int MaxDatapoints
{
get { return this._maxDatapoints.GetValueOrDefault(); }
set { this._maxDatapoints = value; }
}
// Check to see if MaxDatapoints property is set
internal bool IsSetMaxDatapoints()
{
return this._maxDatapoints.HasValue;
}
///
/// Gets and sets the property MetricDataQueries.
///
/// The metric queries to be returned. A single GetMetricData
call can include
/// as many as 500 MetricDataQuery
structures. Each of these structures can
/// specify either a metric to retrieve, a Metrics Insights query, or a math expression
/// to perform on retrieved data.
///
///
[AWSProperty(Required=true)]
public List MetricDataQueries
{
get { return this._metricDataQueries; }
set { this._metricDataQueries = value; }
}
// Check to see if MetricDataQueries property is set
internal bool IsSetMetricDataQueries()
{
return this._metricDataQueries != null && this._metricDataQueries.Count > 0;
}
///
/// Gets and sets the property NextToken.
///
/// Include this value, if it was returned by the previous GetMetricData
/// operation, to get the next set of data points.
///
///
public string NextToken
{
get { return this._nextToken; }
set { this._nextToken = value; }
}
// Check to see if NextToken property is set
internal bool IsSetNextToken()
{
return this._nextToken != null;
}
///
/// Gets and sets the property ScanBy.
///
/// The order in which data points should be returned. TimestampDescending
/// returns the newest data first and paginates when the MaxDatapoints
limit
/// is reached. TimestampAscending
returns the oldest data first and paginates
/// when the MaxDatapoints
limit is reached.
///
///
public ScanBy ScanBy
{
get { return this._scanBy; }
set { this._scanBy = value; }
}
// Check to see if ScanBy property is set
internal bool IsSetScanBy()
{
return this._scanBy != null;
}
///
/// Gets and sets the property StartTimeUtc.
///
/// The time stamp indicating the earliest data to be returned.
///
///
///
/// The value specified is inclusive; results include data points with the specified time
/// stamp.
///
///
///
/// CloudWatch rounds the specified time stamp as follows:
///
/// -
///
/// Start time less than 15 days ago - Round down to the nearest whole minute. For example,
/// 12:32:34 is rounded down to 12:32:00.
///
///
-
///
/// Start time between 15 and 63 days ago - Round down to the nearest 5-minute clock interval.
/// For example, 12:32:34 is rounded down to 12:30:00.
///
///
-
///
/// Start time greater than 63 days ago - Round down to the nearest 1-hour clock interval.
/// For example, 12:32:34 is rounded down to 12:00:00.
///
///
///
/// If you set Period
to 5, 10, or 30, the start time of your request is
/// rounded down to the nearest time that corresponds to even 5-, 10-, or 30-second divisions
/// of a minute. For example, if you make a query at (HH:mm:ss) 01:05:23 for the previous
/// 10-second period, the start time of your request is rounded down and you receive data
/// from 01:05:10 to 01:05:20. If you make a query at 15:07:17 for the previous 5 minutes
/// of data, using a period of 5 seconds, you receive data timestamped between 15:02:15
/// and 15:07:15.
///
///
///
/// For better performance, specify StartTime
and EndTime
values
/// that align with the value of the metric's Period
and sync up with the
/// beginning and end of an hour. For example, if the Period
of a metric
/// is 5 minutes, specifying 12:05 or 12:30 as StartTime
can get a faster
/// response from CloudWatch than setting 12:07 or 12:29 as the StartTime
.
///
///
[AWSProperty(Required=true)]
public DateTime StartTimeUtc
{
get { return this._startTimeUtc.GetValueOrDefault(); }
set { this._startTime = this._startTimeUtc = value; }
}
// Check to see if StartTimeUtc property is set
internal bool IsSetStartTimeUtc()
{
return this._startTimeUtc.HasValue;
}
#region Backwards compatible properties
private DateTime? _endTime;
private DateTime? _startTime;
///
/// Gets and sets the property EndTimeUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use EndTimeUtc instead. Setting either EndTime or EndTimeUtc
/// results in both EndTime and EndTimeUtc being assigned, the latest assignment to either
/// one of the two property is reflected in the value of both. EndTime is provided for
/// backwards compatibility only and assigning a non-Utc DateTime to it results in the
/// wrong timestamp being passed to the service.
///
///
///
/// The time stamp indicating the latest data to be returned.
///
///
///
/// The value specified is exclusive; results include data points up to the specified
/// time stamp.
///
///
///
/// For better performance, specify StartTime
and EndTime
values
/// that align with the value of the metric's Period
and sync up with the
/// beginning and end of an hour. For example, if the Period
of a metric
/// is 5 minutes, specifying 12:05 or 12:30 as EndTime
can get a faster response
/// from CloudWatch than setting 12:07 or 12:29 as the EndTime
.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use EndTimeUtc instead. Setting either EndTime or EndTimeUtc results in both EndTime and " +
"EndTimeUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. EndTime is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime EndTime
{
get { return this._endTime.GetValueOrDefault(); }
set
{
this._endTime = value;
this._endTimeUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
///
/// Gets and sets the property StartTimeUtc.
///
/// This property is deprecated. Setting this property results in non-UTC DateTimes not
/// being marshalled correctly. Use StartTimeUtc instead. Setting either StartTime or
/// StartTimeUtc results in both StartTime and StartTimeUtc being assigned, the latest
/// assignment to either one of the two property is reflected in the value of both. StartTime
/// is provided for backwards compatibility only and assigning a non-Utc DateTime to it
/// results in the wrong timestamp being passed to the service.
///
///
///
/// The time stamp indicating the earliest data to be returned.
///
///
///
/// The value specified is inclusive; results include data points with the specified time
/// stamp.
///
///
///
/// CloudWatch rounds the specified time stamp as follows:
///
/// -
///
/// Start time less than 15 days ago - Round down to the nearest whole minute. For example,
/// 12:32:34 is rounded down to 12:32:00.
///
///
-
///
/// Start time between 15 and 63 days ago - Round down to the nearest 5-minute clock interval.
/// For example, 12:32:34 is rounded down to 12:30:00.
///
///
-
///
/// Start time greater than 63 days ago - Round down to the nearest 1-hour clock interval.
/// For example, 12:32:34 is rounded down to 12:00:00.
///
///
///
/// If you set Period
to 5, 10, or 30, the start time of your request is
/// rounded down to the nearest time that corresponds to even 5-, 10-, or 30-second divisions
/// of a minute. For example, if you make a query at (HH:mm:ss) 01:05:23 for the previous
/// 10-second period, the start time of your request is rounded down and you receive data
/// from 01:05:10 to 01:05:20. If you make a query at 15:07:17 for the previous 5 minutes
/// of data, using a period of 5 seconds, you receive data timestamped between 15:02:15
/// and 15:07:15.
///
///
///
/// For better performance, specify StartTime
and EndTime
values
/// that align with the value of the metric's Period
and sync up with the
/// beginning and end of an hour. For example, if the Period
of a metric
/// is 5 minutes, specifying 12:05 or 12:30 as StartTime
can get a faster
/// response from CloudWatch than setting 12:07 or 12:29 as the StartTime
.
///
///
[Obsolete("Setting this property results in non-UTC DateTimes not being marshalled correctly. " +
"Use StartTimeUtc instead. Setting either StartTime or StartTimeUtc results in both StartTime and " +
"StartTimeUtc being assigned, the latest assignment to either one of the two property is " +
"reflected in the value of both. StartTime is provided for backwards compatibility only and " +
"assigning a non-Utc DateTime to it results in the wrong timestamp being passed to the service.", false)]
public DateTime StartTime
{
get { return this._startTime.GetValueOrDefault(); }
set
{
this._startTime = value;
this._startTimeUtc = new DateTime(value.Ticks, DateTimeKind.Utc);
}
}
#endregion
}
}