aws-sdk-costexplorer 1.88.0 → 1.90.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 92b6d734c8c89730cf7be3631ed06041c2d809eb3b442a7a451f737a91d21f8f
4
- data.tar.gz: 84fcbc0a00a6f2e08e6a72e635328cfef7bc9753d4b44d0909125645b1ad890a
3
+ metadata.gz: 3b8e8cb02fa7b31cf2b1445ca56a6da49f579d8880d7ef7c6b510b62fc783a58
4
+ data.tar.gz: b4f316ed2a7941088c37c65971ca9962f51e937bf510f9645d127445b1519b36
5
5
  SHA512:
6
- metadata.gz: 24378c6c155f08118c2a6025a4f507ff8e23f733a3ce4820bf0730fda2323164a56a4cab3393d8b1d997ccd0353438c45f74ec7ac72f8eb41c7ee0a4df658df4
7
- data.tar.gz: 6f079853a626ea781975ed340175781b467c6288c7e8df6444b42fc7eb358877a981c8a954ea7c63ea6bfb635496a597d3f9482ecb8b6878141bac167fb0f4b6
6
+ metadata.gz: 67b71613f08bc464003b8f10983d248ab899afe73c336a02964f2be55df652af7fc254cfd6191fc080be1c093f8a7d9462619fd7324f10308e9a3a669be04acc
7
+ data.tar.gz: bcb1e455acb54110267bfc9a849427dee9d245f0b962da5ec1ba86da456d544989f7c55b167322483e173ea3084a83e55b9e505004d936eb0cecf065fe8de894
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.90.0 (2023-08-22)
5
+ ------------------
6
+
7
+ * Feature - This release adds the LastUpdatedDate and LastUsedDate timestamps to help you manage your cost allocation tags.
8
+
9
+ 1.89.0 (2023-07-24)
10
+ ------------------
11
+
12
+ * Feature - This release introduces the new API 'GetSavingsPlanPurchaseRecommendationDetails', which retrieves the details for a Savings Plan recommendation. It also updates the existing API 'GetSavingsPlansPurchaseRecommendation' to include the recommendation detail ID.
13
+
4
14
  1.88.0 (2023-07-11)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.88.0
1
+ 1.90.0
@@ -1560,7 +1560,7 @@ module Aws::CostExplorer
1560
1560
  #
1561
1561
  # * The corresponding `Expression` for this example is as follows:
1562
1562
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1563
- # us-west-1 ] \} \}`
1563
+ # "us-west-1" ] \} \}`
1564
1564
  #
1565
1565
  # * As shown in the previous example, lists of dimension values are
1566
1566
  # combined with `OR` when applying the filter.
@@ -1570,7 +1570,7 @@ module Aws::CostExplorer
1570
1570
  # the documentation for each specific API to see what is supported.
1571
1571
  #
1572
1572
  # * For example, you can filter for linked account names that start
1573
- # with a”.
1573
+ # with "a".
1574
1574
  #
1575
1575
  # * The corresponding `Expression` for this example is as follows:
1576
1576
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2105,7 +2105,7 @@ module Aws::CostExplorer
2105
2105
  #
2106
2106
  # * The corresponding `Expression` for this example is as follows:
2107
2107
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2108
- # us-west-1 ] \} \}`
2108
+ # "us-west-1" ] \} \}`
2109
2109
  #
2110
2110
  # * As shown in the previous example, lists of dimension values are
2111
2111
  # combined with `OR` when applying the filter.
@@ -2115,7 +2115,7 @@ module Aws::CostExplorer
2115
2115
  # the documentation for each specific API to see what is supported.
2116
2116
  #
2117
2117
  # * For example, you can filter for linked account names that start
2118
- # with a”.
2118
+ # with "a".
2119
2119
  #
2120
2120
  # * The corresponding `Expression` for this example is as follows:
2121
2121
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2615,7 +2615,7 @@ module Aws::CostExplorer
2615
2615
  #
2616
2616
  # * The corresponding `Expression` for this example is as follows:
2617
2617
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2618
- # us-west-1 ] \} \}`
2618
+ # "us-west-1" ] \} \}`
2619
2619
  #
2620
2620
  # * As shown in the previous example, lists of dimension values are
2621
2621
  # combined with `OR` when applying the filter.
@@ -2625,7 +2625,7 @@ module Aws::CostExplorer
2625
2625
  # the documentation for each specific API to see what is supported.
2626
2626
  #
2627
2627
  # * For example, you can filter for linked account names that start
2628
- # with a”.
2628
+ # with "a".
2629
2629
  #
2630
2630
  # * The corresponding `Expression` for this example is as follows:
2631
2631
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3124,7 +3124,7 @@ module Aws::CostExplorer
3124
3124
  #
3125
3125
  # * The corresponding `Expression` for this example is as follows:
3126
3126
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3127
- # us-west-1 ] \} \}`
3127
+ # "us-west-1" ] \} \}`
3128
3128
  #
3129
3129
  # * As shown in the previous example, lists of dimension values are
3130
3130
  # combined with `OR` when applying the filter.
@@ -3134,7 +3134,7 @@ module Aws::CostExplorer
3134
3134
  # the documentation for each specific API to see what is supported.
3135
3135
  #
3136
3136
  # * For example, you can filter for linked account names that start
3137
- # with a”.
3137
+ # with "a".
3138
3138
  #
3139
3139
  # * The corresponding `Expression` for this example is as follows:
3140
3140
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3354,6 +3354,71 @@ module Aws::CostExplorer
3354
3354
  req.send_request(options)
3355
3355
  end
3356
3356
 
3357
+ # Retrieves the details for a Savings Plan recommendation. These details
3358
+ # include the hourly data-points that construct the cost, coverage, and
3359
+ # utilization charts.
3360
+ #
3361
+ # @option params [required, String] :recommendation_detail_id
3362
+ # The ID that is associated with the Savings Plan recommendation.
3363
+ #
3364
+ # @return [Types::GetSavingsPlanPurchaseRecommendationDetailsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
3365
+ #
3366
+ # * {Types::GetSavingsPlanPurchaseRecommendationDetailsResponse#recommendation_detail_id #recommendation_detail_id} => String
3367
+ # * {Types::GetSavingsPlanPurchaseRecommendationDetailsResponse#recommendation_detail_data #recommendation_detail_data} => Types::RecommendationDetailData
3368
+ #
3369
+ # @example Request syntax with placeholder values
3370
+ #
3371
+ # resp = client.get_savings_plan_purchase_recommendation_details({
3372
+ # recommendation_detail_id: "RecommendationDetailId", # required
3373
+ # })
3374
+ #
3375
+ # @example Response structure
3376
+ #
3377
+ # resp.recommendation_detail_id #=> String
3378
+ # resp.recommendation_detail_data.account_scope #=> String, one of "PAYER", "LINKED"
3379
+ # resp.recommendation_detail_data.lookback_period_in_days #=> String, one of "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS"
3380
+ # resp.recommendation_detail_data.savings_plans_type #=> String, one of "COMPUTE_SP", "EC2_INSTANCE_SP", "SAGEMAKER_SP"
3381
+ # resp.recommendation_detail_data.term_in_years #=> String, one of "ONE_YEAR", "THREE_YEARS"
3382
+ # resp.recommendation_detail_data.payment_option #=> String, one of "NO_UPFRONT", "PARTIAL_UPFRONT", "ALL_UPFRONT", "LIGHT_UTILIZATION", "MEDIUM_UTILIZATION", "HEAVY_UTILIZATION"
3383
+ # resp.recommendation_detail_data.account_id #=> String
3384
+ # resp.recommendation_detail_data.currency_code #=> String
3385
+ # resp.recommendation_detail_data.instance_family #=> String
3386
+ # resp.recommendation_detail_data.region #=> String
3387
+ # resp.recommendation_detail_data.offering_id #=> String
3388
+ # resp.recommendation_detail_data.generation_timestamp #=> String
3389
+ # resp.recommendation_detail_data.latest_usage_timestamp #=> String
3390
+ # resp.recommendation_detail_data.current_average_hourly_on_demand_spend #=> String
3391
+ # resp.recommendation_detail_data.current_maximum_hourly_on_demand_spend #=> String
3392
+ # resp.recommendation_detail_data.current_minimum_hourly_on_demand_spend #=> String
3393
+ # resp.recommendation_detail_data.estimated_average_utilization #=> String
3394
+ # resp.recommendation_detail_data.estimated_monthly_savings_amount #=> String
3395
+ # resp.recommendation_detail_data.estimated_on_demand_cost #=> String
3396
+ # resp.recommendation_detail_data.estimated_on_demand_cost_with_current_commitment #=> String
3397
+ # resp.recommendation_detail_data.estimated_roi #=> String
3398
+ # resp.recommendation_detail_data.estimated_sp_cost #=> String
3399
+ # resp.recommendation_detail_data.estimated_savings_amount #=> String
3400
+ # resp.recommendation_detail_data.estimated_savings_percentage #=> String
3401
+ # resp.recommendation_detail_data.existing_hourly_commitment #=> String
3402
+ # resp.recommendation_detail_data.hourly_commitment_to_purchase #=> String
3403
+ # resp.recommendation_detail_data.upfront_cost #=> String
3404
+ # resp.recommendation_detail_data.current_average_coverage #=> String
3405
+ # resp.recommendation_detail_data.estimated_average_coverage #=> String
3406
+ # resp.recommendation_detail_data.metrics_over_lookback_period #=> Array
3407
+ # resp.recommendation_detail_data.metrics_over_lookback_period[0].start_time #=> String
3408
+ # resp.recommendation_detail_data.metrics_over_lookback_period[0].estimated_on_demand_cost #=> String
3409
+ # resp.recommendation_detail_data.metrics_over_lookback_period[0].current_coverage #=> String
3410
+ # resp.recommendation_detail_data.metrics_over_lookback_period[0].estimated_coverage #=> String
3411
+ # resp.recommendation_detail_data.metrics_over_lookback_period[0].estimated_new_commitment_utilization #=> String
3412
+ #
3413
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlanPurchaseRecommendationDetails AWS API Documentation
3414
+ #
3415
+ # @overload get_savings_plan_purchase_recommendation_details(params = {})
3416
+ # @param [Hash] params ({})
3417
+ def get_savings_plan_purchase_recommendation_details(params = {}, options = {})
3418
+ req = build_request(:get_savings_plan_purchase_recommendation_details, params)
3419
+ req.send_request(options)
3420
+ end
3421
+
3357
3422
  # Retrieves the Savings Plans covered for your account. This enables you
3358
3423
  # to see how much of your cost is covered by a Savings Plan. An
3359
3424
  # organization’s management account can see the coverage of the
@@ -3652,6 +3717,7 @@ module Aws::CostExplorer
3652
3717
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].current_minimum_hourly_on_demand_spend #=> String
3653
3718
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].current_maximum_hourly_on_demand_spend #=> String
3654
3719
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].current_average_hourly_on_demand_spend #=> String
3720
+ # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].recommendation_detail_id #=> String
3655
3721
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.estimated_roi #=> String
3656
3722
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.currency_code #=> String
3657
3723
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.estimated_total_cost #=> String
@@ -4036,7 +4102,7 @@ module Aws::CostExplorer
4036
4102
  #
4037
4103
  # * The corresponding `Expression` for this example is as follows:
4038
4104
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
4039
- # us-west-1 ] \} \}`
4105
+ # "us-west-1" ] \} \}`
4040
4106
  #
4041
4107
  # * As shown in the previous example, lists of dimension values are
4042
4108
  # combined with `OR` when applying the filter.
@@ -4046,7 +4112,7 @@ module Aws::CostExplorer
4046
4112
  # the documentation for each specific API to see what is supported.
4047
4113
  #
4048
4114
  # * For example, you can filter for linked account names that start
4049
- # with a”.
4115
+ # with "a".
4050
4116
  #
4051
4117
  # * The corresponding `Expression` for this example is as follows:
4052
4118
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -4413,6 +4479,8 @@ module Aws::CostExplorer
4413
4479
  # resp.cost_allocation_tags[0].tag_key #=> String
4414
4480
  # resp.cost_allocation_tags[0].type #=> String, one of "AWSGenerated", "UserDefined"
4415
4481
  # resp.cost_allocation_tags[0].status #=> String, one of "Active", "Inactive"
4482
+ # resp.cost_allocation_tags[0].last_updated_date #=> String
4483
+ # resp.cost_allocation_tags[0].last_used_date #=> String
4416
4484
  # resp.next_token #=> String
4417
4485
  #
4418
4486
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ListCostAllocationTags AWS API Documentation
@@ -4771,7 +4839,18 @@ module Aws::CostExplorer
4771
4839
  req.send_request(options)
4772
4840
  end
4773
4841
 
4774
- # Updates an existing cost anomaly monitor subscription.
4842
+ # Updates an existing cost anomaly subscription. Specify the fields that
4843
+ # you want to update. Omitted fields are unchanged.
4844
+ #
4845
+ # <note markdown="1"> The JSON below describes the generic construct for each type. See
4846
+ # [Request Parameters][1] for possible values as they apply to
4847
+ # `AnomalySubscription`.
4848
+ #
4849
+ # </note>
4850
+ #
4851
+ #
4852
+ #
4853
+ # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_UpdateAnomalySubscription.html#API_UpdateAnomalySubscription_RequestParameters
4775
4854
  #
4776
4855
  # @option params [required, String] :subscription_arn
4777
4856
  # A cost anomaly subscription Amazon Resource Name (ARN).
@@ -4785,6 +4864,8 @@ module Aws::CostExplorer
4785
4864
  # ThresholdExpression. Continued use of Threshold will be treated as
4786
4865
  # shorthand syntax for a ThresholdExpression.
4787
4866
  #
4867
+ # You can specify either Threshold or ThresholdExpression, but not both.
4868
+ #
4788
4869
  # @option params [String] :frequency
4789
4870
  # The update to the frequency value that subscribers receive
4790
4871
  # notifications.
@@ -4802,10 +4883,14 @@ module Aws::CostExplorer
4802
4883
  # The update to the [Expression][1] object used to specify the anomalies
4803
4884
  # that you want to generate alerts for. This supports dimensions and
4804
4885
  # nested expressions. The supported dimensions are
4805
- # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and `ANOMALY_TOTAL_IMPACT_PERCENTAGE`.
4806
- # The supported nested expression types are `AND` and `OR`. The match
4807
- # option `GREATER_THAN_OR_EQUAL` is required. Values must be numbers
4808
- # between 0 and 10,000,000,000.
4886
+ # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and `ANOMALY_TOTAL_IMPACT_PERCENTAGE`,
4887
+ # corresponding to an anomaly’s TotalImpact and TotalImpactPercentage,
4888
+ # respectively (see [Impact][2] for more details). The supported nested
4889
+ # expression types are `AND` and `OR`. The match option
4890
+ # `GREATER_THAN_OR_EQUAL` is required. Values must be numbers between 0
4891
+ # and 10,000,000,000 in string format.
4892
+ #
4893
+ # You can specify either Threshold or ThresholdExpression, but not both.
4809
4894
  #
4810
4895
  # The following are examples of valid ThresholdExpressions:
4811
4896
  #
@@ -4834,6 +4919,7 @@ module Aws::CostExplorer
4834
4919
  #
4835
4920
  #
4836
4921
  # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html
4922
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
4837
4923
  #
4838
4924
  # @return [Types::UpdateAnomalySubscriptionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4839
4925
  #
@@ -5066,7 +5152,7 @@ module Aws::CostExplorer
5066
5152
  params: params,
5067
5153
  config: config)
5068
5154
  context[:gem_name] = 'aws-sdk-costexplorer'
5069
- context[:gem_version] = '1.88.0'
5155
+ context[:gem_version] = '1.90.0'
5070
5156
  Seahorse::Client::Request.new(handlers, context)
5071
5157
  end
5072
5158
 
@@ -144,6 +144,8 @@ module Aws::CostExplorer
144
144
  GetReservationUtilizationResponse = Shapes::StructureShape.new(name: 'GetReservationUtilizationResponse')
145
145
  GetRightsizingRecommendationRequest = Shapes::StructureShape.new(name: 'GetRightsizingRecommendationRequest')
146
146
  GetRightsizingRecommendationResponse = Shapes::StructureShape.new(name: 'GetRightsizingRecommendationResponse')
147
+ GetSavingsPlanPurchaseRecommendationDetailsRequest = Shapes::StructureShape.new(name: 'GetSavingsPlanPurchaseRecommendationDetailsRequest')
148
+ GetSavingsPlanPurchaseRecommendationDetailsResponse = Shapes::StructureShape.new(name: 'GetSavingsPlanPurchaseRecommendationDetailsResponse')
147
149
  GetSavingsPlansCoverageRequest = Shapes::StructureShape.new(name: 'GetSavingsPlansCoverageRequest')
148
150
  GetSavingsPlansCoverageResponse = Shapes::StructureShape.new(name: 'GetSavingsPlansCoverageResponse')
149
151
  GetSavingsPlansPurchaseRecommendationRequest = Shapes::StructureShape.new(name: 'GetSavingsPlansPurchaseRecommendationRequest')
@@ -188,6 +190,7 @@ module Aws::CostExplorer
188
190
  MetricUnit = Shapes::StringShape.new(name: 'MetricUnit')
189
191
  MetricValue = Shapes::StructureShape.new(name: 'MetricValue')
190
192
  Metrics = Shapes::MapShape.new(name: 'Metrics')
193
+ MetricsOverLookbackPeriod = Shapes::ListShape.new(name: 'MetricsOverLookbackPeriod')
191
194
  ModifyRecommendationDetail = Shapes::StructureShape.new(name: 'ModifyRecommendationDetail')
192
195
  MonitorArnList = Shapes::ListShape.new(name: 'MonitorArnList')
193
196
  MonitorDimension = Shapes::StringShape.new(name: 'MonitorDimension')
@@ -215,6 +218,9 @@ module Aws::CostExplorer
215
218
  RDSInstanceDetails = Shapes::StructureShape.new(name: 'RDSInstanceDetails')
216
219
  RICostForUnusedHours = Shapes::StringShape.new(name: 'RICostForUnusedHours')
217
220
  RealizedSavings = Shapes::StringShape.new(name: 'RealizedSavings')
221
+ RecommendationDetailData = Shapes::StructureShape.new(name: 'RecommendationDetailData')
222
+ RecommendationDetailHourlyMetrics = Shapes::StructureShape.new(name: 'RecommendationDetailHourlyMetrics')
223
+ RecommendationDetailId = Shapes::StringShape.new(name: 'RecommendationDetailId')
218
224
  RecommendationId = Shapes::StringShape.new(name: 'RecommendationId')
219
225
  RecommendationIdList = Shapes::ListShape.new(name: 'RecommendationIdList')
220
226
  RecommendationTarget = Shapes::StringShape.new(name: 'RecommendationTarget')
@@ -388,6 +394,8 @@ module Aws::CostExplorer
388
394
  CostAllocationTag.add_member(:tag_key, Shapes::ShapeRef.new(shape: TagKey, required: true, location_name: "TagKey"))
389
395
  CostAllocationTag.add_member(:type, Shapes::ShapeRef.new(shape: CostAllocationTagType, required: true, location_name: "Type"))
390
396
  CostAllocationTag.add_member(:status, Shapes::ShapeRef.new(shape: CostAllocationTagStatus, required: true, location_name: "Status"))
397
+ CostAllocationTag.add_member(:last_updated_date, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "LastUpdatedDate"))
398
+ CostAllocationTag.add_member(:last_used_date, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "LastUsedDate"))
391
399
  CostAllocationTag.struct_class = Types::CostAllocationTag
392
400
 
393
401
  CostAllocationTagKeyList.member = Shapes::ShapeRef.new(shape: TagKey)
@@ -830,6 +838,13 @@ module Aws::CostExplorer
830
838
  GetRightsizingRecommendationResponse.add_member(:configuration, Shapes::ShapeRef.new(shape: RightsizingRecommendationConfiguration, location_name: "Configuration"))
831
839
  GetRightsizingRecommendationResponse.struct_class = Types::GetRightsizingRecommendationResponse
832
840
 
841
+ GetSavingsPlanPurchaseRecommendationDetailsRequest.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, required: true, location_name: "RecommendationDetailId"))
842
+ GetSavingsPlanPurchaseRecommendationDetailsRequest.struct_class = Types::GetSavingsPlanPurchaseRecommendationDetailsRequest
843
+
844
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, location_name: "RecommendationDetailId"))
845
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.add_member(:recommendation_detail_data, Shapes::ShapeRef.new(shape: RecommendationDetailData, location_name: "RecommendationDetailData"))
846
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.struct_class = Types::GetSavingsPlanPurchaseRecommendationDetailsResponse
847
+
833
848
  GetSavingsPlansCoverageRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, required: true, location_name: "TimePeriod"))
834
849
  GetSavingsPlansCoverageRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: GroupDefinitions, location_name: "GroupBy"))
835
850
  GetSavingsPlansCoverageRequest.add_member(:granularity, Shapes::ShapeRef.new(shape: Granularity, location_name: "Granularity"))
@@ -990,6 +1005,8 @@ module Aws::CostExplorer
990
1005
  Metrics.key = Shapes::ShapeRef.new(shape: MetricName)
991
1006
  Metrics.value = Shapes::ShapeRef.new(shape: MetricValue)
992
1007
 
1008
+ MetricsOverLookbackPeriod.member = Shapes::ShapeRef.new(shape: RecommendationDetailHourlyMetrics)
1009
+
993
1010
  ModifyRecommendationDetail.add_member(:target_instances, Shapes::ShapeRef.new(shape: TargetInstancesList, location_name: "TargetInstances"))
994
1011
  ModifyRecommendationDetail.struct_class = Types::ModifyRecommendationDetail
995
1012
 
@@ -1021,6 +1038,44 @@ module Aws::CostExplorer
1021
1038
  RDSInstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
1022
1039
  RDSInstanceDetails.struct_class = Types::RDSInstanceDetails
1023
1040
 
1041
+ RecommendationDetailData.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
1042
+ RecommendationDetailData.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
1043
+ RecommendationDetailData.add_member(:savings_plans_type, Shapes::ShapeRef.new(shape: SupportedSavingsPlansType, location_name: "SavingsPlansType"))
1044
+ RecommendationDetailData.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
1045
+ RecommendationDetailData.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
1046
+ RecommendationDetailData.add_member(:account_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "AccountId"))
1047
+ RecommendationDetailData.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
1048
+ RecommendationDetailData.add_member(:instance_family, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceFamily"))
1049
+ RecommendationDetailData.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
1050
+ RecommendationDetailData.add_member(:offering_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "OfferingId"))
1051
+ RecommendationDetailData.add_member(:generation_timestamp, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "GenerationTimestamp"))
1052
+ RecommendationDetailData.add_member(:latest_usage_timestamp, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "LatestUsageTimestamp"))
1053
+ RecommendationDetailData.add_member(:current_average_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageHourlyOnDemandSpend"))
1054
+ RecommendationDetailData.add_member(:current_maximum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMaximumHourlyOnDemandSpend"))
1055
+ RecommendationDetailData.add_member(:current_minimum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMinimumHourlyOnDemandSpend"))
1056
+ RecommendationDetailData.add_member(:estimated_average_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedAverageUtilization"))
1057
+ RecommendationDetailData.add_member(:estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsAmount"))
1058
+ RecommendationDetailData.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCost"))
1059
+ RecommendationDetailData.add_member(:estimated_on_demand_cost_with_current_commitment, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCostWithCurrentCommitment"))
1060
+ RecommendationDetailData.add_member(:estimated_roi, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedROI"))
1061
+ RecommendationDetailData.add_member(:estimated_sp_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSPCost"))
1062
+ RecommendationDetailData.add_member(:estimated_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSavingsAmount"))
1063
+ RecommendationDetailData.add_member(:estimated_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSavingsPercentage"))
1064
+ RecommendationDetailData.add_member(:existing_hourly_commitment, Shapes::ShapeRef.new(shape: GenericString, location_name: "ExistingHourlyCommitment"))
1065
+ RecommendationDetailData.add_member(:hourly_commitment_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "HourlyCommitmentToPurchase"))
1066
+ RecommendationDetailData.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "UpfrontCost"))
1067
+ RecommendationDetailData.add_member(:current_average_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageCoverage"))
1068
+ RecommendationDetailData.add_member(:estimated_average_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedAverageCoverage"))
1069
+ RecommendationDetailData.add_member(:metrics_over_lookback_period, Shapes::ShapeRef.new(shape: MetricsOverLookbackPeriod, location_name: "MetricsOverLookbackPeriod"))
1070
+ RecommendationDetailData.struct_class = Types::RecommendationDetailData
1071
+
1072
+ RecommendationDetailHourlyMetrics.add_member(:start_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "StartTime"))
1073
+ RecommendationDetailHourlyMetrics.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCost"))
1074
+ RecommendationDetailHourlyMetrics.add_member(:current_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentCoverage"))
1075
+ RecommendationDetailHourlyMetrics.add_member(:estimated_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedCoverage"))
1076
+ RecommendationDetailHourlyMetrics.add_member(:estimated_new_commitment_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedNewCommitmentUtilization"))
1077
+ RecommendationDetailHourlyMetrics.struct_class = Types::RecommendationDetailHourlyMetrics
1078
+
1024
1079
  RecommendationIdList.member = Shapes::ShapeRef.new(shape: RecommendationId)
1025
1080
 
1026
1081
  RedshiftInstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
@@ -1220,6 +1275,7 @@ module Aws::CostExplorer
1220
1275
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_minimum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMinimumHourlyOnDemandSpend"))
1221
1276
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_maximum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMaximumHourlyOnDemandSpend"))
1222
1277
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_average_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageHourlyOnDemandSpend"))
1278
+ SavingsPlansPurchaseRecommendationDetail.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, location_name: "RecommendationDetailId"))
1223
1279
  SavingsPlansPurchaseRecommendationDetail.struct_class = Types::SavingsPlansPurchaseRecommendationDetail
1224
1280
 
1225
1281
  SavingsPlansPurchaseRecommendationDetailList.member = Shapes::ShapeRef.new(shape: SavingsPlansPurchaseRecommendationDetail)
@@ -1633,6 +1689,16 @@ module Aws::CostExplorer
1633
1689
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
1634
1690
  end)
1635
1691
 
1692
+ api.add_operation(:get_savings_plan_purchase_recommendation_details, Seahorse::Model::Operation.new.tap do |o|
1693
+ o.name = "GetSavingsPlanPurchaseRecommendationDetails"
1694
+ o.http_method = "POST"
1695
+ o.http_request_uri = "/"
1696
+ o.input = Shapes::ShapeRef.new(shape: GetSavingsPlanPurchaseRecommendationDetailsRequest)
1697
+ o.output = Shapes::ShapeRef.new(shape: GetSavingsPlanPurchaseRecommendationDetailsResponse)
1698
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1699
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1700
+ end)
1701
+
1636
1702
  api.add_operation(:get_savings_plans_coverage, Seahorse::Model::Operation.new.tap do |o|
1637
1703
  o.name = "GetSavingsPlansCoverage"
1638
1704
  o.http_method = "POST"
@@ -1750,6 +1816,7 @@ module Aws::CostExplorer
1750
1816
  o.output = Shapes::ShapeRef.new(shape: ListSavingsPlansPurchaseRecommendationGenerationResponse)
1751
1817
  o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1752
1818
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
1819
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1753
1820
  end)
1754
1821
 
1755
1822
  api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
@@ -1780,6 +1847,7 @@ module Aws::CostExplorer
1780
1847
  o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1781
1848
  o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
1782
1849
  o.errors << Shapes::ShapeRef.new(shape: GenerationExistsException)
1850
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1783
1851
  end)
1784
1852
 
1785
1853
  api.add_operation(:tag_resource, Seahorse::Model::Operation.new.tap do |o|
@@ -50,9 +50,6 @@ module Aws::CostExplorer
50
50
 
51
51
  def initialize(options = {})
52
52
  self[:region] = options[:region]
53
- if self[:region].nil?
54
- raise ArgumentError, "Missing required EndpointParameter: :region"
55
- end
56
53
  self[:use_dual_stack] = options[:use_dual_stack]
57
54
  self[:use_dual_stack] = false if self[:use_dual_stack].nil?
58
55
  if self[:use_dual_stack].nil?
@@ -14,84 +14,45 @@ module Aws::CostExplorer
14
14
  use_dual_stack = parameters.use_dual_stack
15
15
  use_fips = parameters.use_fips
16
16
  endpoint = parameters.endpoint
17
- if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
18
- if Aws::Endpoints::Matchers.set?(endpoint)
19
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
20
- raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
21
- end
22
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
23
- raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
24
- end
25
- return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
17
+ if Aws::Endpoints::Matchers.set?(endpoint)
18
+ if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
19
+ raise ArgumentError, "Invalid Configuration: FIPS and custom endpoint are not supported"
26
20
  end
27
- if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws")
28
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
29
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
30
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer-fips.#{region}.api.aws", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"us-east-1", "signingName"=>"ce"}]})
31
- end
32
- raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
33
- end
34
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
35
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
36
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer-fips.#{region}.amazonaws.com", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"us-east-1", "signingName"=>"ce"}]})
37
- end
38
- raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
21
+ if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
22
+ raise ArgumentError, "Invalid Configuration: Dualstack and custom endpoint are not supported"
23
+ end
24
+ return Aws::Endpoints::Endpoint.new(url: endpoint, headers: {}, properties: {})
25
+ end
26
+ if Aws::Endpoints::Matchers.set?(region)
27
+ if (partition_result = Aws::Endpoints::Matchers.aws_partition(region))
28
+ if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws") && Aws::Endpoints::Matchers.boolean_equals?(use_fips, false) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, false)
29
+ return Aws::Endpoints::Endpoint.new(url: "https://ce.us-east-1.amazonaws.com", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"ce", "signingRegion"=>"us-east-1"}]})
39
30
  end
40
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
41
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
42
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer.#{region}.api.aws", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"us-east-1", "signingName"=>"ce"}]})
43
- end
44
- raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
31
+ if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-cn") && Aws::Endpoints::Matchers.boolean_equals?(use_fips, false) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, false)
32
+ return Aws::Endpoints::Endpoint.new(url: "https://ce.cn-northwest-1.amazonaws.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingName"=>"ce", "signingRegion"=>"cn-northwest-1"}]})
45
33
  end
46
- return Aws::Endpoints::Endpoint.new(url: "https://ce.us-east-1.amazonaws.com", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"us-east-1", "signingName"=>"ce"}]})
47
- end
48
- if Aws::Endpoints::Matchers.string_equals?(Aws::Endpoints::Matchers.attr(partition_result, "name"), "aws-cn")
49
34
  if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
50
35
  if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
51
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer-fips.#{region}.api.amazonwebservices.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"cn-northwest-1", "signingName"=>"ce"}]})
36
+ return Aws::Endpoints::Endpoint.new(url: "https://ce-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
52
37
  end
53
38
  raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
54
39
  end
55
40
  if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
56
41
  if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
57
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer-fips.#{region}.amazonaws.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"cn-northwest-1", "signingName"=>"ce"}]})
42
+ return Aws::Endpoints::Endpoint.new(url: "https://ce-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
58
43
  end
59
44
  raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
60
45
  end
61
46
  if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
62
47
  if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
63
- return Aws::Endpoints::Endpoint.new(url: "https://cost-explorer.#{region}.api.amazonwebservices.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"cn-northwest-1", "signingName"=>"ce"}]})
48
+ return Aws::Endpoints::Endpoint.new(url: "https://ce.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
64
49
  end
65
50
  raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
66
51
  end
67
- return Aws::Endpoints::Endpoint.new(url: "https://ce.cn-northwest-1.amazonaws.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"cn-northwest-1", "signingName"=>"ce"}]})
68
- end
69
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true) && Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
70
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS")) && Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
71
- return Aws::Endpoints::Endpoint.new(url: "https://ce-fips.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
72
- end
73
- raise ArgumentError, "FIPS and DualStack are enabled, but this partition does not support one or both"
74
- end
75
- if Aws::Endpoints::Matchers.boolean_equals?(use_fips, true)
76
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsFIPS"))
77
- return Aws::Endpoints::Endpoint.new(url: "https://ce-fips.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
78
- end
79
- raise ArgumentError, "FIPS is enabled but this partition does not support FIPS"
80
- end
81
- if Aws::Endpoints::Matchers.boolean_equals?(use_dual_stack, true)
82
- if Aws::Endpoints::Matchers.boolean_equals?(true, Aws::Endpoints::Matchers.attr(partition_result, "supportsDualStack"))
83
- return Aws::Endpoints::Endpoint.new(url: "https://ce.#{region}.#{partition_result['dualStackDnsSuffix']}", headers: {}, properties: {})
84
- end
85
- raise ArgumentError, "DualStack is enabled but this partition does not support DualStack"
86
- end
87
- if Aws::Endpoints::Matchers.string_equals?(region, "aws-global")
88
- return Aws::Endpoints::Endpoint.new(url: "https://ce.us-east-1.amazonaws.com", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"us-east-1", "signingName"=>"ce"}]})
89
- end
90
- if Aws::Endpoints::Matchers.string_equals?(region, "aws-cn-global")
91
- return Aws::Endpoints::Endpoint.new(url: "https://ce.cn-northwest-1.amazonaws.com.cn", headers: {}, properties: {"authSchemes"=>[{"name"=>"sigv4", "signingRegion"=>"cn-northwest-1", "signingName"=>"ce"}]})
52
+ return Aws::Endpoints::Endpoint.new(url: "https://ce.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
92
53
  end
93
- return Aws::Endpoints::Endpoint.new(url: "https://ce.#{region}.#{partition_result['dnsSuffix']}", headers: {}, properties: {})
94
54
  end
55
+ raise ArgumentError, "Invalid Configuration: Missing Region"
95
56
  raise ArgumentError, 'No endpoint could be resolved'
96
57
 
97
58
  end
@@ -278,6 +278,20 @@ module Aws::CostExplorer
278
278
  end
279
279
  end
280
280
 
281
+ class GetSavingsPlanPurchaseRecommendationDetails
282
+ def self.build(context)
283
+ unless context.config.regional_endpoint
284
+ endpoint = context.config.endpoint.to_s
285
+ end
286
+ Aws::CostExplorer::EndpointParameters.new(
287
+ region: context.config.region,
288
+ use_dual_stack: context.config.use_dualstack_endpoint,
289
+ use_fips: context.config.use_fips_endpoint,
290
+ endpoint: endpoint,
291
+ )
292
+ end
293
+ end
294
+
281
295
  class GetSavingsPlansCoverage
282
296
  def self.build(context)
283
297
  unless context.config.regional_endpoint
@@ -94,6 +94,8 @@ module Aws::CostExplorer
94
94
  Aws::CostExplorer::Endpoints::GetReservationUtilization.build(context)
95
95
  when :get_rightsizing_recommendation
96
96
  Aws::CostExplorer::Endpoints::GetRightsizingRecommendation.build(context)
97
+ when :get_savings_plan_purchase_recommendation_details
98
+ Aws::CostExplorer::Endpoints::GetSavingsPlanPurchaseRecommendationDetails.build(context)
97
99
  when :get_savings_plans_coverage
98
100
  Aws::CostExplorer::Endpoints::GetSavingsPlansCoverage.build(context)
99
101
  when :get_savings_plans_purchase_recommendation
@@ -151,7 +151,7 @@ module Aws::CostExplorer
151
151
  #
152
152
  # * The corresponding `Expression` for this example is as follows:
153
153
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
154
- # us-west-1 ] \} \}`
154
+ # "us-west-1" ] \} \}`
155
155
  #
156
156
  # * As shown in the previous example, lists of dimension values
157
157
  # are combined with `OR` when applying the filter.
@@ -162,7 +162,7 @@ module Aws::CostExplorer
162
162
  # supported.
163
163
  #
164
164
  # * For example, you can filter for linked account names that
165
- # start with a”.
165
+ # start with "a".
166
166
  #
167
167
  # * The corresponding `Expression` for this example is as follows:
168
168
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -256,10 +256,27 @@ module Aws::CostExplorer
256
256
  include Aws::Structure
257
257
  end
258
258
 
259
- # The association between a monitor, threshold, and list of subscribers
260
- # used to deliver notifications about anomalies detected by a monitor
261
- # that exceeds a threshold. The content consists of the detailed
262
- # metadata and the current status of the `AnomalySubscription` object.
259
+ # An `AnomalySubscription` resource (also referred to as an alert
260
+ # subscription) sends notifications about specific anomalies that meet
261
+ # an alerting criteria defined by you.
262
+ #
263
+ # You can specify the frequency of the alerts and the subscribers to
264
+ # notify.
265
+ #
266
+ # Anomaly subscriptions can be associated with one or more [
267
+ # `AnomalyMonitor` ][1] resources, and they only send notifications
268
+ # about anomalies detected by those associated monitors. You can also
269
+ # configure a threshold to further control which anomalies are included
270
+ # in the notifications.
271
+ #
272
+ # Anomalies that don’t exceed the chosen threshold and therefore don’t
273
+ # trigger notifications from an anomaly subscription will still be
274
+ # available on the console and from the [ `GetAnomalies` ][2] API.
275
+ #
276
+ #
277
+ #
278
+ # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_AnomalyMonitor.html
279
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_GetAnomalies.html
263
280
  #
264
281
  # @!attribute [rw] subscription_arn
265
282
  # The `AnomalySubscription` Amazon Resource Name (ARN).
@@ -280,19 +297,31 @@ module Aws::CostExplorer
280
297
  # @!attribute [rw] threshold
281
298
  # (deprecated)
282
299
  #
283
- # The dollar value that triggers a notification if the threshold is
284
- # exceeded.
300
+ # An absolute dollar value that must be exceeded by the anomaly's
301
+ # total impact (see [Impact][1] for more details) for an anomaly
302
+ # notification to be generated.
285
303
  #
286
304
  # This field has been deprecated. To specify a threshold, use
287
305
  # ThresholdExpression. Continued use of Threshold will be treated as
288
306
  # shorthand syntax for a ThresholdExpression.
289
307
  #
290
308
  # One of Threshold or ThresholdExpression is required for this
291
- # resource.
309
+ # resource. You cannot specify both.
310
+ #
311
+ #
312
+ #
313
+ # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
292
314
  # @return [Float]
293
315
  #
294
316
  # @!attribute [rw] frequency
295
- # The frequency that anomaly reports are sent over email.
317
+ # The frequency that anomaly notifications are sent. Notifications are
318
+ # sent either over email (for DAILY and WEEKLY frequencies) or SNS
319
+ # (for IMMEDIATE frequency). For more information, see [Creating an
320
+ # Amazon SNS topic for anomaly notifications][1].
321
+ #
322
+ #
323
+ #
324
+ # [1]: https://docs.aws.amazon.com/cost-management/latest/userguide/ad-SNS.html
296
325
  # @return [String]
297
326
  #
298
327
  # @!attribute [rw] subscription_name
@@ -304,12 +333,15 @@ module Aws::CostExplorer
304
333
  # want to generate alerts for. This supports dimensions and nested
305
334
  # expressions. The supported dimensions are
306
335
  # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and
307
- # `ANOMALY_TOTAL_IMPACT_PERCENTAGE`. The supported nested expression
308
- # types are `AND` and `OR`. The match option `GREATER_THAN_OR_EQUAL`
309
- # is required. Values must be numbers between 0 and 10,000,000,000.
336
+ # `ANOMALY_TOTAL_IMPACT_PERCENTAGE`, corresponding to an anomaly’s
337
+ # TotalImpact and TotalImpactPercentage, respectively (see [Impact][2]
338
+ # for more details). The supported nested expression types are `AND`
339
+ # and `OR`. The match option `GREATER_THAN_OR_EQUAL` is required.
340
+ # Values must be numbers between 0 and 10,000,000,000 in string
341
+ # format.
310
342
  #
311
343
  # One of Threshold or ThresholdExpression is required for this
312
- # resource.
344
+ # resource. You cannot specify both.
313
345
  #
314
346
  # The following are examples of valid ThresholdExpressions:
315
347
  #
@@ -338,6 +370,7 @@ module Aws::CostExplorer
338
370
  #
339
371
  #
340
372
  # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html
373
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
341
374
  # @return [Types::Expression]
342
375
  #
343
376
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/AnomalySubscription AWS API Documentation
@@ -387,12 +420,23 @@ module Aws::CostExplorer
387
420
  # The status of a cost allocation tag.
388
421
  # @return [String]
389
422
  #
423
+ # @!attribute [rw] last_updated_date
424
+ # The last date that the tag was either activated or deactivated.
425
+ # @return [String]
426
+ #
427
+ # @!attribute [rw] last_used_date
428
+ # The last month that the tag was used on an Amazon Web Services
429
+ # resource.
430
+ # @return [String]
431
+ #
390
432
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CostAllocationTag AWS API Documentation
391
433
  #
392
434
  class CostAllocationTag < Struct.new(
393
435
  :tag_key,
394
436
  :type,
395
- :status)
437
+ :status,
438
+ :last_updated_date,
439
+ :last_used_date)
396
440
  SENSITIVE = []
397
441
  include Aws::Structure
398
442
  end
@@ -593,10 +637,7 @@ module Aws::CostExplorer
593
637
  # An [Expression][1] object used to categorize costs. This supports
594
638
  # dimensions, tags, and nested expressions. Currently the only
595
639
  # dimensions supported are `LINKED_ACCOUNT`, `SERVICE_CODE`,
596
- # `RECORD_TYPE`, and `LINKED_ACCOUNT_NAME`.
597
- #
598
- # Root level `OR` isn't supported. We recommend that you create a
599
- # separate rule instead.
640
+ # `RECORD_TYPE`, `LINKED_ACCOUNT_NAME`, `REGION`, and `USAGE_TYPE`.
600
641
  #
601
642
  # `RECORD_TYPE` is a dimension used for Cost Explorer APIs, and is
602
643
  # also supported for Cost Category expressions. This dimension uses
@@ -1705,7 +1746,7 @@ module Aws::CostExplorer
1705
1746
  #
1706
1747
  # * The corresponding `Expression` for this example is as follows:
1707
1748
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1708
- # us-west-1 ] \} \}`
1749
+ # "us-west-1" ] \} \}`
1709
1750
  #
1710
1751
  # * As shown in the previous example, lists of dimension values are
1711
1752
  # combined with `OR` when applying the filter.
@@ -1715,7 +1756,7 @@ module Aws::CostExplorer
1715
1756
  # the documentation for each specific API to see what is supported.
1716
1757
  #
1717
1758
  # * For example, you can filter for linked account names that start
1718
- # with a”.
1759
+ # with "a".
1719
1760
  #
1720
1761
  # * The corresponding `Expression` for this example is as follows:
1721
1762
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2334,7 +2375,7 @@ module Aws::CostExplorer
2334
2375
  #
2335
2376
  # * The corresponding `Expression` for this example is as follows:
2336
2377
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2337
- # us-west-1 ] \} \}`
2378
+ # "us-west-1" ] \} \}`
2338
2379
  #
2339
2380
  # * As shown in the previous example, lists of dimension values
2340
2381
  # are combined with `OR` when applying the filter.
@@ -2345,7 +2386,7 @@ module Aws::CostExplorer
2345
2386
  # supported.
2346
2387
  #
2347
2388
  # * For example, you can filter for linked account names that
2348
- # start with a”.
2389
+ # start with "a".
2349
2390
  #
2350
2391
  # * The corresponding `Expression` for this example is as follows:
2351
2392
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2831,7 +2872,7 @@ module Aws::CostExplorer
2831
2872
  #
2832
2873
  # * The corresponding `Expression` for this example is as follows:
2833
2874
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2834
- # us-west-1 ] \} \}`
2875
+ # "us-west-1" ] \} \}`
2835
2876
  #
2836
2877
  # * As shown in the previous example, lists of dimension values
2837
2878
  # are combined with `OR` when applying the filter.
@@ -2842,7 +2883,7 @@ module Aws::CostExplorer
2842
2883
  # supported.
2843
2884
  #
2844
2885
  # * For example, you can filter for linked account names that
2845
- # start with a”.
2886
+ # start with "a".
2846
2887
  #
2847
2888
  # * The corresponding `Expression` for this example is as follows:
2848
2889
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3306,7 +3347,7 @@ module Aws::CostExplorer
3306
3347
  #
3307
3348
  # * The corresponding `Expression` for this example is as follows:
3308
3349
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3309
- # us-west-1 ] \} \}`
3350
+ # "us-west-1" ] \} \}`
3310
3351
  #
3311
3352
  # * As shown in the previous example, lists of dimension values
3312
3353
  # are combined with `OR` when applying the filter.
@@ -3317,7 +3358,7 @@ module Aws::CostExplorer
3317
3358
  # supported.
3318
3359
  #
3319
3360
  # * For example, you can filter for linked account names that
3320
- # start with a”.
3361
+ # start with "a".
3321
3362
  #
3322
3363
  # * The corresponding `Expression` for this example is as follows:
3323
3364
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3634,7 +3675,7 @@ module Aws::CostExplorer
3634
3675
  #
3635
3676
  # * The corresponding `Expression` for this example is as follows:
3636
3677
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3637
- # us-west-1 ] \} \}`
3678
+ # "us-west-1" ] \} \}`
3638
3679
  #
3639
3680
  # * As shown in the previous example, lists of dimension values
3640
3681
  # are combined with `OR` when applying the filter.
@@ -3645,7 +3686,7 @@ module Aws::CostExplorer
3645
3686
  # supported.
3646
3687
  #
3647
3688
  # * For example, you can filter for linked account names that
3648
- # start with a”.
3689
+ # start with "a".
3649
3690
  #
3650
3691
  # * The corresponding `Expression` for this example is as follows:
3651
3692
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3772,6 +3813,36 @@ module Aws::CostExplorer
3772
3813
  include Aws::Structure
3773
3814
  end
3774
3815
 
3816
+ # @!attribute [rw] recommendation_detail_id
3817
+ # The ID that is associated with the Savings Plan recommendation.
3818
+ # @return [String]
3819
+ #
3820
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlanPurchaseRecommendationDetailsRequest AWS API Documentation
3821
+ #
3822
+ class GetSavingsPlanPurchaseRecommendationDetailsRequest < Struct.new(
3823
+ :recommendation_detail_id)
3824
+ SENSITIVE = []
3825
+ include Aws::Structure
3826
+ end
3827
+
3828
+ # @!attribute [rw] recommendation_detail_id
3829
+ # The ID that is associated with the Savings Plan recommendation.
3830
+ # @return [String]
3831
+ #
3832
+ # @!attribute [rw] recommendation_detail_data
3833
+ # Contains detailed information about a specific Savings Plan
3834
+ # recommendation.
3835
+ # @return [Types::RecommendationDetailData]
3836
+ #
3837
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlanPurchaseRecommendationDetailsResponse AWS API Documentation
3838
+ #
3839
+ class GetSavingsPlanPurchaseRecommendationDetailsResponse < Struct.new(
3840
+ :recommendation_detail_id,
3841
+ :recommendation_detail_data)
3842
+ SENSITIVE = []
3843
+ include Aws::Structure
3844
+ end
3845
+
3775
3846
  # @!attribute [rw] time_period
3776
3847
  # The time period that you want the usage and costs for. The `Start`
3777
3848
  # date must be within 13 months. The `End` date must be after the
@@ -4228,7 +4299,7 @@ module Aws::CostExplorer
4228
4299
  #
4229
4300
  # * The corresponding `Expression` for this example is as follows:
4230
4301
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
4231
- # us-west-1 ] \} \}`
4302
+ # "us-west-1" ] \} \}`
4232
4303
  #
4233
4304
  # * As shown in the previous example, lists of dimension values
4234
4305
  # are combined with `OR` when applying the filter.
@@ -4239,7 +4310,7 @@ module Aws::CostExplorer
4239
4310
  # supported.
4240
4311
  #
4241
4312
  # * For example, you can filter for linked account names that
4242
- # start with a”.
4313
+ # start with "a".
4243
4314
  #
4244
4315
  # * The corresponding `Expression` for this example is as follows:
4245
4316
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -4982,6 +5053,221 @@ module Aws::CostExplorer
4982
5053
  include Aws::Structure
4983
5054
  end
4984
5055
 
5056
+ # The details and metrics for the given recommendation.
5057
+ #
5058
+ # @!attribute [rw] account_scope
5059
+ # The account scope that you want your recommendations for. Amazon Web
5060
+ # Services calculates recommendations including the management account
5061
+ # and member accounts if the value is set to PAYER. If the value is
5062
+ # LINKED, recommendations are calculated for individual member
5063
+ # accounts only.
5064
+ # @return [String]
5065
+ #
5066
+ # @!attribute [rw] lookback_period_in_days
5067
+ # How many days of previous usage that Amazon Web Services considers
5068
+ # when making this recommendation.
5069
+ # @return [String]
5070
+ #
5071
+ # @!attribute [rw] savings_plans_type
5072
+ # The requested Savings Plan recommendation type.
5073
+ # @return [String]
5074
+ #
5075
+ # @!attribute [rw] term_in_years
5076
+ # The term of the commitment in years.
5077
+ # @return [String]
5078
+ #
5079
+ # @!attribute [rw] payment_option
5080
+ # The payment option for the commitment (for example, All Upfront or
5081
+ # No Upfront).
5082
+ # @return [String]
5083
+ #
5084
+ # @!attribute [rw] account_id
5085
+ # The AccountID that the recommendation is generated for.
5086
+ # @return [String]
5087
+ #
5088
+ # @!attribute [rw] currency_code
5089
+ # The currency code that Amazon Web Services used to generate the
5090
+ # recommendation and present potential savings.
5091
+ # @return [String]
5092
+ #
5093
+ # @!attribute [rw] instance_family
5094
+ # The instance family of the recommended Savings Plan.
5095
+ # @return [String]
5096
+ #
5097
+ # @!attribute [rw] region
5098
+ # The region the recommendation is generated for.
5099
+ # @return [String]
5100
+ #
5101
+ # @!attribute [rw] offering_id
5102
+ # The unique ID that's used to distinguish Savings Plans from one
5103
+ # another.
5104
+ # @return [String]
5105
+ #
5106
+ # @!attribute [rw] generation_timestamp
5107
+ # The period of time that you want the usage and costs for.
5108
+ # @return [String]
5109
+ #
5110
+ # @!attribute [rw] latest_usage_timestamp
5111
+ # The period of time that you want the usage and costs for.
5112
+ # @return [String]
5113
+ #
5114
+ # @!attribute [rw] current_average_hourly_on_demand_spend
5115
+ # The average value of hourly On-Demand spend over the lookback period
5116
+ # of the applicable usage type.
5117
+ # @return [String]
5118
+ #
5119
+ # @!attribute [rw] current_maximum_hourly_on_demand_spend
5120
+ # The highest value of hourly On-Demand spend over the lookback period
5121
+ # of the applicable usage type.
5122
+ # @return [String]
5123
+ #
5124
+ # @!attribute [rw] current_minimum_hourly_on_demand_spend
5125
+ # The lowest value of hourly On-Demand spend over the lookback period
5126
+ # of the applicable usage type.
5127
+ # @return [String]
5128
+ #
5129
+ # @!attribute [rw] estimated_average_utilization
5130
+ # The estimated utilization of the recommended Savings Plan.
5131
+ # @return [String]
5132
+ #
5133
+ # @!attribute [rw] estimated_monthly_savings_amount
5134
+ # The estimated monthly savings amount based on the recommended
5135
+ # Savings Plan.
5136
+ # @return [String]
5137
+ #
5138
+ # @!attribute [rw] estimated_on_demand_cost
5139
+ # The remaining On-Demand cost estimated to not be covered by the
5140
+ # recommended Savings Plan, over the length of the lookback period.
5141
+ # @return [String]
5142
+ #
5143
+ # @!attribute [rw] estimated_on_demand_cost_with_current_commitment
5144
+ # The estimated On-Demand costs you expect with no additional
5145
+ # commitment, based on your usage of the selected time period and the
5146
+ # Savings Plan you own.
5147
+ # @return [String]
5148
+ #
5149
+ # @!attribute [rw] estimated_roi
5150
+ # The estimated return on investment that's based on the recommended
5151
+ # Savings Plan that you purchased. This is calculated as
5152
+ # estimatedSavingsAmount/estimatedSPCost*100.
5153
+ # @return [String]
5154
+ #
5155
+ # @!attribute [rw] estimated_sp_cost
5156
+ # The cost of the recommended Savings Plan over the length of the
5157
+ # lookback period.
5158
+ # @return [String]
5159
+ #
5160
+ # @!attribute [rw] estimated_savings_amount
5161
+ # The estimated savings amount that's based on the recommended
5162
+ # Savings Plan over the length of the lookback period.
5163
+ # @return [String]
5164
+ #
5165
+ # @!attribute [rw] estimated_savings_percentage
5166
+ # The estimated savings percentage relative to the total cost of
5167
+ # applicable On-Demand usage over the lookback period.
5168
+ # @return [String]
5169
+ #
5170
+ # @!attribute [rw] existing_hourly_commitment
5171
+ # The existing hourly commitment for the Savings Plan type.
5172
+ # @return [String]
5173
+ #
5174
+ # @!attribute [rw] hourly_commitment_to_purchase
5175
+ # The recommended hourly commitment level for the Savings Plan type
5176
+ # and the configuration that's based on the usage during the lookback
5177
+ # period.
5178
+ # @return [String]
5179
+ #
5180
+ # @!attribute [rw] upfront_cost
5181
+ # The upfront cost of the recommended Savings Plan, based on the
5182
+ # selected payment option.
5183
+ # @return [String]
5184
+ #
5185
+ # @!attribute [rw] current_average_coverage
5186
+ # The average value of hourly coverage over the lookback period.
5187
+ # @return [String]
5188
+ #
5189
+ # @!attribute [rw] estimated_average_coverage
5190
+ # The estimated coverage of the recommended Savings Plan.
5191
+ # @return [String]
5192
+ #
5193
+ # @!attribute [rw] metrics_over_lookback_period
5194
+ # The related hourly cost, coverage, and utilization metrics over the
5195
+ # lookback period.
5196
+ # @return [Array<Types::RecommendationDetailHourlyMetrics>]
5197
+ #
5198
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RecommendationDetailData AWS API Documentation
5199
+ #
5200
+ class RecommendationDetailData < Struct.new(
5201
+ :account_scope,
5202
+ :lookback_period_in_days,
5203
+ :savings_plans_type,
5204
+ :term_in_years,
5205
+ :payment_option,
5206
+ :account_id,
5207
+ :currency_code,
5208
+ :instance_family,
5209
+ :region,
5210
+ :offering_id,
5211
+ :generation_timestamp,
5212
+ :latest_usage_timestamp,
5213
+ :current_average_hourly_on_demand_spend,
5214
+ :current_maximum_hourly_on_demand_spend,
5215
+ :current_minimum_hourly_on_demand_spend,
5216
+ :estimated_average_utilization,
5217
+ :estimated_monthly_savings_amount,
5218
+ :estimated_on_demand_cost,
5219
+ :estimated_on_demand_cost_with_current_commitment,
5220
+ :estimated_roi,
5221
+ :estimated_sp_cost,
5222
+ :estimated_savings_amount,
5223
+ :estimated_savings_percentage,
5224
+ :existing_hourly_commitment,
5225
+ :hourly_commitment_to_purchase,
5226
+ :upfront_cost,
5227
+ :current_average_coverage,
5228
+ :estimated_average_coverage,
5229
+ :metrics_over_lookback_period)
5230
+ SENSITIVE = []
5231
+ include Aws::Structure
5232
+ end
5233
+
5234
+ # Contains the hourly metrics for the given recommendation over the
5235
+ # lookback period.
5236
+ #
5237
+ # @!attribute [rw] start_time
5238
+ # The period of time that you want the usage and costs for.
5239
+ # @return [String]
5240
+ #
5241
+ # @!attribute [rw] estimated_on_demand_cost
5242
+ # The remaining On-Demand cost estimated to not be covered by the
5243
+ # recommended Savings Plan, over the length of the lookback period.
5244
+ # @return [String]
5245
+ #
5246
+ # @!attribute [rw] current_coverage
5247
+ # The current amount of Savings Plans eligible usage that the Savings
5248
+ # Plan covered.
5249
+ # @return [String]
5250
+ #
5251
+ # @!attribute [rw] estimated_coverage
5252
+ # The estimated coverage amount based on the recommended Savings Plan.
5253
+ # @return [String]
5254
+ #
5255
+ # @!attribute [rw] estimated_new_commitment_utilization
5256
+ # The estimated utilization for the recommended Savings Plan.
5257
+ # @return [String]
5258
+ #
5259
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RecommendationDetailHourlyMetrics AWS API Documentation
5260
+ #
5261
+ class RecommendationDetailHourlyMetrics < Struct.new(
5262
+ :start_time,
5263
+ :estimated_on_demand_cost,
5264
+ :current_coverage,
5265
+ :estimated_coverage,
5266
+ :estimated_new_commitment_utilization)
5267
+ SENSITIVE = []
5268
+ include Aws::Structure
5269
+ end
5270
+
4985
5271
  # Details about the Amazon Redshift instances that Amazon Web Services
4986
5272
  # recommends that you purchase.
4987
5273
  #
@@ -5945,6 +6231,11 @@ module Aws::CostExplorer
5945
6231
  # of the applicable usage type.
5946
6232
  # @return [String]
5947
6233
  #
6234
+ # @!attribute [rw] recommendation_detail_id
6235
+ # Contains detailed information about a specific Savings Plan
6236
+ # recommendation.
6237
+ # @return [String]
6238
+ #
5948
6239
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/SavingsPlansPurchaseRecommendationDetail AWS API Documentation
5949
6240
  #
5950
6241
  class SavingsPlansPurchaseRecommendationDetail < Struct.new(
@@ -5963,7 +6254,8 @@ module Aws::CostExplorer
5963
6254
  :estimated_monthly_savings_amount,
5964
6255
  :current_minimum_hourly_on_demand_spend,
5965
6256
  :current_maximum_hourly_on_demand_spend,
5966
- :current_average_hourly_on_demand_spend)
6257
+ :current_average_hourly_on_demand_spend,
6258
+ :recommendation_detail_id)
5967
6259
  SENSITIVE = []
5968
6260
  include Aws::Structure
5969
6261
  end
@@ -6640,6 +6932,9 @@ module Aws::CostExplorer
6640
6932
  # This field has been deprecated. To update a threshold, use
6641
6933
  # ThresholdExpression. Continued use of Threshold will be treated as
6642
6934
  # shorthand syntax for a ThresholdExpression.
6935
+ #
6936
+ # You can specify either Threshold or ThresholdExpression, but not
6937
+ # both.
6643
6938
  # @return [Float]
6644
6939
  #
6645
6940
  # @!attribute [rw] frequency
@@ -6664,9 +6959,15 @@ module Aws::CostExplorer
6664
6959
  # anomalies that you want to generate alerts for. This supports
6665
6960
  # dimensions and nested expressions. The supported dimensions are
6666
6961
  # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and
6667
- # `ANOMALY_TOTAL_IMPACT_PERCENTAGE`. The supported nested expression
6668
- # types are `AND` and `OR`. The match option `GREATER_THAN_OR_EQUAL`
6669
- # is required. Values must be numbers between 0 and 10,000,000,000.
6962
+ # `ANOMALY_TOTAL_IMPACT_PERCENTAGE`, corresponding to an anomaly’s
6963
+ # TotalImpact and TotalImpactPercentage, respectively (see [Impact][2]
6964
+ # for more details). The supported nested expression types are `AND`
6965
+ # and `OR`. The match option `GREATER_THAN_OR_EQUAL` is required.
6966
+ # Values must be numbers between 0 and 10,000,000,000 in string
6967
+ # format.
6968
+ #
6969
+ # You can specify either Threshold or ThresholdExpression, but not
6970
+ # both.
6670
6971
  #
6671
6972
  # The following are examples of valid ThresholdExpressions:
6672
6973
  #
@@ -6695,6 +6996,7 @@ module Aws::CostExplorer
6695
6996
  #
6696
6997
  #
6697
6998
  # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html
6999
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
6698
7000
  # @return [Types::Expression]
6699
7001
  #
6700
7002
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/UpdateAnomalySubscriptionRequest AWS API Documentation
@@ -52,6 +52,6 @@ require_relative 'aws-sdk-costexplorer/customizations'
52
52
  # @!group service
53
53
  module Aws::CostExplorer
54
54
 
55
- GEM_VERSION = '1.88.0'
55
+ GEM_VERSION = '1.90.0'
56
56
 
57
57
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-costexplorer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.88.0
4
+ version: 1.90.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Amazon Web Services
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-07-11 00:00:00.000000000 Z
11
+ date: 2023-08-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core