aws-sdk-costexplorer 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4dbabc76e800c52c051795be31b2cef1306b5b24
4
- data.tar.gz: b7baa6c43895ea437fff06172181ecfea24d4653
3
+ metadata.gz: 87fd4ca3923fa05af050f055cd46350ecaee4e56
4
+ data.tar.gz: 922c2e493f0550c59285e6f6a19317bcc1d36942
5
5
  SHA512:
6
- metadata.gz: 0c95854f198f07aa297e95bf3f4da9f6242b30f4240ee1e972dc25b0bcf136c4cb894541bbb1f75f578e8b2b680ae8ec8b376945b7dc20e502a1fa5a954dd2b1
7
- data.tar.gz: 1256232d391c2c2c41f73cc1514fbf41b696ed39bae364146b06143d13f0122332d094bbfe8b248022be16f4e0493fb9a135b9c244e11e2daaac42ba3d4d80fb
6
+ metadata.gz: 9488f467344b8eb01fb3ce1bae4b8324ee6725313b0e7a14dfdad98e6a7df633908b131a95f4f31d0491b0b7a311a1b74144ed304ef3d9794bac5d8851412255
7
+ data.tar.gz: 2d9b78663c7e2b68eea6c2ce794662ce3bc51b5438f35c9fc4c85d61f92072192a421ae05d51a6848ae51d2c1fa9c69e9c1016a7251588404113b57986c6d3c3
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-costexplorer/customizations'
42
42
  # @service
43
43
  module Aws::CostExplorer
44
44
 
45
- GEM_VERSION = '1.1.0'
45
+ GEM_VERSION = '1.2.0'
46
46
 
47
47
  end
@@ -155,13 +155,14 @@ module Aws::CostExplorer
155
155
 
156
156
  # @!group API Operations
157
157
 
158
- # Retrieve cost and usage metrics for your account. You can specify
158
+ # Retrieves cost and usage metrics for your account. You can specify
159
159
  # which cost and usage-related metric, such as `BlendedCosts` or
160
160
  # `UsageQuantity`, that you want the request to return. You can also
161
161
  # filter and group your data by various dimensions, such as `SERVICE` or
162
- # `AZ`, in a specific time range. See the `GetDimensionValues` action
163
- # for a complete list of the valid dimensions. Master accounts in an
164
- # organization have access to all member accounts.
162
+ # `AZ`, in a specific time range. For a complete list of valid
163
+ # dimensions, see the ` GetDimensionValues ` operation. Master accounts
164
+ # in an organization in AWS Organizations have access to all member
165
+ # accounts.
165
166
  #
166
167
  # @option params [Types::DateInterval] :time_period
167
168
  # Sets the start and end dates for retrieving AWS costs. The start date
@@ -177,10 +178,10 @@ module Aws::CostExplorer
177
178
  #
178
179
  # @option params [Types::Expression] :filter
179
180
  # Filters AWS costs by different dimensions. For example, you can
180
- # specify `SERVICE` and `LINKED_ACCOUNT` and get the costs associated
181
- # with that account's usage of that service. You can nest `Expression`
182
- # objects to define any combination of dimension filters. For more
183
- # information, see [Expression][1].
181
+ # specify `SERVICE` and `LINKED_ACCOUNT` and get the costs that are
182
+ # associated with that account's usage of that service. You can nest
183
+ # `Expression` objects to define any combination of dimension filters.
184
+ # For more information, see [Expression][1].
184
185
  #
185
186
  #
186
187
  #
@@ -202,6 +203,8 @@ module Aws::CostExplorer
202
203
  #
203
204
  # </note>
204
205
  #
206
+ # `Metrics` is required for `GetCostAndUsage` requests.
207
+ #
205
208
  #
206
209
  #
207
210
  # [1]: https://aws.amazon.com/premiumsupport/knowledge-center/blended-rates-intro/
@@ -213,9 +216,9 @@ module Aws::CostExplorer
213
216
  # When you group by tag key, you get all tag values, including empty
214
217
  # strings.
215
218
  #
216
- # Valid values are `AZ`, `INSTANCE_TYPE`, `LINKED_ACCOUNT`, `OPERATION`,
217
- # `PLATFORM`, `PURCHASE_TYPE`, `SERVICE`, `TAGS`, `TENANCY`, and
218
- # `USAGE_TYPE`.
219
+ # Valid values are `AZ`, `INSTANCE_TYPE`, `LEGAL_ENTITY_NAME`,
220
+ # `LINKED_ACCOUNT`, `OPERATION`, `PLATFORM`, `PURCHASE_TYPE`, `SERVICE`,
221
+ # `TAGS`, `TENANCY`, and `USAGE_TYPE`.
219
222
  #
220
223
  # @option params [String] :next_page_token
221
224
  # The token to retrieve the next set of results. AWS provides the token
@@ -298,9 +301,9 @@ module Aws::CostExplorer
298
301
  req.send_request(options)
299
302
  end
300
303
 
301
- # You can use `GetDimensionValues` to retrieve all available filter
302
- # values for a specific filter over a period of time. You can search the
303
- # dimension values for an arbitrary string.
304
+ # Retrieves all available filter values for a specific filter over a
305
+ # period of time. You can search the dimension values for an arbitrary
306
+ # string.
304
307
  #
305
308
  # @option params [String] :search_string
306
309
  # The value that you want to search the filter values for.
@@ -313,7 +316,7 @@ module Aws::CostExplorer
313
316
  # `2017-04-30` but not including `2017-05-01`.
314
317
  #
315
318
  # @option params [required, String] :dimension
316
- # The name of the dimension. Each `Dimensions`is available for different
319
+ # The name of the dimension. Each `Dimension` is available for different
317
320
  # a `Context`. For more information, see `Context`.
318
321
  #
319
322
  # @option params [String] :context
@@ -321,38 +324,39 @@ module Aws::CostExplorer
321
324
  # `RESERVATIONS` or `COST_AND_USAGE`. The default value is
322
325
  # `COST_AND_USAGE`. If the context is set to `RESERVATIONS`, the
323
326
  # resulting dimension values can be used in the
324
- # `GetReservationUtilization` action. If the context is set to
325
- # `COST_AND_USAGE`, the resulting dimension values can be used in the
327
+ # `GetReservationUtilization` operation. If the context is set to
328
+ # `COST_AND_USAGE` the resulting dimension values can be used in the
326
329
  # `GetCostAndUsage` operation.
327
330
  #
328
331
  # If you set the context to `CostAndUsage`, you can use the following
329
332
  # dimensions for searching:
330
333
  #
331
- # * AZ - The Availability Zone. An example is us-east-1a.
334
+ # * AZ - The Availability Zone. An example is `us-east-1a`.
332
335
  #
333
- # * INSTANCE\_TYPE - The type of EC2 instance. An example is m4.xlarge.
336
+ # * INSTANCE\_TYPE - The type of instance. An example is an EC2
337
+ # `m4.xlarge`.
334
338
  #
335
339
  # * LINKED\_ACCOUNT - The description in the attribute map that includes
336
340
  # the full name of the member account. The value field contains the
337
- # AWS ID of the member account
341
+ # AWS ID of the member account.
338
342
  #
339
- # * OPERATION - The action performed. Examples include RunInstance and
340
- # CreateBucket.
343
+ # * OPERATION - The action performed. Examples include `RunInstance` and
344
+ # `CreateBucket`.
341
345
  #
342
346
  # * PURCHASE\_TYPE - The reservation type of the purchase to which this
343
- # usage is related. Examples include: On Demand Instances and Standard
344
- # Reserved Instances
347
+ # usage is related. Examples include On-Demand Instances and Standard
348
+ # Reserved Instances.
345
349
  #
346
350
  # * SERVICE - The AWS service such as DynamoDB.
347
351
  #
348
352
  # * USAGE\_TYPE - The type of usage. An example is
349
- # DataTransfer-In-Bytes. The response for the GetDimensionValues
350
- # action includes a unit attribute, examples of which include GB and
351
- # Hrs.
353
+ # `DataTransfer-In-Bytes`. The response for the `GetDimensionValues`
354
+ # operation includes a unit attribute, examples of which include GB
355
+ # and Hrs.
352
356
  #
353
357
  # * USAGE\_TYPE\_GROUP - The grouping of common usage types. An example
354
- # is EC2: CloudWatch – Alarms. The response for this action includes a
355
- # unit attribute.
358
+ # is EC2: CloudWatch – Alarms. The response for this operation
359
+ # includes a unit attribute.
356
360
  #
357
361
  # * RECORD\_TYPE - The different types of charges such as RI fees, usage
358
362
  # costs, tax refunds, and credits.
@@ -360,20 +364,24 @@ module Aws::CostExplorer
360
364
  # If you set the context to `RESERVATIONS`, you can use the following
361
365
  # dimensions for searching:
362
366
  #
363
- # * AZ - The Availability Zone. An example is us-east-1a.
367
+ # * AZ - The Availability Zone. An example is `us-east-1a`.
364
368
  #
365
- # * INSTANCE\_TYPE - The type of EC2 instance. An example is m4.xlarge.
369
+ # * INSTANCE\_TYPE - The type of instance. An example is an EC2
370
+ # `m4.xlarge`.
366
371
  #
367
372
  # * LINKED\_ACCOUNT - The description in the attribute map that includes
368
373
  # the full name of the member account. The value field contains the
369
- # AWS ID of the member account
374
+ # AWS ID of the member account.
370
375
  #
371
- # * PLATFORM - The operating system. Examples are Windows or Linux.
376
+ # * PLATFORM - The specific combination of operating system, license
377
+ # model, and software on an instance. For example, a Windows instance
378
+ # with SQL Server Web and no license, or a Red Hat Enterprise Linux
379
+ # instance.
372
380
  #
373
- # * REGION - The AWS region.
381
+ # * REGION - The AWS Region.
374
382
  #
375
- # * SCOPE - The scope of a reserved instance (RI). Values are regional
376
- # or a single availability zone.
383
+ # * SCOPE - The scope of a Reserved Instance (RI). Values are regional
384
+ # or a single Availability Zone.
377
385
  #
378
386
  # * TENANCY - The tenancy of a resource. Examples are shared or
379
387
  # dedicated.
@@ -422,10 +430,13 @@ module Aws::CostExplorer
422
430
  req.send_request(options)
423
431
  end
424
432
 
425
- # Retrieve the reservation coverage for your account. An organization's
426
- # master account has access to the associated member accounts. For any
427
- # time period, you can filter data about reservation usage by the
428
- # following dimensions.
433
+ # Retrieves the reservation coverage for your account. This allows you
434
+ # to see how much of your Amazon Elastic Compute Cloud, Amazon
435
+ # ElastiCache, Amazon Relational Database Service, or Amazon Redshift
436
+ # usage is covered by a reservation. An organization's master account
437
+ # can see the coverage of the associated member accounts. For any time
438
+ # period, you can filter data about reservation usage by the following
439
+ # dimensions:
429
440
  #
430
441
  # * AZ
431
442
  #
@@ -445,14 +456,14 @@ module Aws::CostExplorer
445
456
  # @option params [required, Types::DateInterval] :time_period
446
457
  # The start and end dates of the period for which you want to retrieve
447
458
  # data about reservation coverage. You can retrieve data for a maximum
448
- # of 13 months-the last 12 months and the current month. The start date
459
+ # of 13 months: the last 12 months and the current month. The start date
449
460
  # is inclusive, but the end date is exclusive. For example, if `start`
450
461
  # is `2017-01-01` and `end` is `2017-05-01`, then the cost and usage
451
462
  # data is retrieved from `2017-01-01` up to and including `2017-04-30`
452
463
  # but not including `2017-05-01`.
453
464
  #
454
465
  # @option params [Array<Types::GroupDefinition>] :group_by
455
- # You can group the data by the following attributes.
466
+ # You can group the data by the following attributes:
456
467
  #
457
468
  # * AZ
458
469
  #
@@ -476,7 +487,7 @@ module Aws::CostExplorer
476
487
  #
477
488
  # @option params [Types::Expression] :filter
478
489
  # Filters utilization data by dimensions. You can filter by the
479
- # following dimensions.
490
+ # following dimensions:
480
491
  #
481
492
  # * AZ
482
493
  #
@@ -490,7 +501,7 @@ module Aws::CostExplorer
490
501
  #
491
502
  # * TENANCY
492
503
  #
493
- # `GetReservationCoverage` uses the same `Expression` object as the
504
+ # `GetReservationCoverage` uses the same ` Expression ` object as the
494
505
  # other operations, but only `AND` is supported among each dimension.
495
506
  # You can nest only one level deep. If there are multiple values for a
496
507
  # dimension, they are OR'd together.
@@ -577,11 +588,139 @@ module Aws::CostExplorer
577
588
  req.send_request(options)
578
589
  end
579
590
 
580
- # You can retrieve the Reservation utilization for your account. Master
581
- # accounts in an organization have access to their associated member
582
- # accounts. You can filter data by dimensions in a time period. You can
583
- # use `GetDimensionValues` to determine the possible dimension values.
584
- # Currently, you can group only by `SUBSCRIPTION_ID`.
591
+ # Gets recommendations for which reservations to purchase. These
592
+ # recommendations could help you reduce your costs. Reservations provide
593
+ # a discounted hourly rate (up to 75%) compared to On-Demand pricing.
594
+ #
595
+ # AWS generates your recommendations by identifying your On-Demand usage
596
+ # during a specific time period and collecting your usage into
597
+ # categories that are eligible for a reservation. After AWS has these
598
+ # categories, it simulates every combination of reservations in each
599
+ # category of usage to identify the best number of each type of RI to
600
+ # purchase to maximize your estimated savings.
601
+ #
602
+ # For example, AWS automatically aggregates your EC2 Linux, shared
603
+ # tenancy, and c4 family usage in the US West (Oregon) Region and
604
+ # recommends that you buy size-flexible regional reservations to apply
605
+ # to the c4 family usage. AWS recommends the smallest size instance in
606
+ # an instance family. This makes it easier to purchase a size-flexible
607
+ # RI. AWS also shows the equal number of normalized units so that you
608
+ # can purchase any instance size that you want. For this example, your
609
+ # RI recommendation would be for `c4.large`, because that is the
610
+ # smallest size instance in the c4 instance family.
611
+ #
612
+ # @option params [String] :account_id
613
+ # The account ID that is associated with the recommendation.
614
+ #
615
+ # @option params [required, String] :service
616
+ # The specific service that you want recommendations for.
617
+ #
618
+ # @option params [String] :account_scope
619
+ # The account scope that you want recommendations for. The only valid
620
+ # value is `Payer`. This means that AWS includes the master account and
621
+ # any member accounts when it calculates its recommendations.
622
+ #
623
+ # @option params [String] :lookback_period_in_days
624
+ # The number of previous days that you want AWS to consider when it
625
+ # calculates your recommendations.
626
+ #
627
+ # @option params [String] :term_in_years
628
+ # The reservation term that you want recommendations for.
629
+ #
630
+ # @option params [String] :payment_option
631
+ # The reservation purchase option that you want recommendations for.
632
+ #
633
+ # @option params [Types::ServiceSpecification] :service_specification
634
+ # The specific service, such as EC2, that you want recommendations for.
635
+ #
636
+ # @option params [Integer] :page_size
637
+ # The number of recommendations that you want returned in a single
638
+ # response object.
639
+ #
640
+ # @option params [String] :next_page_token
641
+ # The pagination token that indicates the next set of results that you
642
+ # want to retrieve.
643
+ #
644
+ # @return [Types::GetReservationPurchaseRecommendationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
645
+ #
646
+ # * {Types::GetReservationPurchaseRecommendationResponse#metadata #metadata} => Types::ReservationPurchaseRecommendationMetadata
647
+ # * {Types::GetReservationPurchaseRecommendationResponse#recommendations #recommendations} => Array&lt;Types::ReservationPurchaseRecommendation&gt;
648
+ # * {Types::GetReservationPurchaseRecommendationResponse#next_page_token #next_page_token} => String
649
+ #
650
+ # @example Request syntax with placeholder values
651
+ #
652
+ # resp = client.get_reservation_purchase_recommendation({
653
+ # account_id: "GenericString",
654
+ # service: "GenericString", # required
655
+ # account_scope: "PAYER", # accepts PAYER
656
+ # lookback_period_in_days: "SEVEN_DAYS", # accepts SEVEN_DAYS, THIRTY_DAYS, SIXTY_DAYS
657
+ # term_in_years: "ONE_YEAR", # accepts ONE_YEAR, THREE_YEARS
658
+ # payment_option: "NO_UPFRONT", # accepts NO_UPFRONT, PARTIAL_UPFRONT, ALL_UPFRONT
659
+ # service_specification: {
660
+ # ec2_specification: {
661
+ # offering_class: "STANDARD", # accepts STANDARD, CONVERTIBLE
662
+ # },
663
+ # },
664
+ # page_size: 1,
665
+ # next_page_token: "NextPageToken",
666
+ # })
667
+ #
668
+ # @example Response structure
669
+ #
670
+ # resp.metadata.recommendation_id #=> String
671
+ # resp.metadata.generation_timestamp #=> String
672
+ # resp.recommendations #=> Array
673
+ # resp.recommendations[0].account_scope #=> String, one of "PAYER"
674
+ # resp.recommendations[0].lookback_period_in_days #=> String, one of "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS"
675
+ # resp.recommendations[0].term_in_years #=> String, one of "ONE_YEAR", "THREE_YEARS"
676
+ # resp.recommendations[0].payment_option #=> String, one of "NO_UPFRONT", "PARTIAL_UPFRONT", "ALL_UPFRONT"
677
+ # resp.recommendations[0].service_specification.ec2_specification.offering_class #=> String, one of "STANDARD", "CONVERTIBLE"
678
+ # resp.recommendations[0].recommendation_details #=> Array
679
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.family #=> String
680
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.instance_type #=> String
681
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.region #=> String
682
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.availability_zone #=> String
683
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.platform #=> String
684
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.tenancy #=> String
685
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.current_generation #=> Boolean
686
+ # resp.recommendations[0].recommendation_details[0].instance_details.ec2_instance_details.size_flex_eligible #=> Boolean
687
+ # resp.recommendations[0].recommendation_details[0].recommended_number_of_instances_to_purchase #=> String
688
+ # resp.recommendations[0].recommendation_details[0].recommended_normalized_units_to_purchase #=> String
689
+ # resp.recommendations[0].recommendation_details[0].minimum_number_of_instances_used_per_hour #=> String
690
+ # resp.recommendations[0].recommendation_details[0].minimum_normalized_units_used_per_hour #=> String
691
+ # resp.recommendations[0].recommendation_details[0].maximum_number_of_instances_used_per_hour #=> String
692
+ # resp.recommendations[0].recommendation_details[0].maximum_normalized_units_used_per_hour #=> String
693
+ # resp.recommendations[0].recommendation_details[0].average_number_of_instances_used_per_hour #=> String
694
+ # resp.recommendations[0].recommendation_details[0].average_normalized_units_used_per_hour #=> String
695
+ # resp.recommendations[0].recommendation_details[0].average_utilization #=> String
696
+ # resp.recommendations[0].recommendation_details[0].estimated_break_even_in_months #=> String
697
+ # resp.recommendations[0].recommendation_details[0].currency_code #=> String
698
+ # resp.recommendations[0].recommendation_details[0].estimated_monthly_savings_amount #=> String
699
+ # resp.recommendations[0].recommendation_details[0].estimated_monthly_savings_percentage #=> String
700
+ # resp.recommendations[0].recommendation_details[0].estimated_monthly_on_demand_cost #=> String
701
+ # resp.recommendations[0].recommendation_details[0].estimated_reservation_cost_for_lookback_period #=> String
702
+ # resp.recommendations[0].recommendation_details[0].upfront_cost #=> String
703
+ # resp.recommendations[0].recommendation_details[0].recurring_standard_monthly_cost #=> String
704
+ # resp.recommendations[0].recommendation_summary.total_estimated_monthly_savings_amount #=> String
705
+ # resp.recommendations[0].recommendation_summary.total_estimated_monthly_savings_percentage #=> String
706
+ # resp.recommendations[0].recommendation_summary.currency_code #=> String
707
+ # resp.next_page_token #=> String
708
+ #
709
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetReservationPurchaseRecommendation AWS API Documentation
710
+ #
711
+ # @overload get_reservation_purchase_recommendation(params = {})
712
+ # @param [Hash] params ({})
713
+ def get_reservation_purchase_recommendation(params = {}, options = {})
714
+ req = build_request(:get_reservation_purchase_recommendation, params)
715
+ req.send_request(options)
716
+ end
717
+
718
+ # You can retrieve the reservation utilization for your account. Master
719
+ # accounts in an organization in AWS Organizations have access to their
720
+ # associated member accounts. You can filter data by dimensions in a
721
+ # time period. You can use `GetDimensionValues` to determine the
722
+ # possible dimension values. Currently, you can group only by
723
+ # `SUBSCRIPTION_ID`.
585
724
  #
586
725
  # @option params [required, Types::DateInterval] :time_period
587
726
  # Sets the start and end dates for retrieving reserve instance (RI)
@@ -602,10 +741,10 @@ module Aws::CostExplorer
602
741
  #
603
742
  # @option params [Types::Expression] :filter
604
743
  # Filters utilization data by using different dimensions.
605
- # `GetReservationUtilization` uses the same `Expression` object as the
744
+ # `GetReservationUtilization` uses the same ` Expression ` object as the
606
745
  # other operations, but only `AND` is supported among each dimension,
607
- # and nesting is supported up to only one level deep. If there are
608
- # multiple values for a dimension, they are OR'd together.
746
+ # and nesting is supported to only one level deep. If there are multiple
747
+ # values for a dimension, they are OR'd together.
609
748
  #
610
749
  # @option params [String] :next_page_token
611
750
  # The token to retrieve the next set of results. AWS provides the token
@@ -761,7 +900,7 @@ module Aws::CostExplorer
761
900
  params: params,
762
901
  config: config)
763
902
  context[:gem_name] = 'aws-sdk-costexplorer'
764
- context[:gem_version] = '1.1.0'
903
+ context[:gem_version] = '1.2.0'
765
904
  Seahorse::Client::Request.new(handlers, context)
766
905
  end
767
906
 
@@ -11,6 +11,7 @@ module Aws::CostExplorer
11
11
 
12
12
  include Seahorse::Model
13
13
 
14
+ AccountScope = Shapes::StringShape.new(name: 'AccountScope')
14
15
  AttributeType = Shapes::StringShape.new(name: 'AttributeType')
15
16
  AttributeValue = Shapes::StringShape.new(name: 'AttributeValue')
16
17
  Attributes = Shapes::MapShape.new(name: 'Attributes')
@@ -27,17 +28,23 @@ module Aws::CostExplorer
27
28
  DimensionValues = Shapes::StructureShape.new(name: 'DimensionValues')
28
29
  DimensionValuesWithAttributes = Shapes::StructureShape.new(name: 'DimensionValuesWithAttributes')
29
30
  DimensionValuesWithAttributesList = Shapes::ListShape.new(name: 'DimensionValuesWithAttributesList')
31
+ EC2InstanceDetails = Shapes::StructureShape.new(name: 'EC2InstanceDetails')
32
+ EC2Specification = Shapes::StructureShape.new(name: 'EC2Specification')
30
33
  Entity = Shapes::StringShape.new(name: 'Entity')
31
34
  ErrorMessage = Shapes::StringShape.new(name: 'ErrorMessage')
32
35
  Estimated = Shapes::BooleanShape.new(name: 'Estimated')
33
36
  Expression = Shapes::StructureShape.new(name: 'Expression')
34
37
  Expressions = Shapes::ListShape.new(name: 'Expressions')
38
+ GenericBoolean = Shapes::BooleanShape.new(name: 'GenericBoolean')
39
+ GenericString = Shapes::StringShape.new(name: 'GenericString')
35
40
  GetCostAndUsageRequest = Shapes::StructureShape.new(name: 'GetCostAndUsageRequest')
36
41
  GetCostAndUsageResponse = Shapes::StructureShape.new(name: 'GetCostAndUsageResponse')
37
42
  GetDimensionValuesRequest = Shapes::StructureShape.new(name: 'GetDimensionValuesRequest')
38
43
  GetDimensionValuesResponse = Shapes::StructureShape.new(name: 'GetDimensionValuesResponse')
39
44
  GetReservationCoverageRequest = Shapes::StructureShape.new(name: 'GetReservationCoverageRequest')
40
45
  GetReservationCoverageResponse = Shapes::StructureShape.new(name: 'GetReservationCoverageResponse')
46
+ GetReservationPurchaseRecommendationRequest = Shapes::StructureShape.new(name: 'GetReservationPurchaseRecommendationRequest')
47
+ GetReservationPurchaseRecommendationResponse = Shapes::StructureShape.new(name: 'GetReservationPurchaseRecommendationResponse')
41
48
  GetReservationUtilizationRequest = Shapes::StructureShape.new(name: 'GetReservationUtilizationRequest')
42
49
  GetReservationUtilizationResponse = Shapes::StructureShape.new(name: 'GetReservationUtilizationResponse')
43
50
  GetTagsRequest = Shapes::StructureShape.new(name: 'GetTagsRequest')
@@ -49,10 +56,12 @@ module Aws::CostExplorer
49
56
  GroupDefinitionType = Shapes::StringShape.new(name: 'GroupDefinitionType')
50
57
  GroupDefinitions = Shapes::ListShape.new(name: 'GroupDefinitions')
51
58
  Groups = Shapes::ListShape.new(name: 'Groups')
59
+ InstanceDetails = Shapes::StructureShape.new(name: 'InstanceDetails')
52
60
  InvalidNextTokenException = Shapes::StructureShape.new(name: 'InvalidNextTokenException')
53
61
  Key = Shapes::StringShape.new(name: 'Key')
54
62
  Keys = Shapes::ListShape.new(name: 'Keys')
55
63
  LimitExceededException = Shapes::StructureShape.new(name: 'LimitExceededException')
64
+ LookbackPeriodInDays = Shapes::StringShape.new(name: 'LookbackPeriodInDays')
56
65
  MetricAmount = Shapes::StringShape.new(name: 'MetricAmount')
57
66
  MetricName = Shapes::StringShape.new(name: 'MetricName')
58
67
  MetricNames = Shapes::ListShape.new(name: 'MetricNames')
@@ -60,23 +69,34 @@ module Aws::CostExplorer
60
69
  MetricValue = Shapes::StructureShape.new(name: 'MetricValue')
61
70
  Metrics = Shapes::MapShape.new(name: 'Metrics')
62
71
  NextPageToken = Shapes::StringShape.new(name: 'NextPageToken')
72
+ NonNegativeInteger = Shapes::IntegerShape.new(name: 'NonNegativeInteger')
73
+ OfferingClass = Shapes::StringShape.new(name: 'OfferingClass')
63
74
  OnDemandHours = Shapes::StringShape.new(name: 'OnDemandHours')
64
75
  PageSize = Shapes::IntegerShape.new(name: 'PageSize')
76
+ PaymentOption = Shapes::StringShape.new(name: 'PaymentOption')
65
77
  PurchasedHours = Shapes::StringShape.new(name: 'PurchasedHours')
66
78
  ReservationAggregates = Shapes::StructureShape.new(name: 'ReservationAggregates')
67
79
  ReservationCoverageGroup = Shapes::StructureShape.new(name: 'ReservationCoverageGroup')
68
80
  ReservationCoverageGroups = Shapes::ListShape.new(name: 'ReservationCoverageGroups')
69
81
  ReservationGroupKey = Shapes::StringShape.new(name: 'ReservationGroupKey')
70
82
  ReservationGroupValue = Shapes::StringShape.new(name: 'ReservationGroupValue')
83
+ ReservationPurchaseRecommendation = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendation')
84
+ ReservationPurchaseRecommendationDetail = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationDetail')
85
+ ReservationPurchaseRecommendationDetails = Shapes::ListShape.new(name: 'ReservationPurchaseRecommendationDetails')
86
+ ReservationPurchaseRecommendationMetadata = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationMetadata')
87
+ ReservationPurchaseRecommendationSummary = Shapes::StructureShape.new(name: 'ReservationPurchaseRecommendationSummary')
88
+ ReservationPurchaseRecommendations = Shapes::ListShape.new(name: 'ReservationPurchaseRecommendations')
71
89
  ReservationUtilizationGroup = Shapes::StructureShape.new(name: 'ReservationUtilizationGroup')
72
90
  ReservationUtilizationGroups = Shapes::ListShape.new(name: 'ReservationUtilizationGroups')
73
91
  ReservedHours = Shapes::StringShape.new(name: 'ReservedHours')
74
92
  ResultByTime = Shapes::StructureShape.new(name: 'ResultByTime')
75
93
  ResultsByTime = Shapes::ListShape.new(name: 'ResultsByTime')
76
94
  SearchString = Shapes::StringShape.new(name: 'SearchString')
95
+ ServiceSpecification = Shapes::StructureShape.new(name: 'ServiceSpecification')
77
96
  TagKey = Shapes::StringShape.new(name: 'TagKey')
78
97
  TagList = Shapes::ListShape.new(name: 'TagList')
79
98
  TagValues = Shapes::StructureShape.new(name: 'TagValues')
99
+ TermInYears = Shapes::StringShape.new(name: 'TermInYears')
80
100
  TotalActualHours = Shapes::StringShape.new(name: 'TotalActualHours')
81
101
  TotalRunningHours = Shapes::StringShape.new(name: 'TotalRunningHours')
82
102
  UnusedHours = Shapes::StringShape.new(name: 'UnusedHours')
@@ -120,6 +140,19 @@ module Aws::CostExplorer
120
140
 
121
141
  DimensionValuesWithAttributesList.member = Shapes::ShapeRef.new(shape: DimensionValuesWithAttributes)
122
142
 
143
+ EC2InstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
144
+ EC2InstanceDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceType"))
145
+ EC2InstanceDetails.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
146
+ EC2InstanceDetails.add_member(:availability_zone, Shapes::ShapeRef.new(shape: GenericString, location_name: "AvailabilityZone"))
147
+ EC2InstanceDetails.add_member(:platform, Shapes::ShapeRef.new(shape: GenericString, location_name: "Platform"))
148
+ EC2InstanceDetails.add_member(:tenancy, Shapes::ShapeRef.new(shape: GenericString, location_name: "Tenancy"))
149
+ EC2InstanceDetails.add_member(:current_generation, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "CurrentGeneration"))
150
+ EC2InstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
151
+ EC2InstanceDetails.struct_class = Types::EC2InstanceDetails
152
+
153
+ EC2Specification.add_member(:offering_class, Shapes::ShapeRef.new(shape: OfferingClass, location_name: "OfferingClass"))
154
+ EC2Specification.struct_class = Types::EC2Specification
155
+
123
156
  Expression.add_member(:or, Shapes::ShapeRef.new(shape: Expressions, location_name: "Or"))
124
157
  Expression.add_member(:and, Shapes::ShapeRef.new(shape: Expressions, location_name: "And"))
125
158
  Expression.add_member(:not, Shapes::ShapeRef.new(shape: Expression, location_name: "Not"))
@@ -167,6 +200,22 @@ module Aws::CostExplorer
167
200
  GetReservationCoverageResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
168
201
  GetReservationCoverageResponse.struct_class = Types::GetReservationCoverageResponse
169
202
 
203
+ GetReservationPurchaseRecommendationRequest.add_member(:account_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "AccountId"))
204
+ GetReservationPurchaseRecommendationRequest.add_member(:service, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Service"))
205
+ GetReservationPurchaseRecommendationRequest.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
206
+ GetReservationPurchaseRecommendationRequest.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
207
+ GetReservationPurchaseRecommendationRequest.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
208
+ GetReservationPurchaseRecommendationRequest.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
209
+ GetReservationPurchaseRecommendationRequest.add_member(:service_specification, Shapes::ShapeRef.new(shape: ServiceSpecification, location_name: "ServiceSpecification"))
210
+ GetReservationPurchaseRecommendationRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: NonNegativeInteger, location_name: "PageSize"))
211
+ GetReservationPurchaseRecommendationRequest.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
212
+ GetReservationPurchaseRecommendationRequest.struct_class = Types::GetReservationPurchaseRecommendationRequest
213
+
214
+ GetReservationPurchaseRecommendationResponse.add_member(:metadata, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationMetadata, location_name: "Metadata"))
215
+ GetReservationPurchaseRecommendationResponse.add_member(:recommendations, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendations, location_name: "Recommendations"))
216
+ GetReservationPurchaseRecommendationResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
217
+ GetReservationPurchaseRecommendationResponse.struct_class = Types::GetReservationPurchaseRecommendationResponse
218
+
170
219
  GetReservationUtilizationRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, required: true, location_name: "TimePeriod"))
171
220
  GetReservationUtilizationRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: GroupDefinitions, location_name: "GroupBy"))
172
221
  GetReservationUtilizationRequest.add_member(:granularity, Shapes::ShapeRef.new(shape: Granularity, location_name: "Granularity"))
@@ -203,6 +252,9 @@ module Aws::CostExplorer
203
252
 
204
253
  Groups.member = Shapes::ShapeRef.new(shape: Group)
205
254
 
255
+ InstanceDetails.add_member(:ec2_instance_details, Shapes::ShapeRef.new(shape: EC2InstanceDetails, location_name: "EC2InstanceDetails"))
256
+ InstanceDetails.struct_class = Types::InstanceDetails
257
+
206
258
  Keys.member = Shapes::ShapeRef.new(shape: Key)
207
259
 
208
260
  MetricNames.member = Shapes::ShapeRef.new(shape: MetricName)
@@ -226,6 +278,48 @@ module Aws::CostExplorer
226
278
 
227
279
  ReservationCoverageGroups.member = Shapes::ShapeRef.new(shape: ReservationCoverageGroup)
228
280
 
281
+ ReservationPurchaseRecommendation.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
282
+ ReservationPurchaseRecommendation.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
283
+ ReservationPurchaseRecommendation.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
284
+ ReservationPurchaseRecommendation.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
285
+ ReservationPurchaseRecommendation.add_member(:service_specification, Shapes::ShapeRef.new(shape: ServiceSpecification, location_name: "ServiceSpecification"))
286
+ ReservationPurchaseRecommendation.add_member(:recommendation_details, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationDetails, location_name: "RecommendationDetails"))
287
+ ReservationPurchaseRecommendation.add_member(:recommendation_summary, Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationSummary, location_name: "RecommendationSummary"))
288
+ ReservationPurchaseRecommendation.struct_class = Types::ReservationPurchaseRecommendation
289
+
290
+ ReservationPurchaseRecommendationDetail.add_member(:instance_details, Shapes::ShapeRef.new(shape: InstanceDetails, location_name: "InstanceDetails"))
291
+ ReservationPurchaseRecommendationDetail.add_member(:recommended_number_of_instances_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendedNumberOfInstancesToPurchase"))
292
+ ReservationPurchaseRecommendationDetail.add_member(:recommended_normalized_units_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendedNormalizedUnitsToPurchase"))
293
+ ReservationPurchaseRecommendationDetail.add_member(:minimum_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MinimumNumberOfInstancesUsedPerHour"))
294
+ ReservationPurchaseRecommendationDetail.add_member(:minimum_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MinimumNormalizedUnitsUsedPerHour"))
295
+ ReservationPurchaseRecommendationDetail.add_member(:maximum_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaximumNumberOfInstancesUsedPerHour"))
296
+ ReservationPurchaseRecommendationDetail.add_member(:maximum_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaximumNormalizedUnitsUsedPerHour"))
297
+ ReservationPurchaseRecommendationDetail.add_member(:average_number_of_instances_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageNumberOfInstancesUsedPerHour"))
298
+ ReservationPurchaseRecommendationDetail.add_member(:average_normalized_units_used_per_hour, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageNormalizedUnitsUsedPerHour"))
299
+ ReservationPurchaseRecommendationDetail.add_member(:average_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "AverageUtilization"))
300
+ ReservationPurchaseRecommendationDetail.add_member(:estimated_break_even_in_months, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedBreakEvenInMonths"))
301
+ ReservationPurchaseRecommendationDetail.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
302
+ ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsAmount"))
303
+ ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsPercentage"))
304
+ ReservationPurchaseRecommendationDetail.add_member(:estimated_monthly_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlyOnDemandCost"))
305
+ ReservationPurchaseRecommendationDetail.add_member(:estimated_reservation_cost_for_lookback_period, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedReservationCostForLookbackPeriod"))
306
+ ReservationPurchaseRecommendationDetail.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "UpfrontCost"))
307
+ ReservationPurchaseRecommendationDetail.add_member(:recurring_standard_monthly_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecurringStandardMonthlyCost"))
308
+ ReservationPurchaseRecommendationDetail.struct_class = Types::ReservationPurchaseRecommendationDetail
309
+
310
+ ReservationPurchaseRecommendationDetails.member = Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendationDetail)
311
+
312
+ ReservationPurchaseRecommendationMetadata.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendationId"))
313
+ ReservationPurchaseRecommendationMetadata.add_member(:generation_timestamp, Shapes::ShapeRef.new(shape: GenericString, location_name: "GenerationTimestamp"))
314
+ ReservationPurchaseRecommendationMetadata.struct_class = Types::ReservationPurchaseRecommendationMetadata
315
+
316
+ ReservationPurchaseRecommendationSummary.add_member(:total_estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalEstimatedMonthlySavingsAmount"))
317
+ ReservationPurchaseRecommendationSummary.add_member(:total_estimated_monthly_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalEstimatedMonthlySavingsPercentage"))
318
+ ReservationPurchaseRecommendationSummary.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
319
+ ReservationPurchaseRecommendationSummary.struct_class = Types::ReservationPurchaseRecommendationSummary
320
+
321
+ ReservationPurchaseRecommendations.member = Shapes::ShapeRef.new(shape: ReservationPurchaseRecommendation)
322
+
229
323
  ReservationUtilizationGroup.add_member(:key, Shapes::ShapeRef.new(shape: ReservationGroupKey, location_name: "Key"))
230
324
  ReservationUtilizationGroup.add_member(:value, Shapes::ShapeRef.new(shape: ReservationGroupValue, location_name: "Value"))
231
325
  ReservationUtilizationGroup.add_member(:attributes, Shapes::ShapeRef.new(shape: Attributes, location_name: "Attributes"))
@@ -242,6 +336,9 @@ module Aws::CostExplorer
242
336
 
243
337
  ResultsByTime.member = Shapes::ShapeRef.new(shape: ResultByTime)
244
338
 
339
+ ServiceSpecification.add_member(:ec2_specification, Shapes::ShapeRef.new(shape: EC2Specification, location_name: "EC2Specification"))
340
+ ServiceSpecification.struct_class = Types::ServiceSpecification
341
+
245
342
  TagList.member = Shapes::ShapeRef.new(shape: Entity)
246
343
 
247
344
  TagValues.add_member(:key, Shapes::ShapeRef.new(shape: TagKey, location_name: "Key"))
@@ -307,6 +404,17 @@ module Aws::CostExplorer
307
404
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
308
405
  end)
309
406
 
407
+ api.add_operation(:get_reservation_purchase_recommendation, Seahorse::Model::Operation.new.tap do |o|
408
+ o.name = "GetReservationPurchaseRecommendation"
409
+ o.http_method = "POST"
410
+ o.http_request_uri = "/"
411
+ o.input = Shapes::ShapeRef.new(shape: GetReservationPurchaseRecommendationRequest)
412
+ o.output = Shapes::ShapeRef.new(shape: GetReservationPurchaseRecommendationResponse)
413
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
414
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
415
+ o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
416
+ end)
417
+
310
418
  api.add_operation(:get_reservation_utilization, Seahorse::Model::Operation.new.tap do |o|
311
419
  o.name = "GetReservationUtilization"
312
420
  o.http_method = "POST"