getDimensionValues method

Future<GetDimensionValuesResponse> getDimensionValues({
  1. required Dimension dimension,
  2. required DateInterval timePeriod,
  3. Context? context,
  4. String? nextPageToken,
  5. String? searchString,
})

Retrieves all available filter values for a specified filter over a period of time. You can search the dimension values for an arbitrary string.

May throw LimitExceededException. May throw BillExpirationException. May throw DataUnavailableException. May throw InvalidNextTokenException. May throw RequestChangedException.

Parameter dimension : The name of the dimension. Each Dimension is available for a different Context. For more information, see Context.

Parameter timePeriod : The start and end dates for retrieving the dimension values. 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 context : The context for the call to GetDimensionValues. This can be RESERVATIONS or COST_AND_USAGE. The default value is COST_AND_USAGE. If the context is set to RESERVATIONS, the resulting dimension values can be used in the GetReservationUtilization operation. If the context is set to COST_AND_USAGE, the resulting dimension values can be used in the GetCostAndUsage operation.

If you set the context to COST_AND_USAGE, you can use the following dimensions for searching:

  • AZ - The Availability Zone. An example is us-east-1a.
  • DATABASE_ENGINE - The Amazon Relational Database Service database. Examples are Aurora or MySQL.
  • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
  • LEGAL_ENTITY_NAME - The name of the organization that sells you AWS services, such as Amazon Web Services.
  • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account.
  • OPERATING_SYSTEM - The operating system. Examples are Windows or Linux.
  • OPERATION - The action performed. Examples include RunInstance and CreateBucket.
  • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.
  • PURCHASE_TYPE - The reservation type of the purchase to which this usage is related. Examples include On-Demand Instances and Standard Reserved Instances.
  • SERVICE - The AWS service such as Amazon DynamoDB.
  • USAGE_TYPE - The type of usage. An example is DataTransfer-In-Bytes. The response for the GetDimensionValues operation includes a unit attribute. Examples include GB and Hrs.
  • USAGE_TYPE_GROUP - The grouping of common usage types. An example is Amazon EC2: CloudWatch – Alarms. The response for this operation includes a unit attribute.
  • REGION - The AWS Region.
  • RECORD_TYPE - The different types of charges such as RI fees, usage costs, tax refunds, and credits.
  • RESOURCE_ID - The unique identifier of the resource. ResourceId is an opt-in feature only available for last 14 days for EC2-Compute Service.
If you set the context to RESERVATIONS, you can use the following dimensions for searching:
  • AZ - The Availability Zone. An example is us-east-1a.
  • CACHE_ENGINE - The Amazon ElastiCache operating system. Examples are Windows or Linux.
  • DEPLOYMENT_OPTION - The scope of Amazon Relational Database Service deployments. Valid values are SingleAZ and MultiAZ.
  • INSTANCE_TYPE - The type of Amazon EC2 instance. An example is m4.xlarge.
  • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account.
  • PLATFORM - The Amazon EC2 operating system. Examples are Windows or Linux.
  • REGION - The AWS Region.
  • SCOPE (Utilization only) - The scope of a Reserved Instance (RI). Values are regional or a single Availability Zone.
  • TAG (Coverage only) - The tags that are associated with a Reserved Instance (RI).
  • TENANCY - The tenancy of a resource. Examples are shared or dedicated.
If you set the context to SAVINGS_PLANS, you can use the following dimensions for searching:
  • SAVINGS_PLANS_TYPE - Type of Savings Plans (EC2 Instance or Compute)
  • PAYMENT_OPTION - Payment option for the given Savings Plans (for example, All Upfront)
  • REGION - The AWS Region.
  • INSTANCE_TYPE_FAMILY - The family of instances (For example, m5)
  • LINKED_ACCOUNT - The description in the attribute map that includes the full name of the member account. The value field contains the AWS ID of the member account.
  • SAVINGS_PLAN_ARN - The unique identifier for your Savings Plan

Parameter nextPageToken : The token to retrieve the next set of results. AWS provides the token when the response from a previous call has more results than the maximum page size.

Parameter searchString : The value that you want to search the filter values for.

Implementation

Future<GetDimensionValuesResponse> getDimensionValues({
  required Dimension dimension,
  required DateInterval timePeriod,
  Context? context,
  String? nextPageToken,
  String? searchString,
}) async {
  ArgumentError.checkNotNull(dimension, 'dimension');
  ArgumentError.checkNotNull(timePeriod, 'timePeriod');
  _s.validateStringLength(
    'nextPageToken',
    nextPageToken,
    0,
    8192,
  );
  _s.validateStringLength(
    'searchString',
    searchString,
    0,
    1024,
  );
  final headers = <String, String>{
    'Content-Type': 'application/x-amz-json-1.1',
    'X-Amz-Target': 'AWSInsightsIndexService.GetDimensionValues'
  };
  final jsonResponse = await _protocol.send(
    method: 'POST',
    requestUri: '/',
    exceptionFnMap: _exceptionFns,
    // TODO queryParams
    headers: headers,
    payload: {
      'Dimension': dimension.toValue(),
      'TimePeriod': timePeriod,
      if (context != null) 'Context': context.toValue(),
      if (nextPageToken != null) 'NextPageToken': nextPageToken,
      if (searchString != null) 'SearchString': searchString,
    },
  );

  return GetDimensionValuesResponse.fromJson(jsonResponse.body);
}