aws-sdk-costexplorer 1.88.0 → 1.89.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: '094f8b338f6e5883fb40f498dbdb21fa505f2ff4e908556cebeb6538abc39f87'
4
+ data.tar.gz: c0e3205a80ccb3760d64cdd601b378912318144e4d79974f4ca795f5b5806de6
5
5
  SHA512:
6
- metadata.gz: 24378c6c155f08118c2a6025a4f507ff8e23f733a3ce4820bf0730fda2323164a56a4cab3393d8b1d997ccd0353438c45f74ec7ac72f8eb41c7ee0a4df658df4
7
- data.tar.gz: 6f079853a626ea781975ed340175781b467c6288c7e8df6444b42fc7eb358877a981c8a954ea7c63ea6bfb635496a597d3f9482ecb8b6878141bac167fb0f4b6
6
+ metadata.gz: 7db8c6acbf859d831e9a68425bfa1a14d90c3052cd0ba515ef5529fa4b68b9e4f05bec913990509cad9713cf62f70a85f4a11aab2bce9be5d0dc03f89db1ac2a
7
+ data.tar.gz: 9f395cc78bb1a510202dce526d1be1d5a159a2c59e0d8b87bc617b29efbeb40f138f3d77ca0479c57c029a832dcc7b2991e99ea1110937bcb677f1a62c59d29a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  Unreleased Changes
2
2
  ------------------
3
3
 
4
+ 1.89.0 (2023-07-24)
5
+ ------------------
6
+
7
+ * 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.
8
+
4
9
  1.88.0 (2023-07-11)
5
10
  ------------------
6
11
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.88.0
1
+ 1.89.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 new cost, coverage,
3359
+ # and 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",
@@ -4771,7 +4837,18 @@ module Aws::CostExplorer
4771
4837
  req.send_request(options)
4772
4838
  end
4773
4839
 
4774
- # Updates an existing cost anomaly monitor subscription.
4840
+ # Updates an existing cost anomaly subscription. Specify the fields that
4841
+ # you want to update. Omitted fields are unchanged.
4842
+ #
4843
+ # <note markdown="1"> The JSON below describes the generic construct for each type. See
4844
+ # [Request Parameters][1] for possible values as they apply to
4845
+ # `AnomalySubscription`.
4846
+ #
4847
+ # </note>
4848
+ #
4849
+ #
4850
+ #
4851
+ # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_UpdateAnomalySubscription.html#API_UpdateAnomalySubscription_RequestParameters
4775
4852
  #
4776
4853
  # @option params [required, String] :subscription_arn
4777
4854
  # A cost anomaly subscription Amazon Resource Name (ARN).
@@ -4785,6 +4862,8 @@ module Aws::CostExplorer
4785
4862
  # ThresholdExpression. Continued use of Threshold will be treated as
4786
4863
  # shorthand syntax for a ThresholdExpression.
4787
4864
  #
4865
+ # You can specify either Threshold or ThresholdExpression, but not both.
4866
+ #
4788
4867
  # @option params [String] :frequency
4789
4868
  # The update to the frequency value that subscribers receive
4790
4869
  # notifications.
@@ -4802,10 +4881,14 @@ module Aws::CostExplorer
4802
4881
  # The update to the [Expression][1] object used to specify the anomalies
4803
4882
  # that you want to generate alerts for. This supports dimensions and
4804
4883
  # 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.
4884
+ # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and `ANOMALY_TOTAL_IMPACT_PERCENTAGE`,
4885
+ # corresponding to an anomaly’s TotalImpact and TotalImpactPercentage,
4886
+ # respectively (see [Impact][2] for more details). The supported nested
4887
+ # expression types are `AND` and `OR`. The match option
4888
+ # `GREATER_THAN_OR_EQUAL` is required. Values must be numbers between 0
4889
+ # and 10,000,000,000 in string format.
4890
+ #
4891
+ # You can specify either Threshold or ThresholdExpression, but not both.
4809
4892
  #
4810
4893
  # The following are examples of valid ThresholdExpressions:
4811
4894
  #
@@ -4834,6 +4917,7 @@ module Aws::CostExplorer
4834
4917
  #
4835
4918
  #
4836
4919
  # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html
4920
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
4837
4921
  #
4838
4922
  # @return [Types::UpdateAnomalySubscriptionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4839
4923
  #
@@ -5066,7 +5150,7 @@ module Aws::CostExplorer
5066
5150
  params: params,
5067
5151
  config: config)
5068
5152
  context[:gem_name] = 'aws-sdk-costexplorer'
5069
- context[:gem_version] = '1.88.0'
5153
+ context[:gem_version] = '1.89.0'
5070
5154
  Seahorse::Client::Request.new(handlers, context)
5071
5155
  end
5072
5156
 
@@ -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')
@@ -830,6 +836,13 @@ module Aws::CostExplorer
830
836
  GetRightsizingRecommendationResponse.add_member(:configuration, Shapes::ShapeRef.new(shape: RightsizingRecommendationConfiguration, location_name: "Configuration"))
831
837
  GetRightsizingRecommendationResponse.struct_class = Types::GetRightsizingRecommendationResponse
832
838
 
839
+ GetSavingsPlanPurchaseRecommendationDetailsRequest.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, required: true, location_name: "RecommendationDetailId"))
840
+ GetSavingsPlanPurchaseRecommendationDetailsRequest.struct_class = Types::GetSavingsPlanPurchaseRecommendationDetailsRequest
841
+
842
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, location_name: "RecommendationDetailId"))
843
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.add_member(:recommendation_detail_data, Shapes::ShapeRef.new(shape: RecommendationDetailData, location_name: "RecommendationDetailData"))
844
+ GetSavingsPlanPurchaseRecommendationDetailsResponse.struct_class = Types::GetSavingsPlanPurchaseRecommendationDetailsResponse
845
+
833
846
  GetSavingsPlansCoverageRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, required: true, location_name: "TimePeriod"))
834
847
  GetSavingsPlansCoverageRequest.add_member(:group_by, Shapes::ShapeRef.new(shape: GroupDefinitions, location_name: "GroupBy"))
835
848
  GetSavingsPlansCoverageRequest.add_member(:granularity, Shapes::ShapeRef.new(shape: Granularity, location_name: "Granularity"))
@@ -990,6 +1003,8 @@ module Aws::CostExplorer
990
1003
  Metrics.key = Shapes::ShapeRef.new(shape: MetricName)
991
1004
  Metrics.value = Shapes::ShapeRef.new(shape: MetricValue)
992
1005
 
1006
+ MetricsOverLookbackPeriod.member = Shapes::ShapeRef.new(shape: RecommendationDetailHourlyMetrics)
1007
+
993
1008
  ModifyRecommendationDetail.add_member(:target_instances, Shapes::ShapeRef.new(shape: TargetInstancesList, location_name: "TargetInstances"))
994
1009
  ModifyRecommendationDetail.struct_class = Types::ModifyRecommendationDetail
995
1010
 
@@ -1021,6 +1036,44 @@ module Aws::CostExplorer
1021
1036
  RDSInstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
1022
1037
  RDSInstanceDetails.struct_class = Types::RDSInstanceDetails
1023
1038
 
1039
+ RecommendationDetailData.add_member(:account_scope, Shapes::ShapeRef.new(shape: AccountScope, location_name: "AccountScope"))
1040
+ RecommendationDetailData.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
1041
+ RecommendationDetailData.add_member(:savings_plans_type, Shapes::ShapeRef.new(shape: SupportedSavingsPlansType, location_name: "SavingsPlansType"))
1042
+ RecommendationDetailData.add_member(:term_in_years, Shapes::ShapeRef.new(shape: TermInYears, location_name: "TermInYears"))
1043
+ RecommendationDetailData.add_member(:payment_option, Shapes::ShapeRef.new(shape: PaymentOption, location_name: "PaymentOption"))
1044
+ RecommendationDetailData.add_member(:account_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "AccountId"))
1045
+ RecommendationDetailData.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
1046
+ RecommendationDetailData.add_member(:instance_family, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceFamily"))
1047
+ RecommendationDetailData.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
1048
+ RecommendationDetailData.add_member(:offering_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "OfferingId"))
1049
+ RecommendationDetailData.add_member(:generation_timestamp, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "GenerationTimestamp"))
1050
+ RecommendationDetailData.add_member(:latest_usage_timestamp, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "LatestUsageTimestamp"))
1051
+ RecommendationDetailData.add_member(:current_average_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageHourlyOnDemandSpend"))
1052
+ RecommendationDetailData.add_member(:current_maximum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMaximumHourlyOnDemandSpend"))
1053
+ RecommendationDetailData.add_member(:current_minimum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMinimumHourlyOnDemandSpend"))
1054
+ RecommendationDetailData.add_member(:estimated_average_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedAverageUtilization"))
1055
+ RecommendationDetailData.add_member(:estimated_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavingsAmount"))
1056
+ RecommendationDetailData.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCost"))
1057
+ RecommendationDetailData.add_member(:estimated_on_demand_cost_with_current_commitment, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCostWithCurrentCommitment"))
1058
+ RecommendationDetailData.add_member(:estimated_roi, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedROI"))
1059
+ RecommendationDetailData.add_member(:estimated_sp_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSPCost"))
1060
+ RecommendationDetailData.add_member(:estimated_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSavingsAmount"))
1061
+ RecommendationDetailData.add_member(:estimated_savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedSavingsPercentage"))
1062
+ RecommendationDetailData.add_member(:existing_hourly_commitment, Shapes::ShapeRef.new(shape: GenericString, location_name: "ExistingHourlyCommitment"))
1063
+ RecommendationDetailData.add_member(:hourly_commitment_to_purchase, Shapes::ShapeRef.new(shape: GenericString, location_name: "HourlyCommitmentToPurchase"))
1064
+ RecommendationDetailData.add_member(:upfront_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "UpfrontCost"))
1065
+ RecommendationDetailData.add_member(:current_average_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageCoverage"))
1066
+ RecommendationDetailData.add_member(:estimated_average_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedAverageCoverage"))
1067
+ RecommendationDetailData.add_member(:metrics_over_lookback_period, Shapes::ShapeRef.new(shape: MetricsOverLookbackPeriod, location_name: "MetricsOverLookbackPeriod"))
1068
+ RecommendationDetailData.struct_class = Types::RecommendationDetailData
1069
+
1070
+ RecommendationDetailHourlyMetrics.add_member(:start_time, Shapes::ShapeRef.new(shape: ZonedDateTime, location_name: "StartTime"))
1071
+ RecommendationDetailHourlyMetrics.add_member(:estimated_on_demand_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedOnDemandCost"))
1072
+ RecommendationDetailHourlyMetrics.add_member(:current_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentCoverage"))
1073
+ RecommendationDetailHourlyMetrics.add_member(:estimated_coverage, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedCoverage"))
1074
+ RecommendationDetailHourlyMetrics.add_member(:estimated_new_commitment_utilization, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedNewCommitmentUtilization"))
1075
+ RecommendationDetailHourlyMetrics.struct_class = Types::RecommendationDetailHourlyMetrics
1076
+
1024
1077
  RecommendationIdList.member = Shapes::ShapeRef.new(shape: RecommendationId)
1025
1078
 
1026
1079
  RedshiftInstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
@@ -1220,6 +1273,7 @@ module Aws::CostExplorer
1220
1273
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_minimum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMinimumHourlyOnDemandSpend"))
1221
1274
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_maximum_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentMaximumHourlyOnDemandSpend"))
1222
1275
  SavingsPlansPurchaseRecommendationDetail.add_member(:current_average_hourly_on_demand_spend, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrentAverageHourlyOnDemandSpend"))
1276
+ SavingsPlansPurchaseRecommendationDetail.add_member(:recommendation_detail_id, Shapes::ShapeRef.new(shape: RecommendationDetailId, location_name: "RecommendationDetailId"))
1223
1277
  SavingsPlansPurchaseRecommendationDetail.struct_class = Types::SavingsPlansPurchaseRecommendationDetail
1224
1278
 
1225
1279
  SavingsPlansPurchaseRecommendationDetailList.member = Shapes::ShapeRef.new(shape: SavingsPlansPurchaseRecommendationDetail)
@@ -1633,6 +1687,16 @@ module Aws::CostExplorer
1633
1687
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
1634
1688
  end)
1635
1689
 
1690
+ api.add_operation(:get_savings_plan_purchase_recommendation_details, Seahorse::Model::Operation.new.tap do |o|
1691
+ o.name = "GetSavingsPlanPurchaseRecommendationDetails"
1692
+ o.http_method = "POST"
1693
+ o.http_request_uri = "/"
1694
+ o.input = Shapes::ShapeRef.new(shape: GetSavingsPlanPurchaseRecommendationDetailsRequest)
1695
+ o.output = Shapes::ShapeRef.new(shape: GetSavingsPlanPurchaseRecommendationDetailsResponse)
1696
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1697
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1698
+ end)
1699
+
1636
1700
  api.add_operation(:get_savings_plans_coverage, Seahorse::Model::Operation.new.tap do |o|
1637
1701
  o.name = "GetSavingsPlansCoverage"
1638
1702
  o.http_method = "POST"
@@ -1750,6 +1814,7 @@ module Aws::CostExplorer
1750
1814
  o.output = Shapes::ShapeRef.new(shape: ListSavingsPlansPurchaseRecommendationGenerationResponse)
1751
1815
  o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1752
1816
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
1817
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1753
1818
  end)
1754
1819
 
1755
1820
  api.add_operation(:list_tags_for_resource, Seahorse::Model::Operation.new.tap do |o|
@@ -1780,6 +1845,7 @@ module Aws::CostExplorer
1780
1845
  o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
1781
1846
  o.errors << Shapes::ShapeRef.new(shape: ServiceQuotaExceededException)
1782
1847
  o.errors << Shapes::ShapeRef.new(shape: GenerationExistsException)
1848
+ o.errors << Shapes::ShapeRef.new(shape: DataUnavailableException)
1783
1849
  end)
1784
1850
 
1785
1851
  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
@@ -593,10 +626,7 @@ module Aws::CostExplorer
593
626
  # An [Expression][1] object used to categorize costs. This supports
594
627
  # dimensions, tags, and nested expressions. Currently the only
595
628
  # 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.
629
+ # `RECORD_TYPE`, `LINKED_ACCOUNT_NAME`, `REGION`, and `USAGE_TYPE`.
600
630
  #
601
631
  # `RECORD_TYPE` is a dimension used for Cost Explorer APIs, and is
602
632
  # also supported for Cost Category expressions. This dimension uses
@@ -1705,7 +1735,7 @@ module Aws::CostExplorer
1705
1735
  #
1706
1736
  # * The corresponding `Expression` for this example is as follows:
1707
1737
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1708
- # us-west-1 ] \} \}`
1738
+ # "us-west-1" ] \} \}`
1709
1739
  #
1710
1740
  # * As shown in the previous example, lists of dimension values are
1711
1741
  # combined with `OR` when applying the filter.
@@ -1715,7 +1745,7 @@ module Aws::CostExplorer
1715
1745
  # the documentation for each specific API to see what is supported.
1716
1746
  #
1717
1747
  # * For example, you can filter for linked account names that start
1718
- # with a”.
1748
+ # with "a".
1719
1749
  #
1720
1750
  # * The corresponding `Expression` for this example is as follows:
1721
1751
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2334,7 +2364,7 @@ module Aws::CostExplorer
2334
2364
  #
2335
2365
  # * The corresponding `Expression` for this example is as follows:
2336
2366
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2337
- # us-west-1 ] \} \}`
2367
+ # "us-west-1" ] \} \}`
2338
2368
  #
2339
2369
  # * As shown in the previous example, lists of dimension values
2340
2370
  # are combined with `OR` when applying the filter.
@@ -2345,7 +2375,7 @@ module Aws::CostExplorer
2345
2375
  # supported.
2346
2376
  #
2347
2377
  # * For example, you can filter for linked account names that
2348
- # start with a”.
2378
+ # start with "a".
2349
2379
  #
2350
2380
  # * The corresponding `Expression` for this example is as follows:
2351
2381
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2831,7 +2861,7 @@ module Aws::CostExplorer
2831
2861
  #
2832
2862
  # * The corresponding `Expression` for this example is as follows:
2833
2863
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2834
- # us-west-1 ] \} \}`
2864
+ # "us-west-1" ] \} \}`
2835
2865
  #
2836
2866
  # * As shown in the previous example, lists of dimension values
2837
2867
  # are combined with `OR` when applying the filter.
@@ -2842,7 +2872,7 @@ module Aws::CostExplorer
2842
2872
  # supported.
2843
2873
  #
2844
2874
  # * For example, you can filter for linked account names that
2845
- # start with a”.
2875
+ # start with "a".
2846
2876
  #
2847
2877
  # * The corresponding `Expression` for this example is as follows:
2848
2878
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3306,7 +3336,7 @@ module Aws::CostExplorer
3306
3336
  #
3307
3337
  # * The corresponding `Expression` for this example is as follows:
3308
3338
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3309
- # us-west-1 ] \} \}`
3339
+ # "us-west-1" ] \} \}`
3310
3340
  #
3311
3341
  # * As shown in the previous example, lists of dimension values
3312
3342
  # are combined with `OR` when applying the filter.
@@ -3317,7 +3347,7 @@ module Aws::CostExplorer
3317
3347
  # supported.
3318
3348
  #
3319
3349
  # * For example, you can filter for linked account names that
3320
- # start with a”.
3350
+ # start with "a".
3321
3351
  #
3322
3352
  # * The corresponding `Expression` for this example is as follows:
3323
3353
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3634,7 +3664,7 @@ module Aws::CostExplorer
3634
3664
  #
3635
3665
  # * The corresponding `Expression` for this example is as follows:
3636
3666
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3637
- # us-west-1 ] \} \}`
3667
+ # "us-west-1" ] \} \}`
3638
3668
  #
3639
3669
  # * As shown in the previous example, lists of dimension values
3640
3670
  # are combined with `OR` when applying the filter.
@@ -3645,7 +3675,7 @@ module Aws::CostExplorer
3645
3675
  # supported.
3646
3676
  #
3647
3677
  # * For example, you can filter for linked account names that
3648
- # start with a”.
3678
+ # start with "a".
3649
3679
  #
3650
3680
  # * The corresponding `Expression` for this example is as follows:
3651
3681
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3772,6 +3802,36 @@ module Aws::CostExplorer
3772
3802
  include Aws::Structure
3773
3803
  end
3774
3804
 
3805
+ # @!attribute [rw] recommendation_detail_id
3806
+ # The ID that is associated with the Savings Plan recommendation.
3807
+ # @return [String]
3808
+ #
3809
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlanPurchaseRecommendationDetailsRequest AWS API Documentation
3810
+ #
3811
+ class GetSavingsPlanPurchaseRecommendationDetailsRequest < Struct.new(
3812
+ :recommendation_detail_id)
3813
+ SENSITIVE = []
3814
+ include Aws::Structure
3815
+ end
3816
+
3817
+ # @!attribute [rw] recommendation_detail_id
3818
+ # The ID that is associated with the Savings Plan recommendation.
3819
+ # @return [String]
3820
+ #
3821
+ # @!attribute [rw] recommendation_detail_data
3822
+ # Contains detailed information about a specific Savings Plan
3823
+ # recommendation.
3824
+ # @return [Types::RecommendationDetailData]
3825
+ #
3826
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetSavingsPlanPurchaseRecommendationDetailsResponse AWS API Documentation
3827
+ #
3828
+ class GetSavingsPlanPurchaseRecommendationDetailsResponse < Struct.new(
3829
+ :recommendation_detail_id,
3830
+ :recommendation_detail_data)
3831
+ SENSITIVE = []
3832
+ include Aws::Structure
3833
+ end
3834
+
3775
3835
  # @!attribute [rw] time_period
3776
3836
  # The time period that you want the usage and costs for. The `Start`
3777
3837
  # date must be within 13 months. The `End` date must be after the
@@ -4228,7 +4288,7 @@ module Aws::CostExplorer
4228
4288
  #
4229
4289
  # * The corresponding `Expression` for this example is as follows:
4230
4290
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
4231
- # us-west-1 ] \} \}`
4291
+ # "us-west-1" ] \} \}`
4232
4292
  #
4233
4293
  # * As shown in the previous example, lists of dimension values
4234
4294
  # are combined with `OR` when applying the filter.
@@ -4239,7 +4299,7 @@ module Aws::CostExplorer
4239
4299
  # supported.
4240
4300
  #
4241
4301
  # * For example, you can filter for linked account names that
4242
- # start with a”.
4302
+ # start with "a".
4243
4303
  #
4244
4304
  # * The corresponding `Expression` for this example is as follows:
4245
4305
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -4982,6 +5042,221 @@ module Aws::CostExplorer
4982
5042
  include Aws::Structure
4983
5043
  end
4984
5044
 
5045
+ # The details and metrics for the given recommendation.
5046
+ #
5047
+ # @!attribute [rw] account_scope
5048
+ # The account scope that you want your recommendations for. Amazon Web
5049
+ # Services calculates recommendations including the management account
5050
+ # and member accounts if the value is set to PAYER. If the value is
5051
+ # LINKED, recommendations are calculated for individual member
5052
+ # accounts only.
5053
+ # @return [String]
5054
+ #
5055
+ # @!attribute [rw] lookback_period_in_days
5056
+ # How many days of previous usage that Amazon Web Services considers
5057
+ # when making this recommendation.
5058
+ # @return [String]
5059
+ #
5060
+ # @!attribute [rw] savings_plans_type
5061
+ # The requested Savings Plan recommendation type.
5062
+ # @return [String]
5063
+ #
5064
+ # @!attribute [rw] term_in_years
5065
+ # The term of the commitment in years.
5066
+ # @return [String]
5067
+ #
5068
+ # @!attribute [rw] payment_option
5069
+ # The payment option for the commitment (for example, All Upfront or
5070
+ # No Upfront).
5071
+ # @return [String]
5072
+ #
5073
+ # @!attribute [rw] account_id
5074
+ # The AccountID that the recommendation is generated for.
5075
+ # @return [String]
5076
+ #
5077
+ # @!attribute [rw] currency_code
5078
+ # The currency code that Amazon Web Services used to generate the
5079
+ # recommendation and present potential savings.
5080
+ # @return [String]
5081
+ #
5082
+ # @!attribute [rw] instance_family
5083
+ # The instance family of the recommended Savings Plan.
5084
+ # @return [String]
5085
+ #
5086
+ # @!attribute [rw] region
5087
+ # The region the recommendation is generated for.
5088
+ # @return [String]
5089
+ #
5090
+ # @!attribute [rw] offering_id
5091
+ # The unique ID that's used to distinguish Savings Plans from one
5092
+ # another.
5093
+ # @return [String]
5094
+ #
5095
+ # @!attribute [rw] generation_timestamp
5096
+ # The period of time that you want the usage and costs for.
5097
+ # @return [String]
5098
+ #
5099
+ # @!attribute [rw] latest_usage_timestamp
5100
+ # The period of time that you want the usage and costs for.
5101
+ # @return [String]
5102
+ #
5103
+ # @!attribute [rw] current_average_hourly_on_demand_spend
5104
+ # The average value of hourly On-Demand spend over the lookback period
5105
+ # of the applicable usage type.
5106
+ # @return [String]
5107
+ #
5108
+ # @!attribute [rw] current_maximum_hourly_on_demand_spend
5109
+ # The highest value of hourly On-Demand spend over the lookback period
5110
+ # of the applicable usage type.
5111
+ # @return [String]
5112
+ #
5113
+ # @!attribute [rw] current_minimum_hourly_on_demand_spend
5114
+ # The lowest value of hourly On-Demand spend over the lookback period
5115
+ # of the applicable usage type.
5116
+ # @return [String]
5117
+ #
5118
+ # @!attribute [rw] estimated_average_utilization
5119
+ # The estimated utilization of the recommended Savings Plan.
5120
+ # @return [String]
5121
+ #
5122
+ # @!attribute [rw] estimated_monthly_savings_amount
5123
+ # The estimated monthly savings amount based on the recommended
5124
+ # Savings Plan.
5125
+ # @return [String]
5126
+ #
5127
+ # @!attribute [rw] estimated_on_demand_cost
5128
+ # The remaining On-Demand cost estimated to not be covered by the
5129
+ # recommended Savings Plan, over the length of the lookback period.
5130
+ # @return [String]
5131
+ #
5132
+ # @!attribute [rw] estimated_on_demand_cost_with_current_commitment
5133
+ # The estimated On-Demand costs you expect with no additional
5134
+ # commitment, based on your usage of the selected time period and the
5135
+ # Savings Plan you own.
5136
+ # @return [String]
5137
+ #
5138
+ # @!attribute [rw] estimated_roi
5139
+ # The estimated return on investment that's based on the recommended
5140
+ # Savings Plan that you purchased. This is calculated as
5141
+ # estimatedSavingsAmount/estimatedSPCost*100.
5142
+ # @return [String]
5143
+ #
5144
+ # @!attribute [rw] estimated_sp_cost
5145
+ # The cost of the recommended Savings Plan over the length of the
5146
+ # lookback period.
5147
+ # @return [String]
5148
+ #
5149
+ # @!attribute [rw] estimated_savings_amount
5150
+ # The estimated savings amount that's based on the recommended
5151
+ # Savings Plan over the length of the lookback period.
5152
+ # @return [String]
5153
+ #
5154
+ # @!attribute [rw] estimated_savings_percentage
5155
+ # The estimated savings percentage relative to the total cost of
5156
+ # applicable On-Demand usage over the lookback period.
5157
+ # @return [String]
5158
+ #
5159
+ # @!attribute [rw] existing_hourly_commitment
5160
+ # The existing hourly commitment for the Savings Plan type.
5161
+ # @return [String]
5162
+ #
5163
+ # @!attribute [rw] hourly_commitment_to_purchase
5164
+ # The recommended hourly commitment level for the Savings Plan type
5165
+ # and the configuration that's based on the usage during the lookback
5166
+ # period.
5167
+ # @return [String]
5168
+ #
5169
+ # @!attribute [rw] upfront_cost
5170
+ # The upfront cost of the recommended Savings Plan, based on the
5171
+ # selected payment option.
5172
+ # @return [String]
5173
+ #
5174
+ # @!attribute [rw] current_average_coverage
5175
+ # The average value of hourly coverage over the lookback period.
5176
+ # @return [String]
5177
+ #
5178
+ # @!attribute [rw] estimated_average_coverage
5179
+ # The estimated coverage of the recommended Savings Plan.
5180
+ # @return [String]
5181
+ #
5182
+ # @!attribute [rw] metrics_over_lookback_period
5183
+ # The related hourly cost, coverage, and utilization metrics over the
5184
+ # lookback period.
5185
+ # @return [Array<Types::RecommendationDetailHourlyMetrics>]
5186
+ #
5187
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RecommendationDetailData AWS API Documentation
5188
+ #
5189
+ class RecommendationDetailData < Struct.new(
5190
+ :account_scope,
5191
+ :lookback_period_in_days,
5192
+ :savings_plans_type,
5193
+ :term_in_years,
5194
+ :payment_option,
5195
+ :account_id,
5196
+ :currency_code,
5197
+ :instance_family,
5198
+ :region,
5199
+ :offering_id,
5200
+ :generation_timestamp,
5201
+ :latest_usage_timestamp,
5202
+ :current_average_hourly_on_demand_spend,
5203
+ :current_maximum_hourly_on_demand_spend,
5204
+ :current_minimum_hourly_on_demand_spend,
5205
+ :estimated_average_utilization,
5206
+ :estimated_monthly_savings_amount,
5207
+ :estimated_on_demand_cost,
5208
+ :estimated_on_demand_cost_with_current_commitment,
5209
+ :estimated_roi,
5210
+ :estimated_sp_cost,
5211
+ :estimated_savings_amount,
5212
+ :estimated_savings_percentage,
5213
+ :existing_hourly_commitment,
5214
+ :hourly_commitment_to_purchase,
5215
+ :upfront_cost,
5216
+ :current_average_coverage,
5217
+ :estimated_average_coverage,
5218
+ :metrics_over_lookback_period)
5219
+ SENSITIVE = []
5220
+ include Aws::Structure
5221
+ end
5222
+
5223
+ # Contains the hourly metrics for the given recommendation over the
5224
+ # lookback period.
5225
+ #
5226
+ # @!attribute [rw] start_time
5227
+ # The period of time that you want the usage and costs for.
5228
+ # @return [String]
5229
+ #
5230
+ # @!attribute [rw] estimated_on_demand_cost
5231
+ # The remaining On-Demand cost estimated to not be covered by the
5232
+ # recommended Savings Plan, over the length of the lookback period.
5233
+ # @return [String]
5234
+ #
5235
+ # @!attribute [rw] current_coverage
5236
+ # The current amount of Savings Plans eligible usage that the Savings
5237
+ # Plan covered.
5238
+ # @return [String]
5239
+ #
5240
+ # @!attribute [rw] estimated_coverage
5241
+ # The estimated coverage amount based on the recommended Savings Plan.
5242
+ # @return [String]
5243
+ #
5244
+ # @!attribute [rw] estimated_new_commitment_utilization
5245
+ # The estimated utilization for the recommended Savings Plan.
5246
+ # @return [String]
5247
+ #
5248
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RecommendationDetailHourlyMetrics AWS API Documentation
5249
+ #
5250
+ class RecommendationDetailHourlyMetrics < Struct.new(
5251
+ :start_time,
5252
+ :estimated_on_demand_cost,
5253
+ :current_coverage,
5254
+ :estimated_coverage,
5255
+ :estimated_new_commitment_utilization)
5256
+ SENSITIVE = []
5257
+ include Aws::Structure
5258
+ end
5259
+
4985
5260
  # Details about the Amazon Redshift instances that Amazon Web Services
4986
5261
  # recommends that you purchase.
4987
5262
  #
@@ -5945,6 +6220,11 @@ module Aws::CostExplorer
5945
6220
  # of the applicable usage type.
5946
6221
  # @return [String]
5947
6222
  #
6223
+ # @!attribute [rw] recommendation_detail_id
6224
+ # Contains detailed information about a specific Savings Plan
6225
+ # recommendation.
6226
+ # @return [String]
6227
+ #
5948
6228
  # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/SavingsPlansPurchaseRecommendationDetail AWS API Documentation
5949
6229
  #
5950
6230
  class SavingsPlansPurchaseRecommendationDetail < Struct.new(
@@ -5963,7 +6243,8 @@ module Aws::CostExplorer
5963
6243
  :estimated_monthly_savings_amount,
5964
6244
  :current_minimum_hourly_on_demand_spend,
5965
6245
  :current_maximum_hourly_on_demand_spend,
5966
- :current_average_hourly_on_demand_spend)
6246
+ :current_average_hourly_on_demand_spend,
6247
+ :recommendation_detail_id)
5967
6248
  SENSITIVE = []
5968
6249
  include Aws::Structure
5969
6250
  end
@@ -6640,6 +6921,9 @@ module Aws::CostExplorer
6640
6921
  # This field has been deprecated. To update a threshold, use
6641
6922
  # ThresholdExpression. Continued use of Threshold will be treated as
6642
6923
  # shorthand syntax for a ThresholdExpression.
6924
+ #
6925
+ # You can specify either Threshold or ThresholdExpression, but not
6926
+ # both.
6643
6927
  # @return [Float]
6644
6928
  #
6645
6929
  # @!attribute [rw] frequency
@@ -6664,9 +6948,15 @@ module Aws::CostExplorer
6664
6948
  # anomalies that you want to generate alerts for. This supports
6665
6949
  # dimensions and nested expressions. The supported dimensions are
6666
6950
  # `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.
6951
+ # `ANOMALY_TOTAL_IMPACT_PERCENTAGE`, corresponding to an anomaly’s
6952
+ # TotalImpact and TotalImpactPercentage, respectively (see [Impact][2]
6953
+ # for more details). The supported nested expression types are `AND`
6954
+ # and `OR`. The match option `GREATER_THAN_OR_EQUAL` is required.
6955
+ # Values must be numbers between 0 and 10,000,000,000 in string
6956
+ # format.
6957
+ #
6958
+ # You can specify either Threshold or ThresholdExpression, but not
6959
+ # both.
6670
6960
  #
6671
6961
  # The following are examples of valid ThresholdExpressions:
6672
6962
  #
@@ -6695,6 +6985,7 @@ module Aws::CostExplorer
6695
6985
  #
6696
6986
  #
6697
6987
  # [1]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Expression.html
6988
+ # [2]: https://docs.aws.amazon.com/aws-cost-management/latest/APIReference/API_Impact.html
6698
6989
  # @return [Types::Expression]
6699
6990
  #
6700
6991
  # @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.89.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.89.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-07-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core