getReservationCoverage method
Retrieves the reservation coverage for your account, which you can use to see how much of your Amazon Elastic Compute Cloud, Amazon ElastiCache, Amazon Relational Database Service, or Amazon Redshift usage is covered by a reservation. An organization's management account can see the coverage of the associated member accounts. This supports dimensions, cost categories, and nested expressions. For any time period, you can filter data about reservation usage by the following dimensions:
- AZ
- CACHE_ENGINE
- DATABASE_ENGINE
- DEPLOYMENT_OPTION
- INSTANCE_TYPE
- LINKED_ACCOUNT
- OPERATING_SYSTEM
- PLATFORM
- REGION
- SERVICE
- TAG
- TENANCY
GetDimensionValues operation.
May throw DataUnavailableException.
May throw InvalidNextTokenException.
May throw LimitExceededException.
Parameter timePeriod :
The start and end dates of the period that you want to retrieve data about
reservation coverage for. You can retrieve data for a maximum of 13
months: the last 12 months and the current month. The start date is
inclusive, but the end date is exclusive. For example, if
start is 2017-01-01 and end is
2017-05-01, then the cost and usage data is retrieved from
2017-01-01 up to and including 2017-04-30 but
not including 2017-05-01.
Parameter filter :
Filters utilization data by dimensions. You can filter by the following
dimensions:
- AZ
- CACHE_ENGINE
- DATABASE_ENGINE
- DEPLOYMENT_OPTION
- INSTANCE_TYPE
- LINKED_ACCOUNT
- OPERATING_SYSTEM
- PLATFORM
- REGION
- SERVICE
- TAG
- TENANCY
GetReservationCoverage uses the same Expression
object as the other operations, but only AND is supported
among each dimension. You can nest only one level deep. If there are
multiple values for a dimension, they are OR'd together.
If you don't provide a SERVICE filter, Cost Explorer defaults
to EC2.
Cost category is also supported.
Parameter granularity :
The granularity of the Amazon Web Services cost data for the reservation.
Valid values are MONTHLY and DAILY.
If GroupBy is set, Granularity can't be set. If
Granularity isn't set, the response object doesn't include
Granularity, either MONTHLY or
DAILY.
The GetReservationCoverage operation supports only
DAILY and MONTHLY granularities.
Parameter groupBy :
You can group the data by the following attributes:
- AZ
- CACHE_ENGINE
- DATABASE_ENGINE
- DEPLOYMENT_OPTION
- INSTANCE_TYPE
- INVOICING_ENTITY
- LINKED_ACCOUNT
- OPERATING_SYSTEM
- PLATFORM
- REGION
- TENANCY
Parameter maxResults :
The maximum number of objects that you returned for this request. If more
objects are available, in the response, Amazon Web Services provides a
NextPageToken value that you can use in a subsequent call to get the next
batch of objects.
Parameter metrics :
The measurement that you want your reservation coverage reported in.
Valid values are Hour, Unit, and
Cost. You can use multiple values in a request.
Parameter nextPageToken :
The token to retrieve the next set of results. Amazon Web Services
provides the token when the response from a previous call has more results
than the maximum page size.
Parameter sortBy :
The value by which you want to sort the data.
The following values are supported for Key:
-
OnDemandCost -
CoverageHoursPercentage -
OnDemandHours -
ReservedHours -
TotalRunningHours -
CoverageNormalizedUnitsPercentage -
OnDemandNormalizedUnits -
ReservedNormalizedUnits -
TotalRunningNormalizedUnits -
Time
SortOrder are ASCENDING or
DESCENDING.
Implementation
Future<GetReservationCoverageResponse> getReservationCoverage({
required DateInterval timePeriod,
Expression? filter,
Granularity? granularity,
List<GroupDefinition>? groupBy,
int? maxResults,
List<String>? metrics,
String? nextPageToken,
SortDefinition? sortBy,
}) async {
_s.validateNumRange(
'maxResults',
maxResults,
1,
1152921504606846976,
);
final headers = <String, String>{
'Content-Type': 'application/x-amz-json-1.1',
'X-Amz-Target': 'AWSInsightsIndexService.GetReservationCoverage'
};
final jsonResponse = await _protocol.send(
method: 'POST',
requestUri: '/',
exceptionFnMap: _exceptionFns,
// TODO queryParams
headers: headers,
payload: {
'TimePeriod': timePeriod,
if (filter != null) 'Filter': filter,
if (granularity != null) 'Granularity': granularity.value,
if (groupBy != null) 'GroupBy': groupBy,
if (maxResults != null) 'MaxResults': maxResults,
if (metrics != null) 'Metrics': metrics,
if (nextPageToken != null) 'NextPageToken': nextPageToken,
if (sortBy != null) 'SortBy': sortBy,
},
);
return GetReservationCoverageResponse.fromJson(jsonResponse.body);
}