aws-sdk-costexplorer 1.28.0 → 1.29.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7a736df7b3d87fb0c7b3c4d7baea49768462949c
4
- data.tar.gz: 55fc5e3971b5430ad65b2988b3e9d0607cba9ff2
3
+ metadata.gz: 66609ec229477b6ab3d86706a9d466d31b698018
4
+ data.tar.gz: f7faa946260d6825f5285ce27dfe1278e13c22e9
5
5
  SHA512:
6
- metadata.gz: 043c8b7c5c4266b0616fbc4ec6e1dca81ba1672e3a106fdc2bf97de15fcf018051714909270a37f0f8481db3bda8098484c90ae932eef1a9c45783f49f1c456f
7
- data.tar.gz: a631f8473dbb7322ec4379c5924604a06fdd31b793dae0f5d5e4714f54d8e862f8c55ddf59a15a5763d550974ddb7a5617d1512c2e2413711e1c7c241b96a96c
6
+ metadata.gz: 4a8ff47fe15bdb17c29b8f1b750fc02f45641bf2932e4ab5cf4c56000bdc3bbbc6f0a6537bdf90800f2cad8f4a743a03bfb904c82e14d029667468f8da5af199
7
+ data.tar.gz: a2fc7c132739cec212c13d855fb8ff9c03d6ff9b62d2250dac5f6214c41e7379950c36d43170217d5a397a0db9c1501363c1b421e458eb95b2ca3853a383a81c
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-costexplorer/customizations'
42
42
  # @service
43
43
  module Aws::CostExplorer
44
44
 
45
- GEM_VERSION = '1.28.0'
45
+ GEM_VERSION = '1.29.0'
46
46
 
47
47
  end
@@ -373,7 +373,7 @@ module Aws::CostExplorer
373
373
  # # recursive Expression
374
374
  # },
375
375
  # dimensions: {
376
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
376
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
377
377
  # values: ["Value"],
378
378
  # },
379
379
  # tags: {
@@ -496,7 +496,7 @@ module Aws::CostExplorer
496
496
  # # recursive Expression
497
497
  # },
498
498
  # dimensions: {
499
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
499
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
500
500
  # values: ["Value"],
501
501
  # },
502
502
  # tags: {
@@ -650,7 +650,7 @@ module Aws::CostExplorer
650
650
  # start: "YearMonthDay", # required
651
651
  # end: "YearMonthDay", # required
652
652
  # },
653
- # dimension: "AZ", # required, accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
653
+ # dimension: "AZ", # required, accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
654
654
  # context: "COST_AND_USAGE", # accepts COST_AND_USAGE, RESERVATIONS
655
655
  # next_page_token: "NextPageToken",
656
656
  # })
@@ -838,7 +838,7 @@ module Aws::CostExplorer
838
838
  # # recursive Expression
839
839
  # },
840
840
  # dimensions: {
841
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
841
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
842
842
  # values: ["Value"],
843
843
  # },
844
844
  # tags: {
@@ -1156,7 +1156,7 @@ module Aws::CostExplorer
1156
1156
  # # recursive Expression
1157
1157
  # },
1158
1158
  # dimensions: {
1159
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
1159
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1160
1160
  # values: ["Value"],
1161
1161
  # },
1162
1162
  # tags: {
@@ -1230,6 +1230,177 @@ module Aws::CostExplorer
1230
1230
  req.send_request(options)
1231
1231
  end
1232
1232
 
1233
+ # Creates recommendations that helps you save cost by identifying idle
1234
+ # and underutilized Amazon EC2 instances.
1235
+ #
1236
+ # Recommendations are generated to either downsize or terminate
1237
+ # instances, along with providing savings detail and metrics. For
1238
+ # details on calculation and function, see [Optimizing Your Cost with
1239
+ # Rightsizing Recommendations][1].
1240
+ #
1241
+ #
1242
+ #
1243
+ # [1]: https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2/ce-what-is.html
1244
+ #
1245
+ # @option params [Types::Expression] :filter
1246
+ # Use `Expression` to filter by cost or by usage. There are two
1247
+ # patterns:
1248
+ #
1249
+ # * Simple dimension values - You can set the dimension name and values
1250
+ # for the filters that you plan to use. For example, you can filter
1251
+ # for `REGION==us-east-1 OR REGION==us-west-1`. The `Expression` for
1252
+ # that looks like this:
1253
+ #
1254
+ # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1255
+ # “us-west-1” ] \} \}`
1256
+ #
1257
+ # The list of dimension values are OR'd together to retrieve cost or
1258
+ # usage data. You can create `Expression` and `DimensionValues`
1259
+ # objects using either `with*` methods or `set*` methods in multiple
1260
+ # lines.
1261
+ #
1262
+ # * Compound dimension values with logical operations - You can use
1263
+ # multiple `Expression` types and the logical operators `AND/OR/NOT`
1264
+ # to create a list of one or more `Expression` objects. This allows
1265
+ # you to filter on more advanced options. For example, you can filter
1266
+ # on `((REGION == us-east-1 OR REGION == us-west-1) OR (TAG.Type ==
1267
+ # Type1)) AND (USAGE_TYPE != DataTransfer)`. The `Expression` for that
1268
+ # looks like this:
1269
+ #
1270
+ # `\{ "And": [ \{"Or": [ \{"Dimensions": \{ "Key": "REGION", "Values":
1271
+ # [ "us-east-1", "us-west-1" ] \}\}, \{"Tags": \{ "Key": "TagName",
1272
+ # "Values": ["Value1"] \} \} ]\}, \{"Not": \{"Dimensions": \{ "Key":
1273
+ # "USAGE_TYPE", "Values": ["DataTransfer"] \}\}\} ] \} `
1274
+ #
1275
+ # <note markdown="1"> Because each `Expression` can have only one operator, the service
1276
+ # returns an error if more than one is specified. The following
1277
+ # example shows an `Expression` object that creates an error.
1278
+ #
1279
+ # </note>
1280
+ #
1281
+ # ` \{ "And": [ ... ], "DimensionValues": \{ "Dimension":
1282
+ # "USAGE_TYPE", "Values": [ "DataTransfer" ] \} \} `
1283
+ #
1284
+ # <note markdown="1"> For `GetRightsizingRecommendation` action, a combination of OR and NOT
1285
+ # is not supported. OR is not supported between different dimensions, or
1286
+ # dimensions and tags. NOT operators aren't supported. Dimentions are
1287
+ # also limited to `LINKED_ACCOUNT`, `REGION`, or `RIGHTSIZING_TYPE`.
1288
+ #
1289
+ # </note>
1290
+ #
1291
+ # @option params [required, String] :service
1292
+ # The specific service that you want recommendations for.
1293
+ #
1294
+ # @option params [Integer] :page_size
1295
+ # The number of recommendations that you want returned in a single
1296
+ # response object.
1297
+ #
1298
+ # @option params [String] :next_page_token
1299
+ # The pagination token that indicates the next set of results that you
1300
+ # want to retrieve.
1301
+ #
1302
+ # @return [Types::GetRightsizingRecommendationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1303
+ #
1304
+ # * {Types::GetRightsizingRecommendationResponse#metadata #metadata} => Types::RightsizingRecommendationMetadata
1305
+ # * {Types::GetRightsizingRecommendationResponse#summary #summary} => Types::RightsizingRecommendationSummary
1306
+ # * {Types::GetRightsizingRecommendationResponse#rightsizing_recommendations #rightsizing_recommendations} => Array&lt;Types::RightsizingRecommendation&gt;
1307
+ # * {Types::GetRightsizingRecommendationResponse#next_page_token #next_page_token} => String
1308
+ #
1309
+ # @example Request syntax with placeholder values
1310
+ #
1311
+ # resp = client.get_rightsizing_recommendation({
1312
+ # filter: {
1313
+ # or: [
1314
+ # {
1315
+ # # recursive Expression
1316
+ # },
1317
+ # ],
1318
+ # and: [
1319
+ # {
1320
+ # # recursive Expression
1321
+ # },
1322
+ # ],
1323
+ # not: {
1324
+ # # recursive Expression
1325
+ # },
1326
+ # dimensions: {
1327
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1328
+ # values: ["Value"],
1329
+ # },
1330
+ # tags: {
1331
+ # key: "TagKey",
1332
+ # values: ["Value"],
1333
+ # },
1334
+ # },
1335
+ # service: "GenericString", # required
1336
+ # page_size: 1,
1337
+ # next_page_token: "NextPageToken",
1338
+ # })
1339
+ #
1340
+ # @example Response structure
1341
+ #
1342
+ # resp.metadata.recommendation_id #=> String
1343
+ # resp.metadata.generation_timestamp #=> String
1344
+ # resp.metadata.lookback_period_in_days #=> String, one of "SEVEN_DAYS", "THIRTY_DAYS", "SIXTY_DAYS"
1345
+ # resp.summary.total_recommendation_count #=> String
1346
+ # resp.summary.estimated_total_monthly_savings_amount #=> String
1347
+ # resp.summary.savings_currency_code #=> String
1348
+ # resp.summary.savings_percentage #=> String
1349
+ # resp.rightsizing_recommendations #=> Array
1350
+ # resp.rightsizing_recommendations[0].account_id #=> String
1351
+ # resp.rightsizing_recommendations[0].current_instance.resource_id #=> String
1352
+ # resp.rightsizing_recommendations[0].current_instance.tags #=> Array
1353
+ # resp.rightsizing_recommendations[0].current_instance.tags[0].key #=> String
1354
+ # resp.rightsizing_recommendations[0].current_instance.tags[0].values #=> Array
1355
+ # resp.rightsizing_recommendations[0].current_instance.tags[0].values[0] #=> String
1356
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.hourly_on_demand_rate #=> String
1357
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.instance_type #=> String
1358
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.platform #=> String
1359
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.region #=> String
1360
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.sku #=> String
1361
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.memory #=> String
1362
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.network_performance #=> String
1363
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.storage #=> String
1364
+ # resp.rightsizing_recommendations[0].current_instance.resource_details.ec2_resource_details.vcpu #=> String
1365
+ # resp.rightsizing_recommendations[0].current_instance.resource_utilization.ec2_resource_utilization.max_cpu_utilization_percentage #=> String
1366
+ # resp.rightsizing_recommendations[0].current_instance.resource_utilization.ec2_resource_utilization.max_memory_utilization_percentage #=> String
1367
+ # resp.rightsizing_recommendations[0].current_instance.resource_utilization.ec2_resource_utilization.max_storage_utilization_percentage #=> String
1368
+ # resp.rightsizing_recommendations[0].current_instance.reservation_covered_hours_in_lookback_period #=> String
1369
+ # resp.rightsizing_recommendations[0].current_instance.on_demand_hours_in_lookback_period #=> String
1370
+ # resp.rightsizing_recommendations[0].current_instance.total_running_hours_in_lookback_period #=> String
1371
+ # resp.rightsizing_recommendations[0].current_instance.monthly_cost #=> String
1372
+ # resp.rightsizing_recommendations[0].current_instance.currency_code #=> String
1373
+ # resp.rightsizing_recommendations[0].rightsizing_type #=> String, one of "TERMINATE", "MODIFY"
1374
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances #=> Array
1375
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].estimated_monthly_cost #=> String
1376
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].estimated_monthly_savings #=> String
1377
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].currency_code #=> String
1378
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].default_target_instance #=> Boolean
1379
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.hourly_on_demand_rate #=> String
1380
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.instance_type #=> String
1381
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.platform #=> String
1382
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.region #=> String
1383
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.sku #=> String
1384
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.memory #=> String
1385
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.network_performance #=> String
1386
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.storage #=> String
1387
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].resource_details.ec2_resource_details.vcpu #=> String
1388
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].expected_resource_utilization.ec2_resource_utilization.max_cpu_utilization_percentage #=> String
1389
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].expected_resource_utilization.ec2_resource_utilization.max_memory_utilization_percentage #=> String
1390
+ # resp.rightsizing_recommendations[0].modify_recommendation_detail.target_instances[0].expected_resource_utilization.ec2_resource_utilization.max_storage_utilization_percentage #=> String
1391
+ # resp.rightsizing_recommendations[0].terminate_recommendation_detail.estimated_monthly_savings #=> String
1392
+ # resp.rightsizing_recommendations[0].terminate_recommendation_detail.currency_code #=> String
1393
+ # resp.next_page_token #=> String
1394
+ #
1395
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendation AWS API Documentation
1396
+ #
1397
+ # @overload get_rightsizing_recommendation(params = {})
1398
+ # @param [Hash] params ({})
1399
+ def get_rightsizing_recommendation(params = {}, options = {})
1400
+ req = build_request(:get_rightsizing_recommendation, params)
1401
+ req.send_request(options)
1402
+ end
1403
+
1233
1404
  # Queries for available tag keys and tag values for a specified period.
1234
1405
  # You can search the tag values for an arbitrary string.
1235
1406
  #
@@ -1356,7 +1527,7 @@ module Aws::CostExplorer
1356
1527
  # # recursive Expression
1357
1528
  # },
1358
1529
  # dimensions: {
1359
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
1530
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1360
1531
  # values: ["Value"],
1361
1532
  # },
1362
1533
  # tags: {
@@ -1400,7 +1571,7 @@ module Aws::CostExplorer
1400
1571
  params: params,
1401
1572
  config: config)
1402
1573
  context[:gem_name] = 'aws-sdk-costexplorer'
1403
- context[:gem_version] = '1.28.0'
1574
+ context[:gem_version] = '1.29.0'
1404
1575
  Seahorse::Client::Request.new(handlers, context)
1405
1576
  end
1406
1577
 
@@ -27,6 +27,7 @@ module Aws::CostExplorer
27
27
  CoverageNormalizedUnits = Shapes::StructureShape.new(name: 'CoverageNormalizedUnits')
28
28
  CoverageNormalizedUnitsPercentage = Shapes::StringShape.new(name: 'CoverageNormalizedUnitsPercentage')
29
29
  CoveragesByTime = Shapes::ListShape.new(name: 'CoveragesByTime')
30
+ CurrentInstance = Shapes::StructureShape.new(name: 'CurrentInstance')
30
31
  DataUnavailableException = Shapes::StructureShape.new(name: 'DataUnavailableException')
31
32
  DateInterval = Shapes::StructureShape.new(name: 'DateInterval')
32
33
  Dimension = Shapes::StringShape.new(name: 'Dimension')
@@ -34,6 +35,8 @@ module Aws::CostExplorer
34
35
  DimensionValuesWithAttributes = Shapes::StructureShape.new(name: 'DimensionValuesWithAttributes')
35
36
  DimensionValuesWithAttributesList = Shapes::ListShape.new(name: 'DimensionValuesWithAttributesList')
36
37
  EC2InstanceDetails = Shapes::StructureShape.new(name: 'EC2InstanceDetails')
38
+ EC2ResourceDetails = Shapes::StructureShape.new(name: 'EC2ResourceDetails')
39
+ EC2ResourceUtilization = Shapes::StructureShape.new(name: 'EC2ResourceUtilization')
37
40
  EC2Specification = Shapes::StructureShape.new(name: 'EC2Specification')
38
41
  ESInstanceDetails = Shapes::StructureShape.new(name: 'ESInstanceDetails')
39
42
  ElastiCacheInstanceDetails = Shapes::StructureShape.new(name: 'ElastiCacheInstanceDetails')
@@ -58,6 +61,8 @@ module Aws::CostExplorer
58
61
  GetReservationPurchaseRecommendationResponse = Shapes::StructureShape.new(name: 'GetReservationPurchaseRecommendationResponse')
59
62
  GetReservationUtilizationRequest = Shapes::StructureShape.new(name: 'GetReservationUtilizationRequest')
60
63
  GetReservationUtilizationResponse = Shapes::StructureShape.new(name: 'GetReservationUtilizationResponse')
64
+ GetRightsizingRecommendationRequest = Shapes::StructureShape.new(name: 'GetRightsizingRecommendationRequest')
65
+ GetRightsizingRecommendationResponse = Shapes::StructureShape.new(name: 'GetRightsizingRecommendationResponse')
61
66
  GetTagsRequest = Shapes::StructureShape.new(name: 'GetTagsRequest')
62
67
  GetTagsResponse = Shapes::StructureShape.new(name: 'GetTagsResponse')
63
68
  GetUsageForecastRequest = Shapes::StructureShape.new(name: 'GetUsageForecastRequest')
@@ -82,6 +87,7 @@ module Aws::CostExplorer
82
87
  MetricUnit = Shapes::StringShape.new(name: 'MetricUnit')
83
88
  MetricValue = Shapes::StructureShape.new(name: 'MetricValue')
84
89
  Metrics = Shapes::MapShape.new(name: 'Metrics')
90
+ ModifyRecommendationDetail = Shapes::StructureShape.new(name: 'ModifyRecommendationDetail')
85
91
  NetRISavings = Shapes::StringShape.new(name: 'NetRISavings')
86
92
  NextPageToken = Shapes::StringShape.new(name: 'NextPageToken')
87
93
  NonNegativeInteger = Shapes::IntegerShape.new(name: 'NonNegativeInteger')
@@ -113,14 +119,25 @@ module Aws::CostExplorer
113
119
  ReservationUtilizationGroups = Shapes::ListShape.new(name: 'ReservationUtilizationGroups')
114
120
  ReservedHours = Shapes::StringShape.new(name: 'ReservedHours')
115
121
  ReservedNormalizedUnits = Shapes::StringShape.new(name: 'ReservedNormalizedUnits')
122
+ ResourceDetails = Shapes::StructureShape.new(name: 'ResourceDetails')
123
+ ResourceUtilization = Shapes::StructureShape.new(name: 'ResourceUtilization')
116
124
  ResultByTime = Shapes::StructureShape.new(name: 'ResultByTime')
117
125
  ResultsByTime = Shapes::ListShape.new(name: 'ResultsByTime')
126
+ RightsizingRecommendation = Shapes::StructureShape.new(name: 'RightsizingRecommendation')
127
+ RightsizingRecommendationList = Shapes::ListShape.new(name: 'RightsizingRecommendationList')
128
+ RightsizingRecommendationMetadata = Shapes::StructureShape.new(name: 'RightsizingRecommendationMetadata')
129
+ RightsizingRecommendationSummary = Shapes::StructureShape.new(name: 'RightsizingRecommendationSummary')
130
+ RightsizingType = Shapes::StringShape.new(name: 'RightsizingType')
118
131
  SearchString = Shapes::StringShape.new(name: 'SearchString')
119
132
  ServiceSpecification = Shapes::StructureShape.new(name: 'ServiceSpecification')
120
133
  TagKey = Shapes::StringShape.new(name: 'TagKey')
121
134
  TagList = Shapes::ListShape.new(name: 'TagList')
122
135
  TagValues = Shapes::StructureShape.new(name: 'TagValues')
136
+ TagValuesList = Shapes::ListShape.new(name: 'TagValuesList')
137
+ TargetInstance = Shapes::StructureShape.new(name: 'TargetInstance')
138
+ TargetInstancesList = Shapes::ListShape.new(name: 'TargetInstancesList')
123
139
  TermInYears = Shapes::StringShape.new(name: 'TermInYears')
140
+ TerminateRecommendationDetail = Shapes::StructureShape.new(name: 'TerminateRecommendationDetail')
124
141
  TotalActualHours = Shapes::StringShape.new(name: 'TotalActualHours')
125
142
  TotalActualUnits = Shapes::StringShape.new(name: 'TotalActualUnits')
126
143
  TotalAmortizedFee = Shapes::StringShape.new(name: 'TotalAmortizedFee')
@@ -171,6 +188,17 @@ module Aws::CostExplorer
171
188
 
172
189
  CoveragesByTime.member = Shapes::ShapeRef.new(shape: CoverageByTime)
173
190
 
191
+ CurrentInstance.add_member(:resource_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "ResourceId"))
192
+ CurrentInstance.add_member(:tags, Shapes::ShapeRef.new(shape: TagValuesList, location_name: "Tags"))
193
+ CurrentInstance.add_member(:resource_details, Shapes::ShapeRef.new(shape: ResourceDetails, location_name: "ResourceDetails"))
194
+ CurrentInstance.add_member(:resource_utilization, Shapes::ShapeRef.new(shape: ResourceUtilization, location_name: "ResourceUtilization"))
195
+ CurrentInstance.add_member(:reservation_covered_hours_in_lookback_period, Shapes::ShapeRef.new(shape: GenericString, location_name: "ReservationCoveredHoursInLookbackPeriod"))
196
+ CurrentInstance.add_member(:on_demand_hours_in_lookback_period, Shapes::ShapeRef.new(shape: GenericString, location_name: "OnDemandHoursInLookbackPeriod"))
197
+ CurrentInstance.add_member(:total_running_hours_in_lookback_period, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalRunningHoursInLookbackPeriod"))
198
+ CurrentInstance.add_member(:monthly_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "MonthlyCost"))
199
+ CurrentInstance.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
200
+ CurrentInstance.struct_class = Types::CurrentInstance
201
+
174
202
  DataUnavailableException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
175
203
  DataUnavailableException.struct_class = Types::DataUnavailableException
176
204
 
@@ -198,6 +226,22 @@ module Aws::CostExplorer
198
226
  EC2InstanceDetails.add_member(:size_flex_eligible, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "SizeFlexEligible"))
199
227
  EC2InstanceDetails.struct_class = Types::EC2InstanceDetails
200
228
 
229
+ EC2ResourceDetails.add_member(:hourly_on_demand_rate, Shapes::ShapeRef.new(shape: GenericString, location_name: "HourlyOnDemandRate"))
230
+ EC2ResourceDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceType"))
231
+ EC2ResourceDetails.add_member(:platform, Shapes::ShapeRef.new(shape: GenericString, location_name: "Platform"))
232
+ EC2ResourceDetails.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
233
+ EC2ResourceDetails.add_member(:sku, Shapes::ShapeRef.new(shape: GenericString, location_name: "Sku"))
234
+ EC2ResourceDetails.add_member(:memory, Shapes::ShapeRef.new(shape: GenericString, location_name: "Memory"))
235
+ EC2ResourceDetails.add_member(:network_performance, Shapes::ShapeRef.new(shape: GenericString, location_name: "NetworkPerformance"))
236
+ EC2ResourceDetails.add_member(:storage, Shapes::ShapeRef.new(shape: GenericString, location_name: "Storage"))
237
+ EC2ResourceDetails.add_member(:vcpu, Shapes::ShapeRef.new(shape: GenericString, location_name: "Vcpu"))
238
+ EC2ResourceDetails.struct_class = Types::EC2ResourceDetails
239
+
240
+ EC2ResourceUtilization.add_member(:max_cpu_utilization_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaxCpuUtilizationPercentage"))
241
+ EC2ResourceUtilization.add_member(:max_memory_utilization_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaxMemoryUtilizationPercentage"))
242
+ EC2ResourceUtilization.add_member(:max_storage_utilization_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "MaxStorageUtilizationPercentage"))
243
+ EC2ResourceUtilization.struct_class = Types::EC2ResourceUtilization
244
+
201
245
  EC2Specification.add_member(:offering_class, Shapes::ShapeRef.new(shape: OfferingClass, location_name: "OfferingClass"))
202
246
  EC2Specification.struct_class = Types::EC2Specification
203
247
 
@@ -311,6 +355,18 @@ module Aws::CostExplorer
311
355
  GetReservationUtilizationResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
312
356
  GetReservationUtilizationResponse.struct_class = Types::GetReservationUtilizationResponse
313
357
 
358
+ GetRightsizingRecommendationRequest.add_member(:filter, Shapes::ShapeRef.new(shape: Expression, location_name: "Filter"))
359
+ GetRightsizingRecommendationRequest.add_member(:service, Shapes::ShapeRef.new(shape: GenericString, required: true, location_name: "Service"))
360
+ GetRightsizingRecommendationRequest.add_member(:page_size, Shapes::ShapeRef.new(shape: NonNegativeInteger, location_name: "PageSize"))
361
+ GetRightsizingRecommendationRequest.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
362
+ GetRightsizingRecommendationRequest.struct_class = Types::GetRightsizingRecommendationRequest
363
+
364
+ GetRightsizingRecommendationResponse.add_member(:metadata, Shapes::ShapeRef.new(shape: RightsizingRecommendationMetadata, location_name: "Metadata"))
365
+ GetRightsizingRecommendationResponse.add_member(:summary, Shapes::ShapeRef.new(shape: RightsizingRecommendationSummary, location_name: "Summary"))
366
+ GetRightsizingRecommendationResponse.add_member(:rightsizing_recommendations, Shapes::ShapeRef.new(shape: RightsizingRecommendationList, location_name: "RightsizingRecommendations"))
367
+ GetRightsizingRecommendationResponse.add_member(:next_page_token, Shapes::ShapeRef.new(shape: NextPageToken, location_name: "NextPageToken"))
368
+ GetRightsizingRecommendationResponse.struct_class = Types::GetRightsizingRecommendationResponse
369
+
314
370
  GetTagsRequest.add_member(:search_string, Shapes::ShapeRef.new(shape: SearchString, location_name: "SearchString"))
315
371
  GetTagsRequest.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, required: true, location_name: "TimePeriod"))
316
372
  GetTagsRequest.add_member(:tag_key, Shapes::ShapeRef.new(shape: TagKey, location_name: "TagKey"))
@@ -370,6 +426,9 @@ module Aws::CostExplorer
370
426
  Metrics.key = Shapes::ShapeRef.new(shape: MetricName)
371
427
  Metrics.value = Shapes::ShapeRef.new(shape: MetricValue)
372
428
 
429
+ ModifyRecommendationDetail.add_member(:target_instances, Shapes::ShapeRef.new(shape: TargetInstancesList, location_name: "TargetInstances"))
430
+ ModifyRecommendationDetail.struct_class = Types::ModifyRecommendationDetail
431
+
373
432
  RDSInstanceDetails.add_member(:family, Shapes::ShapeRef.new(shape: GenericString, location_name: "Family"))
374
433
  RDSInstanceDetails.add_member(:instance_type, Shapes::ShapeRef.new(shape: GenericString, location_name: "InstanceType"))
375
434
  RDSInstanceDetails.add_member(:region, Shapes::ShapeRef.new(shape: GenericString, location_name: "Region"))
@@ -464,6 +523,12 @@ module Aws::CostExplorer
464
523
 
465
524
  ReservationUtilizationGroups.member = Shapes::ShapeRef.new(shape: ReservationUtilizationGroup)
466
525
 
526
+ ResourceDetails.add_member(:ec2_resource_details, Shapes::ShapeRef.new(shape: EC2ResourceDetails, location_name: "EC2ResourceDetails"))
527
+ ResourceDetails.struct_class = Types::ResourceDetails
528
+
529
+ ResourceUtilization.add_member(:ec2_resource_utilization, Shapes::ShapeRef.new(shape: EC2ResourceUtilization, location_name: "EC2ResourceUtilization"))
530
+ ResourceUtilization.struct_class = Types::ResourceUtilization
531
+
467
532
  ResultByTime.add_member(:time_period, Shapes::ShapeRef.new(shape: DateInterval, location_name: "TimePeriod"))
468
533
  ResultByTime.add_member(:total, Shapes::ShapeRef.new(shape: Metrics, location_name: "Total"))
469
534
  ResultByTime.add_member(:groups, Shapes::ShapeRef.new(shape: Groups, location_name: "Groups"))
@@ -472,6 +537,26 @@ module Aws::CostExplorer
472
537
 
473
538
  ResultsByTime.member = Shapes::ShapeRef.new(shape: ResultByTime)
474
539
 
540
+ RightsizingRecommendation.add_member(:account_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "AccountId"))
541
+ RightsizingRecommendation.add_member(:current_instance, Shapes::ShapeRef.new(shape: CurrentInstance, location_name: "CurrentInstance"))
542
+ RightsizingRecommendation.add_member(:rightsizing_type, Shapes::ShapeRef.new(shape: RightsizingType, location_name: "RightsizingType"))
543
+ RightsizingRecommendation.add_member(:modify_recommendation_detail, Shapes::ShapeRef.new(shape: ModifyRecommendationDetail, location_name: "ModifyRecommendationDetail"))
544
+ RightsizingRecommendation.add_member(:terminate_recommendation_detail, Shapes::ShapeRef.new(shape: TerminateRecommendationDetail, location_name: "TerminateRecommendationDetail"))
545
+ RightsizingRecommendation.struct_class = Types::RightsizingRecommendation
546
+
547
+ RightsizingRecommendationList.member = Shapes::ShapeRef.new(shape: RightsizingRecommendation)
548
+
549
+ RightsizingRecommendationMetadata.add_member(:recommendation_id, Shapes::ShapeRef.new(shape: GenericString, location_name: "RecommendationId"))
550
+ RightsizingRecommendationMetadata.add_member(:generation_timestamp, Shapes::ShapeRef.new(shape: GenericString, location_name: "GenerationTimestamp"))
551
+ RightsizingRecommendationMetadata.add_member(:lookback_period_in_days, Shapes::ShapeRef.new(shape: LookbackPeriodInDays, location_name: "LookbackPeriodInDays"))
552
+ RightsizingRecommendationMetadata.struct_class = Types::RightsizingRecommendationMetadata
553
+
554
+ RightsizingRecommendationSummary.add_member(:total_recommendation_count, Shapes::ShapeRef.new(shape: GenericString, location_name: "TotalRecommendationCount"))
555
+ RightsizingRecommendationSummary.add_member(:estimated_total_monthly_savings_amount, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedTotalMonthlySavingsAmount"))
556
+ RightsizingRecommendationSummary.add_member(:savings_currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "SavingsCurrencyCode"))
557
+ RightsizingRecommendationSummary.add_member(:savings_percentage, Shapes::ShapeRef.new(shape: GenericString, location_name: "SavingsPercentage"))
558
+ RightsizingRecommendationSummary.struct_class = Types::RightsizingRecommendationSummary
559
+
475
560
  ServiceSpecification.add_member(:ec2_specification, Shapes::ShapeRef.new(shape: EC2Specification, location_name: "EC2Specification"))
476
561
  ServiceSpecification.struct_class = Types::ServiceSpecification
477
562
 
@@ -481,6 +566,22 @@ module Aws::CostExplorer
481
566
  TagValues.add_member(:values, Shapes::ShapeRef.new(shape: Values, location_name: "Values"))
482
567
  TagValues.struct_class = Types::TagValues
483
568
 
569
+ TagValuesList.member = Shapes::ShapeRef.new(shape: TagValues)
570
+
571
+ TargetInstance.add_member(:estimated_monthly_cost, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlyCost"))
572
+ TargetInstance.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavings"))
573
+ TargetInstance.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
574
+ TargetInstance.add_member(:default_target_instance, Shapes::ShapeRef.new(shape: GenericBoolean, location_name: "DefaultTargetInstance"))
575
+ TargetInstance.add_member(:resource_details, Shapes::ShapeRef.new(shape: ResourceDetails, location_name: "ResourceDetails"))
576
+ TargetInstance.add_member(:expected_resource_utilization, Shapes::ShapeRef.new(shape: ResourceUtilization, location_name: "ExpectedResourceUtilization"))
577
+ TargetInstance.struct_class = Types::TargetInstance
578
+
579
+ TargetInstancesList.member = Shapes::ShapeRef.new(shape: TargetInstance)
580
+
581
+ TerminateRecommendationDetail.add_member(:estimated_monthly_savings, Shapes::ShapeRef.new(shape: GenericString, location_name: "EstimatedMonthlySavings"))
582
+ TerminateRecommendationDetail.add_member(:currency_code, Shapes::ShapeRef.new(shape: GenericString, location_name: "CurrencyCode"))
583
+ TerminateRecommendationDetail.struct_class = Types::TerminateRecommendationDetail
584
+
484
585
  UnresolvableUsageUnitException.add_member(:message, Shapes::ShapeRef.new(shape: ErrorMessage, location_name: "Message"))
485
586
  UnresolvableUsageUnitException.struct_class = Types::UnresolvableUsageUnitException
486
587
 
@@ -582,6 +683,16 @@ module Aws::CostExplorer
582
683
  o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
583
684
  end)
584
685
 
686
+ api.add_operation(:get_rightsizing_recommendation, Seahorse::Model::Operation.new.tap do |o|
687
+ o.name = "GetRightsizingRecommendation"
688
+ o.http_method = "POST"
689
+ o.http_request_uri = "/"
690
+ o.input = Shapes::ShapeRef.new(shape: GetRightsizingRecommendationRequest)
691
+ o.output = Shapes::ShapeRef.new(shape: GetRightsizingRecommendationResponse)
692
+ o.errors << Shapes::ShapeRef.new(shape: LimitExceededException)
693
+ o.errors << Shapes::ShapeRef.new(shape: InvalidNextTokenException)
694
+ end)
695
+
585
696
  api.add_operation(:get_tags, Seahorse::Model::Operation.new.tap do |o|
586
697
  o.name = "GetTags"
587
698
  o.http_method = "POST"
@@ -155,6 +155,64 @@ module Aws::CostExplorer
155
155
  include Aws::Structure
156
156
  end
157
157
 
158
+ # Context about the current instance.
159
+ #
160
+ # @!attribute [rw] resource_id
161
+ # Resource ID of the current instance.
162
+ # @return [String]
163
+ #
164
+ # @!attribute [rw] tags
165
+ # Cost allocation resource tags applied to the instance.
166
+ # @return [Array<Types::TagValues>]
167
+ #
168
+ # @!attribute [rw] resource_details
169
+ # Details about the resource and utilization.
170
+ # @return [Types::ResourceDetails]
171
+ #
172
+ # @!attribute [rw] resource_utilization
173
+ # Utilization information of the current instance during the lookback
174
+ # period.
175
+ # @return [Types::ResourceUtilization]
176
+ #
177
+ # @!attribute [rw] reservation_covered_hours_in_lookback_period
178
+ # Number of hours during the lookback period covered by reservations.
179
+ # @return [String]
180
+ #
181
+ # @!attribute [rw] on_demand_hours_in_lookback_period
182
+ # Number of hours during the lookback period billed at On Demand
183
+ # rates.
184
+ # @return [String]
185
+ #
186
+ # @!attribute [rw] total_running_hours_in_lookback_period
187
+ # The total number of hours the instance ran during the lookback
188
+ # period.
189
+ # @return [String]
190
+ #
191
+ # @!attribute [rw] monthly_cost
192
+ # Current On Demand cost of operating this instance on a monthly
193
+ # basis.
194
+ # @return [String]
195
+ #
196
+ # @!attribute [rw] currency_code
197
+ # The currency code that Amazon Web Services used to calculate the
198
+ # costs for this instance.
199
+ # @return [String]
200
+ #
201
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/CurrentInstance AWS API Documentation
202
+ #
203
+ class CurrentInstance < Struct.new(
204
+ :resource_id,
205
+ :tags,
206
+ :resource_details,
207
+ :resource_utilization,
208
+ :reservation_covered_hours_in_lookback_period,
209
+ :on_demand_hours_in_lookback_period,
210
+ :total_running_hours_in_lookback_period,
211
+ :monthly_cost,
212
+ :currency_code)
213
+ include Aws::Structure
214
+ end
215
+
158
216
  # The requested data is unavailable.
159
217
  #
160
218
  # @!attribute [rw] message
@@ -206,7 +264,7 @@ module Aws::CostExplorer
206
264
  # data as a hash:
207
265
  #
208
266
  # {
209
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
267
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
210
268
  # values: ["Value"],
211
269
  # }
212
270
  #
@@ -305,6 +363,86 @@ module Aws::CostExplorer
305
363
  include Aws::Structure
306
364
  end
307
365
 
366
+ # Details on the Amazon EC2 Resource.
367
+ #
368
+ # @!attribute [rw] hourly_on_demand_rate
369
+ # Hourly public On Demand rate for the instance type.
370
+ # @return [String]
371
+ #
372
+ # @!attribute [rw] instance_type
373
+ # The type of Amazon Web Services instance.
374
+ # @return [String]
375
+ #
376
+ # @!attribute [rw] platform
377
+ # The platform of the Amazon Web Services instance. The platform is
378
+ # the specific combination of operating system, license model, and
379
+ # software on an instance.
380
+ # @return [String]
381
+ #
382
+ # @!attribute [rw] region
383
+ # The Amazon Web Services Region of the instance.
384
+ # @return [String]
385
+ #
386
+ # @!attribute [rw] sku
387
+ # The SKU of the product.
388
+ # @return [String]
389
+ #
390
+ # @!attribute [rw] memory
391
+ # Memory capacity of Amazon Web Services instance.
392
+ # @return [String]
393
+ #
394
+ # @!attribute [rw] network_performance
395
+ # Network performance capacity of the Amazon Web Services instance.
396
+ # @return [String]
397
+ #
398
+ # @!attribute [rw] storage
399
+ # The disk storage of the Amazon Web Services instance (Not EBS
400
+ # storage).
401
+ # @return [String]
402
+ #
403
+ # @!attribute [rw] vcpu
404
+ # Number of VCPU cores in the Amazon Web Services instance type.
405
+ # @return [String]
406
+ #
407
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/EC2ResourceDetails AWS API Documentation
408
+ #
409
+ class EC2ResourceDetails < Struct.new(
410
+ :hourly_on_demand_rate,
411
+ :instance_type,
412
+ :platform,
413
+ :region,
414
+ :sku,
415
+ :memory,
416
+ :network_performance,
417
+ :storage,
418
+ :vcpu)
419
+ include Aws::Structure
420
+ end
421
+
422
+ # Utilization metrics of the instance.
423
+ #
424
+ # @!attribute [rw] max_cpu_utilization_percentage
425
+ # Maximum observed or expected CPU utilization of the instance.
426
+ # @return [String]
427
+ #
428
+ # @!attribute [rw] max_memory_utilization_percentage
429
+ # Maximum observed or expected memory utilization of the instance.
430
+ # @return [String]
431
+ #
432
+ # @!attribute [rw] max_storage_utilization_percentage
433
+ # Maximum observed or expected storage utilization of the instance
434
+ # (does not measure EBS storage).
435
+ # @return [String]
436
+ #
437
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/EC2ResourceUtilization AWS API Documentation
438
+ #
439
+ class EC2ResourceUtilization < Struct.new(
440
+ :max_cpu_utilization_percentage,
441
+ :max_memory_utilization_percentage,
442
+ :max_storage_utilization_percentage)
443
+ include Aws::Structure
444
+ end
445
+
308
446
  # The Amazon EC2 hardware specifications that you want AWS to provide
309
447
  # recommendations for.
310
448
  #
@@ -405,11 +543,11 @@ module Aws::CostExplorer
405
543
  #
406
544
  # * Simple dimension values - You can set the dimension name and values
407
545
  # for the filters that you plan to use. For example, you can filter
408
- # for `INSTANCE_TYPE==m4.xlarge OR INSTANCE_TYPE==c4.large`. The
409
- # `Expression` for that looks like this:
546
+ # for `REGION==us-east-1 OR REGION==us-west-1`. The `Expression` for
547
+ # that looks like this:
410
548
  #
411
- # `\{ "Dimensions": \{ "Key": "INSTANCE_TYPE", "Values": [
412
- # "m4.xlarge", c4.large” ] \} \}`
549
+ # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
550
+ # “us-west-1” ] \} \}`
413
551
  #
414
552
  # The list of dimension values are OR'd together to retrieve cost or
415
553
  # usage data. You can create `Expression` and `DimensionValues`
@@ -420,14 +558,14 @@ module Aws::CostExplorer
420
558
  # multiple `Expression` types and the logical operators `AND/OR/NOT`
421
559
  # to create a list of one or more `Expression` objects. This allows
422
560
  # you to filter on more advanced options. For example, you can filter
423
- # on `((INSTANCE_TYPE == m4.large OR INSTANCE_TYPE == m3.large) OR
424
- # (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer)`. The
425
- # `Expression` for that looks like this:
561
+ # on `((REGION == us-east-1 OR REGION == us-west-1) OR (TAG.Type ==
562
+ # Type1)) AND (USAGE_TYPE != DataTransfer)`. The `Expression` for that
563
+ # looks like this:
426
564
  #
427
- # `\{ "And": [ \{"Or": [ \{"Dimensions": \{ "Key": "INSTANCE_TYPE",
428
- # "Values": [ "m4.x.large", "c4.large" ] \}\}, \{"Tags": \{ "Key":
429
- # "TagName", "Values": ["Value1"] \} \} ]\}, \{"Not": \{"Dimensions":
430
- # \{ "Key": "USAGE_TYPE", "Values": ["DataTransfer"] \}\}\} ] \} `
565
+ # `\{ "And": [ \{"Or": [ \{"Dimensions": \{ "Key": "REGION", "Values":
566
+ # [ "us-east-1", "us-west-1" ] \}\}, \{"Tags": \{ "Key": "TagName",
567
+ # "Values": ["Value1"] \} \} ]\}, \{"Not": \{"Dimensions": \{ "Key":
568
+ # "USAGE_TYPE", "Values": ["DataTransfer"] \}\}\} ] \} `
431
569
  #
432
570
  # <note markdown="1"> Because each `Expression` can have only one operator, the service
433
571
  # returns an error if more than one is specified. The following
@@ -438,6 +576,13 @@ module Aws::CostExplorer
438
576
  # ` \{ "And": [ ... ], "DimensionValues": \{ "Dimension":
439
577
  # "USAGE_TYPE", "Values": [ "DataTransfer" ] \} \} `
440
578
  #
579
+ # <note markdown="1"> For `GetRightsizingRecommendation` action, a combination of OR and NOT
580
+ # is not supported. OR is not supported between different dimensions, or
581
+ # dimensions and tags. NOT operators aren't supported. Dimentions are
582
+ # also limited to `LINKED_ACCOUNT`, `REGION`, or `RIGHTSIZING_TYPE`.
583
+ #
584
+ # </note>
585
+ #
441
586
  # @note When making an API call, you may pass Expression
442
587
  # data as a hash:
443
588
  #
@@ -454,7 +599,7 @@ module Aws::CostExplorer
454
599
  # # recursive Expression
455
600
  # },
456
601
  # dimensions: {
457
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
602
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
458
603
  # values: ["Value"],
459
604
  # },
460
605
  # tags: {
@@ -475,7 +620,7 @@ module Aws::CostExplorer
475
620
  # # recursive Expression
476
621
  # },
477
622
  # dimensions: {
478
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
623
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
479
624
  # values: ["Value"],
480
625
  # },
481
626
  # tags: {
@@ -499,7 +644,7 @@ module Aws::CostExplorer
499
644
  # # recursive Expression
500
645
  # },
501
646
  # dimensions: {
502
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
647
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
503
648
  # values: ["Value"],
504
649
  # },
505
650
  # tags: {
@@ -508,7 +653,7 @@ module Aws::CostExplorer
508
653
  # },
509
654
  # },
510
655
  # dimensions: {
511
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
656
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
512
657
  # values: ["Value"],
513
658
  # },
514
659
  # tags: {
@@ -600,7 +745,7 @@ module Aws::CostExplorer
600
745
  # # recursive Expression
601
746
  # },
602
747
  # dimensions: {
603
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
748
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
604
749
  # values: ["Value"],
605
750
  # },
606
751
  # tags: {
@@ -752,7 +897,7 @@ module Aws::CostExplorer
752
897
  # # recursive Expression
753
898
  # },
754
899
  # dimensions: {
755
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
900
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
756
901
  # values: ["Value"],
757
902
  # },
758
903
  # tags: {
@@ -850,7 +995,7 @@ module Aws::CostExplorer
850
995
  # start: "YearMonthDay", # required
851
996
  # end: "YearMonthDay", # required
852
997
  # },
853
- # dimension: "AZ", # required, accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
998
+ # dimension: "AZ", # required, accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
854
999
  # context: "COST_AND_USAGE", # accepts COST_AND_USAGE, RESERVATIONS
855
1000
  # next_page_token: "NextPageToken",
856
1001
  # }
@@ -1113,7 +1258,7 @@ module Aws::CostExplorer
1113
1258
  # # recursive Expression
1114
1259
  # },
1115
1260
  # dimensions: {
1116
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
1261
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1117
1262
  # values: ["Value"],
1118
1263
  # },
1119
1264
  # tags: {
@@ -1392,7 +1537,7 @@ module Aws::CostExplorer
1392
1537
  # # recursive Expression
1393
1538
  # },
1394
1539
  # dimensions: {
1395
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
1540
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1396
1541
  # values: ["Value"],
1397
1542
  # },
1398
1543
  # tags: {
@@ -1503,6 +1648,137 @@ module Aws::CostExplorer
1503
1648
  include Aws::Structure
1504
1649
  end
1505
1650
 
1651
+ # @note When making an API call, you may pass GetRightsizingRecommendationRequest
1652
+ # data as a hash:
1653
+ #
1654
+ # {
1655
+ # filter: {
1656
+ # or: [
1657
+ # {
1658
+ # # recursive Expression
1659
+ # },
1660
+ # ],
1661
+ # and: [
1662
+ # {
1663
+ # # recursive Expression
1664
+ # },
1665
+ # ],
1666
+ # not: {
1667
+ # # recursive Expression
1668
+ # },
1669
+ # dimensions: {
1670
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1671
+ # values: ["Value"],
1672
+ # },
1673
+ # tags: {
1674
+ # key: "TagKey",
1675
+ # values: ["Value"],
1676
+ # },
1677
+ # },
1678
+ # service: "GenericString", # required
1679
+ # page_size: 1,
1680
+ # next_page_token: "NextPageToken",
1681
+ # }
1682
+ #
1683
+ # @!attribute [rw] filter
1684
+ # Use `Expression` to filter by cost or by usage. There are two
1685
+ # patterns:
1686
+ #
1687
+ # * Simple dimension values - You can set the dimension name and
1688
+ # values for the filters that you plan to use. For example, you can
1689
+ # filter for `REGION==us-east-1 OR REGION==us-west-1`. The
1690
+ # `Expression` for that looks like this:
1691
+ #
1692
+ # `\{ "Dimensions": \{ "Key": "REGION", "Values": [ "us-east-1",
1693
+ # “us-west-1” ] \} \}`
1694
+ #
1695
+ # The list of dimension values are OR'd together to retrieve cost
1696
+ # or usage data. You can create `Expression` and `DimensionValues`
1697
+ # objects using either `with*` methods or `set*` methods in multiple
1698
+ # lines.
1699
+ #
1700
+ # * Compound dimension values with logical operations - You can use
1701
+ # multiple `Expression` types and the logical operators `AND/OR/NOT`
1702
+ # to create a list of one or more `Expression` objects. This allows
1703
+ # you to filter on more advanced options. For example, you can
1704
+ # filter on `((REGION == us-east-1 OR REGION == us-west-1) OR
1705
+ # (TAG.Type == Type1)) AND (USAGE_TYPE != DataTransfer)`. The
1706
+ # `Expression` for that looks like this:
1707
+ #
1708
+ # `\{ "And": [ \{"Or": [ \{"Dimensions": \{ "Key": "REGION",
1709
+ # "Values": [ "us-east-1", "us-west-1" ] \}\}, \{"Tags": \{ "Key":
1710
+ # "TagName", "Values": ["Value1"] \} \} ]\}, \{"Not":
1711
+ # \{"Dimensions": \{ "Key": "USAGE_TYPE", "Values": ["DataTransfer"]
1712
+ # \}\}\} ] \} `
1713
+ #
1714
+ # <note markdown="1"> Because each `Expression` can have only one operator, the service
1715
+ # returns an error if more than one is specified. The following
1716
+ # example shows an `Expression` object that creates an error.
1717
+ #
1718
+ # </note>
1719
+ #
1720
+ # ` \{ "And": [ ... ], "DimensionValues": \{ "Dimension":
1721
+ # "USAGE_TYPE", "Values": [ "DataTransfer" ] \} \} `
1722
+ #
1723
+ # <note markdown="1"> For `GetRightsizingRecommendation` action, a combination of OR and
1724
+ # NOT is not supported. OR is not supported between different
1725
+ # dimensions, or dimensions and tags. NOT operators aren't supported.
1726
+ # Dimentions are also limited to `LINKED_ACCOUNT`, `REGION`, or
1727
+ # `RIGHTSIZING_TYPE`.
1728
+ #
1729
+ # </note>
1730
+ # @return [Types::Expression]
1731
+ #
1732
+ # @!attribute [rw] service
1733
+ # The specific service that you want recommendations for.
1734
+ # @return [String]
1735
+ #
1736
+ # @!attribute [rw] page_size
1737
+ # The number of recommendations that you want returned in a single
1738
+ # response object.
1739
+ # @return [Integer]
1740
+ #
1741
+ # @!attribute [rw] next_page_token
1742
+ # The pagination token that indicates the next set of results that you
1743
+ # want to retrieve.
1744
+ # @return [String]
1745
+ #
1746
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendationRequest AWS API Documentation
1747
+ #
1748
+ class GetRightsizingRecommendationRequest < Struct.new(
1749
+ :filter,
1750
+ :service,
1751
+ :page_size,
1752
+ :next_page_token)
1753
+ include Aws::Structure
1754
+ end
1755
+
1756
+ # @!attribute [rw] metadata
1757
+ # Information regarding this specific recommendation set.
1758
+ # @return [Types::RightsizingRecommendationMetadata]
1759
+ #
1760
+ # @!attribute [rw] summary
1761
+ # Summary of this recommendation set.
1762
+ # @return [Types::RightsizingRecommendationSummary]
1763
+ #
1764
+ # @!attribute [rw] rightsizing_recommendations
1765
+ # Recommendations to rightsize resources.
1766
+ # @return [Array<Types::RightsizingRecommendation>]
1767
+ #
1768
+ # @!attribute [rw] next_page_token
1769
+ # The token to retrieve the next set of results.
1770
+ # @return [String]
1771
+ #
1772
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/GetRightsizingRecommendationResponse AWS API Documentation
1773
+ #
1774
+ class GetRightsizingRecommendationResponse < Struct.new(
1775
+ :metadata,
1776
+ :summary,
1777
+ :rightsizing_recommendations,
1778
+ :next_page_token)
1779
+ include Aws::Structure
1780
+ end
1781
+
1506
1782
  # @note When making an API call, you may pass GetTagsRequest
1507
1783
  # data as a hash:
1508
1784
  #
@@ -1601,7 +1877,7 @@ module Aws::CostExplorer
1601
1877
  # # recursive Expression
1602
1878
  # },
1603
1879
  # dimensions: {
1604
- # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID
1880
+ # key: "AZ", # accepts AZ, INSTANCE_TYPE, LINKED_ACCOUNT, OPERATION, PURCHASE_TYPE, REGION, SERVICE, USAGE_TYPE, USAGE_TYPE_GROUP, RECORD_TYPE, OPERATING_SYSTEM, TENANCY, SCOPE, PLATFORM, SUBSCRIPTION_ID, LEGAL_ENTITY_NAME, DEPLOYMENT_OPTION, DATABASE_ENGINE, CACHE_ENGINE, INSTANCE_TYPE_FAMILY, BILLING_ENTITY, RESERVATION_ID, RIGHTSIZING_TYPE
1605
1881
  # values: ["Value"],
1606
1882
  # },
1607
1883
  # tags: {
@@ -1802,6 +2078,20 @@ module Aws::CostExplorer
1802
2078
  include Aws::Structure
1803
2079
  end
1804
2080
 
2081
+ # Details on the modification recommendation.
2082
+ #
2083
+ # @!attribute [rw] target_instances
2084
+ # Identifies whether this instance type is the Amazon Web Services
2085
+ # default recommendation.
2086
+ # @return [Array<Types::TargetInstance>]
2087
+ #
2088
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ModifyRecommendationDetail AWS API Documentation
2089
+ #
2090
+ class ModifyRecommendationDetail < Struct.new(
2091
+ :target_instances)
2092
+ include Aws::Structure
2093
+ end
2094
+
1805
2095
  # Details about the Amazon RDS instances that AWS recommends that you
1806
2096
  # purchase.
1807
2097
  #
@@ -2260,6 +2550,32 @@ module Aws::CostExplorer
2260
2550
  include Aws::Structure
2261
2551
  end
2262
2552
 
2553
+ # Details on the resource.
2554
+ #
2555
+ # @!attribute [rw] ec2_resource_details
2556
+ # Details on the Amazon EC2 resource.
2557
+ # @return [Types::EC2ResourceDetails]
2558
+ #
2559
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ResourceDetails AWS API Documentation
2560
+ #
2561
+ class ResourceDetails < Struct.new(
2562
+ :ec2_resource_details)
2563
+ include Aws::Structure
2564
+ end
2565
+
2566
+ # Resource utilization of current resource.
2567
+ #
2568
+ # @!attribute [rw] ec2_resource_utilization
2569
+ # Utilization of current Amazon EC2 Instance
2570
+ # @return [Types::EC2ResourceUtilization]
2571
+ #
2572
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/ResourceUtilization AWS API Documentation
2573
+ #
2574
+ class ResourceUtilization < Struct.new(
2575
+ :ec2_resource_utilization)
2576
+ include Aws::Structure
2577
+ end
2578
+
2263
2579
  # The result that is associated with a time period.
2264
2580
  #
2265
2581
  # @!attribute [rw] time_period
@@ -2288,6 +2604,95 @@ module Aws::CostExplorer
2288
2604
  include Aws::Structure
2289
2605
  end
2290
2606
 
2607
+ # Recommendations to rightsize resources.
2608
+ #
2609
+ # @!attribute [rw] account_id
2610
+ # The account that this recommendation is for.
2611
+ # @return [String]
2612
+ #
2613
+ # @!attribute [rw] current_instance
2614
+ # Context regarding the current instance.
2615
+ # @return [Types::CurrentInstance]
2616
+ #
2617
+ # @!attribute [rw] rightsizing_type
2618
+ # Recommendation to either terminate or modify the resource.
2619
+ # @return [String]
2620
+ #
2621
+ # @!attribute [rw] modify_recommendation_detail
2622
+ # Details for modification recommendations.
2623
+ # @return [Types::ModifyRecommendationDetail]
2624
+ #
2625
+ # @!attribute [rw] terminate_recommendation_detail
2626
+ # Details for termination recommendations.
2627
+ # @return [Types::TerminateRecommendationDetail]
2628
+ #
2629
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RightsizingRecommendation AWS API Documentation
2630
+ #
2631
+ class RightsizingRecommendation < Struct.new(
2632
+ :account_id,
2633
+ :current_instance,
2634
+ :rightsizing_type,
2635
+ :modify_recommendation_detail,
2636
+ :terminate_recommendation_detail)
2637
+ include Aws::Structure
2638
+ end
2639
+
2640
+ # Metadata for this recommendation set.
2641
+ #
2642
+ # @!attribute [rw] recommendation_id
2643
+ # The ID for this specific recommendation.
2644
+ # @return [String]
2645
+ #
2646
+ # @!attribute [rw] generation_timestamp
2647
+ # The time stamp for when Amazon Web Services made this
2648
+ # recommendation.
2649
+ # @return [String]
2650
+ #
2651
+ # @!attribute [rw] lookback_period_in_days
2652
+ # How many days of previous usage that Amazon Web Services considers
2653
+ # when making this recommendation.
2654
+ # @return [String]
2655
+ #
2656
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RightsizingRecommendationMetadata AWS API Documentation
2657
+ #
2658
+ class RightsizingRecommendationMetadata < Struct.new(
2659
+ :recommendation_id,
2660
+ :generation_timestamp,
2661
+ :lookback_period_in_days)
2662
+ include Aws::Structure
2663
+ end
2664
+
2665
+ # Summary of rightsizing recommendations
2666
+ #
2667
+ # @!attribute [rw] total_recommendation_count
2668
+ # Total number of instance recommendations.
2669
+ # @return [String]
2670
+ #
2671
+ # @!attribute [rw] estimated_total_monthly_savings_amount
2672
+ # Estimated total savings resulting from modifications, on a monthly
2673
+ # basis.
2674
+ # @return [String]
2675
+ #
2676
+ # @!attribute [rw] savings_currency_code
2677
+ # The currency code that Amazon Web Services used to calculate the
2678
+ # savings.
2679
+ # @return [String]
2680
+ #
2681
+ # @!attribute [rw] savings_percentage
2682
+ # Savings percentage based on the recommended modifications, relative
2683
+ # to the total On Demand costs associated with these instances.
2684
+ # @return [String]
2685
+ #
2686
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/RightsizingRecommendationSummary AWS API Documentation
2687
+ #
2688
+ class RightsizingRecommendationSummary < Struct.new(
2689
+ :total_recommendation_count,
2690
+ :estimated_total_monthly_savings_amount,
2691
+ :savings_currency_code,
2692
+ :savings_percentage)
2693
+ include Aws::Structure
2694
+ end
2695
+
2291
2696
  # Hardware specifications for the service that you want recommendations
2292
2697
  # for.
2293
2698
  #
@@ -2338,9 +2743,68 @@ module Aws::CostExplorer
2338
2743
  include Aws::Structure
2339
2744
  end
2340
2745
 
2746
+ # Details on recommended instance.
2747
+ #
2748
+ # @!attribute [rw] estimated_monthly_cost
2749
+ # Expected cost to operate this instance type on a monthly basis.
2750
+ # @return [String]
2751
+ #
2752
+ # @!attribute [rw] estimated_monthly_savings
2753
+ # Estimated savings resulting from modification, on a monthly basis.
2754
+ # @return [String]
2755
+ #
2756
+ # @!attribute [rw] currency_code
2757
+ # The currency code that Amazon Web Services used to calculate the
2758
+ # costs for this instance.
2759
+ # @return [String]
2760
+ #
2761
+ # @!attribute [rw] default_target_instance
2762
+ # Indicates whether or not this recommendation is the defaulted Amazon
2763
+ # Web Services recommendation.
2764
+ # @return [Boolean]
2765
+ #
2766
+ # @!attribute [rw] resource_details
2767
+ # Details on the target instance type.
2768
+ # @return [Types::ResourceDetails]
2769
+ #
2770
+ # @!attribute [rw] expected_resource_utilization
2771
+ # Expected utilization metrics for target instance type.
2772
+ # @return [Types::ResourceUtilization]
2773
+ #
2774
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/TargetInstance AWS API Documentation
2775
+ #
2776
+ class TargetInstance < Struct.new(
2777
+ :estimated_monthly_cost,
2778
+ :estimated_monthly_savings,
2779
+ :currency_code,
2780
+ :default_target_instance,
2781
+ :resource_details,
2782
+ :expected_resource_utilization)
2783
+ include Aws::Structure
2784
+ end
2785
+
2786
+ # Details on termination recommendation.
2787
+ #
2788
+ # @!attribute [rw] estimated_monthly_savings
2789
+ # Estimated savings resulting from modification, on a monthly basis.
2790
+ # @return [String]
2791
+ #
2792
+ # @!attribute [rw] currency_code
2793
+ # The currency code that Amazon Web Services used to calculate the
2794
+ # costs for this instance.
2795
+ # @return [String]
2796
+ #
2797
+ # @see http://docs.aws.amazon.com/goto/WebAPI/ce-2017-10-25/TerminateRecommendationDetail AWS API Documentation
2798
+ #
2799
+ class TerminateRecommendationDetail < Struct.new(
2800
+ :estimated_monthly_savings,
2801
+ :currency_code)
2802
+ include Aws::Structure
2803
+ end
2804
+
2341
2805
  # Cost Explorer was unable to identify the usage unit. Provide
2342
2806
  # `UsageType/UsageTypeGroup` filter selections that contain matching
2343
- # units, for example: `hours`.(
2807
+ # units, for example: `hours`.
2344
2808
  #
2345
2809
  # @!attribute [rw] message
2346
2810
  # @return [String]
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.28.0
4
+ version: 1.29.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: 2019-07-25 00:00:00.000000000 Z
11
+ date: 2019-07-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core