class Aws::CostExplorer::Types::GetRightsizingRecommendationRequest

@note When making an API call, you may pass GetRightsizingRecommendationRequest

data as a hash:

    {
      filter: {
        or: [
          {
            # recursive Expression
          },
        ],
        and: [
          {
            # recursive Expression
          },
        ],
        not: {
          # recursive Expression
        },
        dimensions: {
          key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, LINKED_ACCOUNT_NAME, OPERATION, PURCHASE_TYPE, REGION, SERVICE, SERVICE_CODE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RESOURCE_ID, RIGHTSIZING_TYPE, SAVINGS_PLANS_TYPE, SAVINGS_PLAN_ARN, PAYMENT_OPTION, AGREEMENT_END_DATE_TIME_AFTER, AGREEMENT_END_DATE_TIME_BEFORE
          values: ["Value"],
          match_options: ["EQUALS"], # accepts EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE
        },
        tags: {
          key: "TagKey",
          values: ["Value"],
          match_options: ["EQUALS"], # accepts EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE
        },
        cost_categories: {
          key: "CostCategoryName",
          values: ["Value"],
          match_options: ["EQUALS"], # accepts EQUALS, ABSENT, STARTS_WITH, ENDS_WITH, CONTAINS, CASE_SENSITIVE, CASE_INSENSITIVE
        },
      },
      configuration: {
        recommendation_target: "SAME_INSTANCE_FAMILY", # required, accepts SAME_INSTANCE_FAMILY, CROSS_INSTANCE_FAMILY
        benefits_considered: false, # required
      },
      service: "GenericString", # required
      page_size: 1,
      next_page_token: "NextPageToken",
    }

@!attribute [rw] filter

Use `Expression` to filter by cost or by usage. There are two
patterns:

* Simple dimension values - You can set the dimension name and
  values for the filters that you plan to use. For example, you can
  filter for `REGION==us-east-1 OR REGION==us-west-1`. For
  `GetRightsizingRecommendation`, the Region is a full name (for
  example, `REGION==US East (N. Virginia)`. The `Expression` example
  is as follows:

  `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
  “us-west-1” ] \} \}`

  The list of dimension values are OR'd together to retrieve cost
  or usage data. You can create `Expression` and `DimensionValues`
  objects using either `with*` methods or `set*` methods in multiple
  lines.

* Compound dimension values with logical operations - You can use
  multiple `Expression` types and the logical operators `AND/OR/NOT`
  to create a list of one or more `Expression` objects. By doing
  this, you can filter on more advanced options. For example, you
  can filter on `((REGION == us-east-1 OR REGION == us-west-1) OR
  (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer)`. The
  `Expression` for that is as follows:

  `\{ "And": [ \{"Or": [ \{"Dimensions": \{ "Key": "REGION",
  "Values": [ "us-east-1", "us-west-1" ] \}\}, \{"Tags": \{ "Key":
  "TagName", "Values": ["Value1"] \} \} ]\}, \{"Not":
  \{"Dimensions": \{ "Key": "USAGE_TYPE", "Values": ["DataTransfer"]
  \}\}\} ] \} `

  <note markdown="1"> Because each `Expression` can have only one operator, the service
  returns an error if more than one is specified. The following
  example shows an `Expression` object that creates an error.

   </note>

  ` \{ "And": [ ... ], "DimensionValues": \{ "Dimension":
  "USAGE_TYPE", "Values": [ "DataTransfer" ] \} \} `

<note markdown="1"> For the `GetRightsizingRecommendation` action, a combination of OR
and NOT isn't supported. OR isn't supported between different
dimensions, or dimensions and tags. NOT operators aren't supported.
Dimensions are also limited to `LINKED_ACCOUNT`, `REGION`, or
`RIGHTSIZING_TYPE`.

 For the `GetReservationPurchaseRecommendation` action, only NOT is
supported. AND and OR aren't supported. Dimensions are limited to
`LINKED_ACCOUNT`.

 </note>
@return [Types::Expression]

@!attribute [rw] configuration

Enables you to customize recommendations across two attributes. You
can choose to view recommendations for instances within the same
instance families or across different instance families. You can
also choose to view your estimated savings associated with
recommendations with consideration of existing Savings Plans or RI
benefits, or neither.
@return [Types::RightsizingRecommendationConfiguration]

@!attribute [rw] service

The specific service that you want recommendations for. The only
valid value for `GetRightsizingRecommendation` is "`AmazonEC2`".
@return [String]

@!attribute [rw] page_size

The number of recommendations that you want returned in a single
response object.
@return [Integer]

@!attribute [rw] next_page_token

The pagination token that indicates the next set of results that you
want to retrieve.
@return [String]

@see docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendationRequest AWS API Documentation

Constants

SENSITIVE