aws-sdk-costexplorer 1.87.0 → 1.89.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 2f7c630eb869e5b75a7848e275ec6bd62f01f9f8dd90c81421ef1ccbb32c8335
4
- data.tar.gz: 103e79435290bc1a67201c9067c2235bbe5ab156b59995d4a213117c05f31d36
3
+ metadata.gz: '094f8b338f6e5883fb40f498dbdb21fa505f2ff4e908556cebeb6538abc39f87'
4
+ data.tar.gz: c0e3205a80ccb3760d64cdd601b378912318144e4d79974f4ca795f5b5806de6
5
5
  SHA512:
6
- metadata.gz: 485d6fdd83bcddb04b41fb83af2f6ae3e26b413cd4c4c29d4ccb0fa232c884011dba4317ed3dbca91e407300231ffed339fc73798a7f4d0384e3655a94228bbc
7
- data.tar.gz: 440fb03cc68c042d26966a961f2fdea005e104a1b0a0fa1ba9559bee01126012791d38934cd685b79fbb21b45ffb99a9b6afd340826ae49ade2389ec162a7bc8
6
+ metadata.gz: 7db8c6acbf859d831e9a68425bfa1a14d90c3052cd0ba515ef5529fa4b68b9e4f05bec913990509cad9713cf62f70a85f4a11aab2bce9be5d0dc03f89db1ac2a
7
+ data.tar.gz: 9f395cc78bb1a510202dce526d1be1d5a159a2c59e0d8b87bc617b29efbeb40f138f3d77ca0479c57c029a832dcc7b2991e99ea1110937bcb677f1a62c59d29a
data/CHANGELOG.md CHANGED
@@ -1,6 +1,16 @@
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
+
9
+ 1.88.0 (2023-07-11)
10
+ ------------------
11
+
12
+ * Feature - Code Generated Changes, see `./build_tools` or `aws-sdk-core`'s CHANGELOG.md for details.
13
+
4
14
  1.87.0 (2023-07-06)
5
15
  ------------------
6
16
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 1.87.0
1
+ 1.89.0
@@ -216,6 +216,10 @@ module Aws::CostExplorer
216
216
  # @option options [Boolean] :endpoint_discovery (false)
217
217
  # When set to `true`, endpoint discovery will be enabled for operations when available.
218
218
  #
219
+ # @option options [Boolean] :ignore_configured_endpoint_urls
220
+ # Setting to true disables use of endpoint URLs provided via environment
221
+ # variables and the shared configuration file.
222
+ #
219
223
  # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
220
224
  # The log formatter.
221
225
  #
@@ -1556,7 +1560,7 @@ module Aws::CostExplorer
1556
1560
  #
1557
1561
  # * The corresponding `Expression` for this example is as follows:
1558
1562
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1559
- # us-west-1 ] \} \}`
1563
+ # "us-west-1" ] \} \}`
1560
1564
  #
1561
1565
  # * As shown in the previous example, lists of dimension values are
1562
1566
  # combined with `OR` when applying the filter.
@@ -1566,7 +1570,7 @@ module Aws::CostExplorer
1566
1570
  # the documentation for each specific API to see what is supported.
1567
1571
  #
1568
1572
  # * For example, you can filter for linked account names that start
1569
- # with a”.
1573
+ # with "a".
1570
1574
  #
1571
1575
  # * The corresponding `Expression` for this example is as follows:
1572
1576
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2101,7 +2105,7 @@ module Aws::CostExplorer
2101
2105
  #
2102
2106
  # * The corresponding `Expression` for this example is as follows:
2103
2107
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2104
- # us-west-1 ] \} \}`
2108
+ # "us-west-1" ] \} \}`
2105
2109
  #
2106
2110
  # * As shown in the previous example, lists of dimension values are
2107
2111
  # combined with `OR` when applying the filter.
@@ -2111,7 +2115,7 @@ module Aws::CostExplorer
2111
2115
  # the documentation for each specific API to see what is supported.
2112
2116
  #
2113
2117
  # * For example, you can filter for linked account names that start
2114
- # with a”.
2118
+ # with "a".
2115
2119
  #
2116
2120
  # * The corresponding `Expression` for this example is as follows:
2117
2121
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -2611,7 +2615,7 @@ module Aws::CostExplorer
2611
2615
  #
2612
2616
  # * The corresponding `Expression` for this example is as follows:
2613
2617
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
2614
- # us-west-1 ] \} \}`
2618
+ # "us-west-1" ] \} \}`
2615
2619
  #
2616
2620
  # * As shown in the previous example, lists of dimension values are
2617
2621
  # combined with `OR` when applying the filter.
@@ -2621,7 +2625,7 @@ module Aws::CostExplorer
2621
2625
  # the documentation for each specific API to see what is supported.
2622
2626
  #
2623
2627
  # * For example, you can filter for linked account names that start
2624
- # with a”.
2628
+ # with "a".
2625
2629
  #
2626
2630
  # * The corresponding `Expression` for this example is as follows:
2627
2631
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3120,7 +3124,7 @@ module Aws::CostExplorer
3120
3124
  #
3121
3125
  # * The corresponding `Expression` for this example is as follows:
3122
3126
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
3123
- # us-west-1 ] \} \}`
3127
+ # "us-west-1" ] \} \}`
3124
3128
  #
3125
3129
  # * As shown in the previous example, lists of dimension values are
3126
3130
  # combined with `OR` when applying the filter.
@@ -3130,7 +3134,7 @@ module Aws::CostExplorer
3130
3134
  # the documentation for each specific API to see what is supported.
3131
3135
  #
3132
3136
  # * For example, you can filter for linked account names that start
3133
- # with a”.
3137
+ # with "a".
3134
3138
  #
3135
3139
  # * The corresponding `Expression` for this example is as follows:
3136
3140
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -3350,6 +3354,71 @@ module Aws::CostExplorer
3350
3354
  req.send_request(options)
3351
3355
  end
3352
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
+
3353
3422
  # Retrieves the Savings Plans covered for your account. This enables you
3354
3423
  # to see how much of your cost is covered by a Savings Plan. An
3355
3424
  # organization’s management account can see the coverage of the
@@ -3648,6 +3717,7 @@ module Aws::CostExplorer
3648
3717
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].current_minimum_hourly_on_demand_spend #=> String
3649
3718
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_details[0].current_maximum_hourly_on_demand_spend #=> String
3650
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
3651
3721
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.estimated_roi #=> String
3652
3722
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.currency_code #=> String
3653
3723
  # resp.savings_plans_purchase_recommendation.savings_plans_purchase_recommendation_summary.estimated_total_cost #=> String
@@ -4032,7 +4102,7 @@ module Aws::CostExplorer
4032
4102
  #
4033
4103
  # * The corresponding `Expression` for this example is as follows:
4034
4104
  # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
4035
- # us-west-1 ] \} \}`
4105
+ # "us-west-1" ] \} \}`
4036
4106
  #
4037
4107
  # * As shown in the previous example, lists of dimension values are
4038
4108
  # combined with `OR` when applying the filter.
@@ -4042,7 +4112,7 @@ module Aws::CostExplorer
4042
4112
  # the documentation for each specific API to see what is supported.
4043
4113
  #
4044
4114
  # * For example, you can filter for linked account names that start
4045
- # with a”.
4115
+ # with "a".
4046
4116
  #
4047
4117
  # * The corresponding `Expression` for this example is as follows:
4048
4118
  # `\{ "Dimensions": \{ "Key": "LINKED_ACCOUNT_NAME",
@@ -4767,7 +4837,18 @@ module Aws::CostExplorer
4767
4837
  req.send_request(options)
4768
4838
  end
4769
4839
 
4770
- # 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
4771
4852
  #
4772
4853
  # @option params [required, String] :subscription_arn
4773
4854
  # A cost anomaly subscription Amazon Resource Name (ARN).
@@ -4781,6 +4862,8 @@ module Aws::CostExplorer
4781
4862
  # ThresholdExpression. Continued use of Threshold will be treated as
4782
4863
  # shorthand syntax for a ThresholdExpression.
4783
4864
  #
4865
+ # You can specify either Threshold or ThresholdExpression, but not both.
4866
+ #
4784
4867
  # @option params [String] :frequency
4785
4868
  # The update to the frequency value that subscribers receive
4786
4869
  # notifications.
@@ -4798,10 +4881,14 @@ module Aws::CostExplorer
4798
4881
  # The update to the [Expression][1] object used to specify the anomalies
4799
4882
  # that you want to generate alerts for. This supports dimensions and
4800
4883
  # nested expressions. The supported dimensions are
4801
- # `ANOMALY_TOTAL_IMPACT_ABSOLUTE` and `ANOMALY_TOTAL_IMPACT_PERCENTAGE`.
4802
- # The supported nested expression types are `AND` and `OR`. The match
4803
- # option `GREATER_THAN_OR_EQUAL` is required. Values must be numbers
4804
- # 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.
4805
4892
  #
4806
4893
  # The following are examples of valid ThresholdExpressions:
4807
4894
  #
@@ -4830,6 +4917,7 @@ module Aws::CostExplorer
4830
4917
  #
4831
4918
  #
4832
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
4833
4921
  #
4834
4922
  # @return [Types::UpdateAnomalySubscriptionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
4835
4923
  #
@@ -5062,7 +5150,7 @@ module Aws::CostExplorer
5062
5150
  params: params,
5063
5151
  config: config)
5064
5152
  context[:gem_name] = 'aws-sdk-costexplorer'
5065
- context[:gem_version] = '1.87.0'
5153
+ context[:gem_version] = '1.89.0'
5066
5154
  Seahorse::Client::Request.new(handlers, context)
5067
5155
  end
5068
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.87.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.87.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-06 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