getResourceMetrics method

Future<GetResourceMetricsResponse> getResourceMetrics({
  1. required DateTime endTime,
  2. required String identifier,
  3. required List<MetricQuery> metricQueries,
  4. required ServiceType serviceType,
  5. required DateTime startTime,
  6. int? maxResults,
  7. String? nextToken,
  8. int? periodInSeconds,
})

Retrieve Performance Insights metrics for a set of data sources, over a time period. You can provide specific dimension groups and dimensions, and provide aggregation and filtering criteria for each group.

May throw InvalidArgumentException. May throw InternalServiceError. May throw NotAuthorizedException.

Parameter endTime : The date and time specifying the end of the requested time series data. The value specified is exclusive - data points less than (but not equal to) EndTime will be returned.

The value for EndTime must be later than the value for StartTime.

Parameter identifier : An immutable, AWS Region-unique identifier for a data source. Performance Insights gathers metrics from this data source.

To use a DB instance as a data source, specify its DbiResourceId value. For example, specify db-FAIHNTYBKTGAUSUZQYPDS2GW4A.

Parameter metricQueries : An array of one or more queries to perform. Each query must specify a Performance Insights metric, and can optionally specify aggregation and filtering criteria.

Parameter serviceType : The AWS service for which Performance Insights returns metrics. The only valid value for ServiceType is RDS.

Parameter startTime : The date and time specifying the beginning of the requested time series data. You can't specify a StartTime that's earlier than 7 days ago. The value specified is inclusive - data points equal to or greater than StartTime will be returned.

The value for StartTime must be earlier than the value for EndTime.

Parameter maxResults : The maximum number of items to return in the response. If more items exist than the specified MaxRecords value, a pagination token is included in the response so that the remaining results can be retrieved.

Parameter nextToken : An optional pagination token provided by a previous request. If this parameter is specified, the response includes only records beyond the token, up to the value specified by MaxRecords.

Parameter periodInSeconds : The granularity, in seconds, of the data points returned from Performance Insights. A period can be as short as one second, or as long as one day (86400 seconds). Valid values are:

  • 1 (one second)
  • 60 (one minute)
  • 300 (five minutes)
  • 3600 (one hour)
  • 86400 (twenty-four hours)
If you don't specify PeriodInSeconds, then Performance Insights will choose a value for you, with a goal of returning roughly 100-200 data points in the response.

Implementation

Future<GetResourceMetricsResponse> getResourceMetrics({
  required DateTime endTime,
  required String identifier,
  required List<MetricQuery> metricQueries,
  required ServiceType serviceType,
  required DateTime startTime,
  int? maxResults,
  String? nextToken,
  int? periodInSeconds,
}) async {
  ArgumentError.checkNotNull(endTime, 'endTime');
  ArgumentError.checkNotNull(identifier, 'identifier');
  ArgumentError.checkNotNull(metricQueries, 'metricQueries');
  ArgumentError.checkNotNull(serviceType, 'serviceType');
  ArgumentError.checkNotNull(startTime, 'startTime');
  _s.validateNumRange(
    'maxResults',
    maxResults,
    0,
    20,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'PerformanceInsightsv20180227.GetResourceMetrics'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'EndTime': unixTimestampToJson(endTime),
      'Identifier': identifier,
      'MetricQueries': metricQueries,
      'ServiceType': serviceType.toValue(),
      'StartTime': unixTimestampToJson(startTime),
      if (maxResults != null) 'MaxResults': maxResults,
      if (nextToken != null) 'NextToken': nextToken,
      if (periodInSeconds != null) 'PeriodInSeconds': periodInSeconds,
    },
  );

  return GetResourceMetricsResponse.fromJson(jsonResponse.body);
}