aws-sdk-waf 1.0.0.rc7 → 1.0.0.rc8

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: 3997031fd09e68563c773803b97be7fba1b2d9f0
4
- data.tar.gz: 2da8ee1e6e1c7d941deebb58d97e13c2ed72b737
3
+ metadata.gz: 663905a7b3208929449c414eb0e1e983a772e1e4
4
+ data.tar.gz: 8edaf15d950ba9089938d286c197277dbf614a8f
5
5
  SHA512:
6
- metadata.gz: c91f90afccab4c40d172bb687fc8fc048f25f065f6bd2a19607852dd901f651c0bcd64c0e0878e4f58f2e98e0e9fda7ecb286403461986cbebbf6fca04c219be
7
- data.tar.gz: b6bc276bc4440499930322a104132e3bc8ee0bb29ac656c0498faa6a0ae5d23c890cd9cfc5fedb7059675f74170ff8f3734ef13fd41da1f9bd9f668a5e359d2c
6
+ metadata.gz: cfdd0d1f5e06053b2a9711b223194fa266fb8cd735ce32b2a5652fdf6ddb53321c6055ceee08991afc0f428fa9cc9c39a1c3c62992f209ada54d9ff86ae2378b
7
+ data.tar.gz: dab98399f11222f93162bdd7ccda2faa9ca6c34e337bcd4c8cc10cba2767f98276458002e05ccaaeb5f052b03e0a153e995f1e64a84f7dc283b0721568867ed7
data/lib/aws-sdk-waf.rb CHANGED
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-waf/customizations'
42
42
  # @service
43
43
  module Aws::WAF
44
44
 
45
- GEM_VERSION = '1.0.0.rc7'
45
+ GEM_VERSION = '1.0.0.rc8'
46
46
 
47
47
  end
@@ -288,6 +288,143 @@ module Aws::WAF
288
288
  req.send_request(options)
289
289
  end
290
290
 
291
+ # Creates a RateBasedRule. The `RateBasedRule` contains a `RateLimit`,
292
+ # which specifies the maximum number of requests that AWS WAF allows
293
+ # from a specified IP address in a five-minute period. The
294
+ # `RateBasedRule` also contains the `IPSet` objects, `ByteMatchSet`
295
+ # objects, and other predicates that identify the requests that you want
296
+ # to count or block if these requests exceed the `RateLimit`.
297
+ #
298
+ # If you add more than one predicate to a `RateBasedRule`, a request not
299
+ # only must exceed the `RateLimit`, but it also must match all the
300
+ # specifications to be counted or blocked. For example, suppose you add
301
+ # the following to a `RateBasedRule`\:
302
+ #
303
+ # * An `IPSet` that matches the IP address `192.0.2.44/32`
304
+ #
305
+ # * A `ByteMatchSet` that matches `BadBot` in the `User-Agent` header
306
+ #
307
+ # Further, you specify a `RateLimit` of 15,000.
308
+ #
309
+ # You then add the `RateBasedRule` to a `WebACL` and specify that you
310
+ # want to block requests that meet the conditions in the rule. For a
311
+ # request to be blocked, it must come from the IP address 192.0.2.44
312
+ # *and* the `User-Agent` header in the request must contain the value
313
+ # `BadBot`. Further, requests that match these two conditions must be
314
+ # received at a rate of more than 15,000 requests every five minutes. If
315
+ # both conditions are met and the rate is exceeded, AWS WAF blocks the
316
+ # requests. If the rate drops below 15,000 for a five-minute period, AWS
317
+ # WAF no longer blocks the requests.
318
+ #
319
+ # As a second example, suppose you want to limit requests to a
320
+ # particular page on your site. To do this, you could add the following
321
+ # to a `RateBasedRule`\:
322
+ #
323
+ # * A `ByteMatchSet` with `FieldToMatch` of `URI`
324
+ #
325
+ # * A `PositionalConstraint` of `STARTS_WITH`
326
+ #
327
+ # * A `TargetString` of `login`
328
+ #
329
+ # Further, you specify a `RateLimit` of 15,000.
330
+ #
331
+ # By adding this `RateBasedRule` to a `WebACL`, you could limit requests
332
+ # to your login page without affecting the rest of your site.
333
+ #
334
+ # To create and configure a `RateBasedRule`, perform the following
335
+ # steps:
336
+ #
337
+ # 1. Create and update the predicates that you want to include in the
338
+ # rule. For more information, see CreateByteMatchSet, CreateIPSet,
339
+ # and CreateSqlInjectionMatchSet.
340
+ #
341
+ # 2. Use GetChangeToken to get the change token that you provide in the
342
+ # `ChangeToken` parameter of a `CreateRule` request.
343
+ #
344
+ # 3. Submit a `CreateRateBasedRule` request.
345
+ #
346
+ # 4. Use `GetChangeToken` to get the change token that you provide in
347
+ # the `ChangeToken` parameter of an UpdateRule request.
348
+ #
349
+ # 5. Submit an `UpdateRateBasedRule` request to specify the predicates
350
+ # that you want to include in the rule.
351
+ #
352
+ # 6. Create and update a `WebACL` that contains the `RateBasedRule`.
353
+ # For more information, see CreateWebACL.
354
+ #
355
+ # For more information about how to use the AWS WAF API to allow or
356
+ # block HTTP requests, see the [AWS WAF Developer Guide][1].
357
+ #
358
+ #
359
+ #
360
+ # [1]: http://docs.aws.amazon.com/waf/latest/developerguide/
361
+ #
362
+ # @option params [required, String] :name
363
+ # A friendly name or description of the RateBasedRule. You can't change
364
+ # the name of a `RateBasedRule` after you create it.
365
+ #
366
+ # @option params [required, String] :metric_name
367
+ # A friendly name or description for the metrics for this
368
+ # `RateBasedRule`. The name can contain only alphanumeric characters
369
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
370
+ # the name of the metric after you create the `RateBasedRule`.
371
+ #
372
+ # @option params [required, String] :rate_key
373
+ # The field that AWS WAF uses to determine if requests are likely
374
+ # arriving from a single source and thus subject to rate monitoring. The
375
+ # only valid value for `RateKey` is `IP`. `IP` indicates that requests
376
+ # that arrive from the same IP address are subject to the `RateLimit`
377
+ # that is specified in the `RateBasedRule`.
378
+ #
379
+ # @option params [required, Integer] :rate_limit
380
+ # The maximum number of requests, which have an identical value in the
381
+ # field that is specified by `RateKey`, allowed in a five-minute period.
382
+ # If the number of requests exceeds the `RateLimit` and the other
383
+ # predicates specified in the rule are also met, AWS WAF triggers the
384
+ # action that is specified for this rule.
385
+ #
386
+ # @option params [required, String] :change_token
387
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
388
+ # request. You can also use this value to query the status of the
389
+ # request. For more information, see GetChangeTokenStatus.
390
+ #
391
+ # @return [Types::CreateRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
392
+ #
393
+ # * {Types::CreateRateBasedRuleResponse#rule #rule} => Types::RateBasedRule
394
+ # * {Types::CreateRateBasedRuleResponse#change_token #change_token} => String
395
+ #
396
+ # @example Request syntax with placeholder values
397
+ #
398
+ # resp = client.create_rate_based_rule({
399
+ # name: "ResourceName", # required
400
+ # metric_name: "MetricName", # required
401
+ # rate_key: "IP", # required, accepts IP
402
+ # rate_limit: 1, # required
403
+ # change_token: "ChangeToken", # required
404
+ # })
405
+ #
406
+ # @example Response structure
407
+ #
408
+ # resp.rule.rule_id #=> String
409
+ # resp.rule.name #=> String
410
+ # resp.rule.metric_name #=> String
411
+ # resp.rule.match_predicates #=> Array
412
+ # resp.rule.match_predicates[0].negated #=> Boolean
413
+ # resp.rule.match_predicates[0].type #=> String, one of "IPMatch", "ByteMatch", "SqlInjectionMatch", "SizeConstraint", "XssMatch"
414
+ # resp.rule.match_predicates[0].data_id #=> String
415
+ # resp.rule.rate_key #=> String, one of "IP"
416
+ # resp.rule.rate_limit #=> Integer
417
+ # resp.change_token #=> String
418
+ #
419
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRule AWS API Documentation
420
+ #
421
+ # @overload create_rate_based_rule(params = {})
422
+ # @param [Hash] params ({})
423
+ def create_rate_based_rule(params = {}, options = {})
424
+ req = build_request(:create_rate_based_rule, params)
425
+ req.send_request(options)
426
+ end
427
+
291
428
  # Creates a `Rule`, which contains the `IPSet` objects, `ByteMatchSet`
292
429
  # objects, and other predicates that identify the requests that you want
293
430
  # to block. If you add more than one predicate to a `Rule`, a request
@@ -596,6 +733,7 @@ module Aws::WAF
596
733
  # resp.web_acl.rules[0].priority #=> Integer
597
734
  # resp.web_acl.rules[0].rule_id #=> String
598
735
  # resp.web_acl.rules[0].action.type #=> String, one of "BLOCK", "ALLOW", "COUNT"
736
+ # resp.web_acl.rules[0].type #=> String, one of "REGULAR", "RATE_BASED"
599
737
  # resp.change_token #=> String
600
738
  #
601
739
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateWebACL AWS API Documentation
@@ -767,6 +905,54 @@ module Aws::WAF
767
905
  req.send_request(options)
768
906
  end
769
907
 
908
+ # Permanently deletes a RateBasedRule. You can't delete a rule if it's
909
+ # still used in any `WebACL` objects or if it still includes any
910
+ # predicates, such as `ByteMatchSet` objects.
911
+ #
912
+ # If you just want to remove a rule from a `WebACL`, use UpdateWebACL.
913
+ #
914
+ # To permanently delete a `RateBasedRule` from AWS WAF, perform the
915
+ # following steps:
916
+ #
917
+ # 1. Update the `RateBasedRule` to remove predicates, if any. For more
918
+ # information, see UpdateRateBasedRule.
919
+ #
920
+ # 2. Use GetChangeToken to get the change token that you provide in the
921
+ # `ChangeToken` parameter of a `DeleteRateBasedRule` request.
922
+ #
923
+ # 3. Submit a `DeleteRateBasedRule` request.
924
+ #
925
+ # @option params [required, String] :rule_id
926
+ # The `RuleId` of the RateBasedRule that you want to delete. `RuleId` is
927
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
928
+ #
929
+ # @option params [required, String] :change_token
930
+ # The value returned by the most recent call to GetChangeToken.
931
+ #
932
+ # @return [Types::DeleteRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
933
+ #
934
+ # * {Types::DeleteRateBasedRuleResponse#change_token #change_token} => String
935
+ #
936
+ # @example Request syntax with placeholder values
937
+ #
938
+ # resp = client.delete_rate_based_rule({
939
+ # rule_id: "ResourceId", # required
940
+ # change_token: "ChangeToken", # required
941
+ # })
942
+ #
943
+ # @example Response structure
944
+ #
945
+ # resp.change_token #=> String
946
+ #
947
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRule AWS API Documentation
948
+ #
949
+ # @overload delete_rate_based_rule(params = {})
950
+ # @param [Hash] params ({})
951
+ def delete_rate_based_rule(params = {}, options = {})
952
+ req = build_request(:delete_rate_based_rule, params)
953
+ req.send_request(options)
954
+ end
955
+
770
956
  # Permanently deletes a Rule. You can't delete a `Rule` if it's still
771
957
  # used in any `WebACL` objects or if it still includes any predicates,
772
958
  # such as `ByteMatchSet` objects.
@@ -1151,6 +1337,86 @@ module Aws::WAF
1151
1337
  req.send_request(options)
1152
1338
  end
1153
1339
 
1340
+ # Returns the RateBasedRule that is specified by the `RuleId` that you
1341
+ # included in the `GetRateBasedRule` request.
1342
+ #
1343
+ # @option params [required, String] :rule_id
1344
+ # The `RuleId` of the RateBasedRule that you want to get. `RuleId` is
1345
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
1346
+ #
1347
+ # @return [Types::GetRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1348
+ #
1349
+ # * {Types::GetRateBasedRuleResponse#rule #rule} => Types::RateBasedRule
1350
+ #
1351
+ # @example Request syntax with placeholder values
1352
+ #
1353
+ # resp = client.get_rate_based_rule({
1354
+ # rule_id: "ResourceId", # required
1355
+ # })
1356
+ #
1357
+ # @example Response structure
1358
+ #
1359
+ # resp.rule.rule_id #=> String
1360
+ # resp.rule.name #=> String
1361
+ # resp.rule.metric_name #=> String
1362
+ # resp.rule.match_predicates #=> Array
1363
+ # resp.rule.match_predicates[0].negated #=> Boolean
1364
+ # resp.rule.match_predicates[0].type #=> String, one of "IPMatch", "ByteMatch", "SqlInjectionMatch", "SizeConstraint", "XssMatch"
1365
+ # resp.rule.match_predicates[0].data_id #=> String
1366
+ # resp.rule.rate_key #=> String, one of "IP"
1367
+ # resp.rule.rate_limit #=> Integer
1368
+ #
1369
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRule AWS API Documentation
1370
+ #
1371
+ # @overload get_rate_based_rule(params = {})
1372
+ # @param [Hash] params ({})
1373
+ def get_rate_based_rule(params = {}, options = {})
1374
+ req = build_request(:get_rate_based_rule, params)
1375
+ req.send_request(options)
1376
+ end
1377
+
1378
+ # Returns an array of IP addresses currently being blocked by the
1379
+ # RateBasedRule that is specified by the `RuleId`. The maximum number of
1380
+ # managed keys that will be blocked is 10,000. If more than 10,000
1381
+ # addresses exceed the rate limit, the 10,000 addresses with the highest
1382
+ # rates will be blocked.
1383
+ #
1384
+ # @option params [required, String] :rule_id
1385
+ # The `RuleId` of the RateBasedRule for which you want to get a list of
1386
+ # `ManagedKeys`. `RuleId` is returned by CreateRateBasedRule and by
1387
+ # ListRateBasedRules.
1388
+ #
1389
+ # @option params [String] :next_marker
1390
+ # A null value and not currently used. Do not include this in your
1391
+ # request.
1392
+ #
1393
+ # @return [Types::GetRateBasedRuleManagedKeysResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1394
+ #
1395
+ # * {Types::GetRateBasedRuleManagedKeysResponse#managed_keys #managed_keys} => Array<String>
1396
+ # * {Types::GetRateBasedRuleManagedKeysResponse#next_marker #next_marker} => String
1397
+ #
1398
+ # @example Request syntax with placeholder values
1399
+ #
1400
+ # resp = client.get_rate_based_rule_managed_keys({
1401
+ # rule_id: "ResourceId", # required
1402
+ # next_marker: "NextMarker",
1403
+ # })
1404
+ #
1405
+ # @example Response structure
1406
+ #
1407
+ # resp.managed_keys #=> Array
1408
+ # resp.managed_keys[0] #=> String
1409
+ # resp.next_marker #=> String
1410
+ #
1411
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeys AWS API Documentation
1412
+ #
1413
+ # @overload get_rate_based_rule_managed_keys(params = {})
1414
+ # @param [Hash] params ({})
1415
+ def get_rate_based_rule_managed_keys(params = {}, options = {})
1416
+ req = build_request(:get_rate_based_rule_managed_keys, params)
1417
+ req.send_request(options)
1418
+ end
1419
+
1154
1420
  # Returns the Rule that is specified by the `RuleId` that you included
1155
1421
  # in the `GetRule` request.
1156
1422
  #
@@ -1372,6 +1638,7 @@ module Aws::WAF
1372
1638
  # resp.web_acl.rules[0].priority #=> Integer
1373
1639
  # resp.web_acl.rules[0].rule_id #=> String
1374
1640
  # resp.web_acl.rules[0].action.type #=> String, one of "BLOCK", "ALLOW", "COUNT"
1641
+ # resp.web_acl.rules[0].type #=> String, one of "REGULAR", "RATE_BASED"
1375
1642
  #
1376
1643
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetWebACL AWS API Documentation
1377
1644
  #
@@ -1506,6 +1773,50 @@ module Aws::WAF
1506
1773
  req.send_request(options)
1507
1774
  end
1508
1775
 
1776
+ # Returns an array of RuleSummary objects.
1777
+ #
1778
+ # @option params [String] :next_marker
1779
+ # If you specify a value for `Limit` and you have more `Rules` than the
1780
+ # value of `Limit`, AWS WAF returns a `NextMarker` value in the response
1781
+ # that allows you to list another group of `Rules`. For the second and
1782
+ # subsequent `ListRateBasedRules` requests, specify the value of
1783
+ # `NextMarker` from the previous response to get information about
1784
+ # another batch of `Rules`.
1785
+ #
1786
+ # @option params [Integer] :limit
1787
+ # Specifies the number of `Rules` that you want AWS WAF to return for
1788
+ # this request. If you have more `Rules` than the number that you
1789
+ # specify for `Limit`, the response includes a `NextMarker` value that
1790
+ # you can use to get another batch of `Rules`.
1791
+ #
1792
+ # @return [Types::ListRateBasedRulesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1793
+ #
1794
+ # * {Types::ListRateBasedRulesResponse#next_marker #next_marker} => String
1795
+ # * {Types::ListRateBasedRulesResponse#rules #rules} => Array<Types::RuleSummary>
1796
+ #
1797
+ # @example Request syntax with placeholder values
1798
+ #
1799
+ # resp = client.list_rate_based_rules({
1800
+ # next_marker: "NextMarker",
1801
+ # limit: 1,
1802
+ # })
1803
+ #
1804
+ # @example Response structure
1805
+ #
1806
+ # resp.next_marker #=> String
1807
+ # resp.rules #=> Array
1808
+ # resp.rules[0].rule_id #=> String
1809
+ # resp.rules[0].name #=> String
1810
+ #
1811
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRules AWS API Documentation
1812
+ #
1813
+ # @overload list_rate_based_rules(params = {})
1814
+ # @param [Hash] params ({})
1815
+ def list_rate_based_rules(params = {}, options = {})
1816
+ req = build_request(:list_rate_based_rules, params)
1817
+ req.send_request(options)
1818
+ end
1819
+
1509
1820
  # Returns an array of RuleSummary objects.
1510
1821
  #
1511
1822
  # @option params [String] :next_marker
@@ -1941,6 +2252,101 @@ module Aws::WAF
1941
2252
  req.send_request(options)
1942
2253
  end
1943
2254
 
2255
+ # Inserts or deletes Predicate objects in a rule and updates the
2256
+ # `RateLimit` in the rule.
2257
+ #
2258
+ # Each `Predicate` object identifies a predicate, such as a ByteMatchSet
2259
+ # or an IPSet, that specifies the web requests that you want to block or
2260
+ # count. The `RateLimit` specifies the number of requests every five
2261
+ # minutes that triggers the rule.
2262
+ #
2263
+ # If you add more than one predicate to a `RateBasedRule`, a request
2264
+ # must match all the predicates and exceed the `RateLimit` to be counted
2265
+ # or blocked. For example, suppose you add the following to a
2266
+ # `RateBasedRule`\:
2267
+ #
2268
+ # * An `IPSet` that matches the IP address `192.0.2.44/32`
2269
+ #
2270
+ # * A `ByteMatchSet` that matches `BadBot` in the `User-Agent` header
2271
+ #
2272
+ # Further, you specify a `RateLimit` of 15,000.
2273
+ #
2274
+ # You then add the `RateBasedRule` to a `WebACL` and specify that you
2275
+ # want to block requests that satisfy the rule. For a request to be
2276
+ # blocked, it must come from the IP address 192.0.2.44 *and* the
2277
+ # `User-Agent` header in the request must contain the value `BadBot`.
2278
+ # Further, requests that match these two conditions much be received at
2279
+ # a rate of more than 15,000 every five minutes. If the rate drops below
2280
+ # this limit, AWS WAF no longer blocks the requests.
2281
+ #
2282
+ # As a second example, suppose you want to limit requests to a
2283
+ # particular page on your site. To do this, you could add the following
2284
+ # to a `RateBasedRule`\:
2285
+ #
2286
+ # * A `ByteMatchSet` with `FieldToMatch` of `URI`
2287
+ #
2288
+ # * A `PositionalConstraint` of `STARTS_WITH`
2289
+ #
2290
+ # * A `TargetString` of `login`
2291
+ #
2292
+ # Further, you specify a `RateLimit` of 15,000.
2293
+ #
2294
+ # By adding this `RateBasedRule` to a `WebACL`, you could limit requests
2295
+ # to your login page without affecting the rest of your site.
2296
+ #
2297
+ # @option params [required, String] :rule_id
2298
+ # The `RuleId` of the `RateBasedRule` that you want to update. `RuleId`
2299
+ # is returned by `CreateRateBasedRule` and by ListRateBasedRules.
2300
+ #
2301
+ # @option params [required, String] :change_token
2302
+ # The value returned by the most recent call to GetChangeToken.
2303
+ #
2304
+ # @option params [required, Array<Types::RuleUpdate>] :updates
2305
+ # An array of `RuleUpdate` objects that you want to insert into or
2306
+ # delete from a RateBasedRule.
2307
+ #
2308
+ # @option params [required, Integer] :rate_limit
2309
+ # The maximum number of requests, which have an identical value in the
2310
+ # field specified by the `RateKey`, allowed in a five-minute period. If
2311
+ # the number of requests exceeds the `RateLimit` and the other
2312
+ # predicates specified in the rule are also met, AWS WAF triggers the
2313
+ # action that is specified for this rule.
2314
+ #
2315
+ # @return [Types::UpdateRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2316
+ #
2317
+ # * {Types::UpdateRateBasedRuleResponse#change_token #change_token} => String
2318
+ #
2319
+ # @example Request syntax with placeholder values
2320
+ #
2321
+ # resp = client.update_rate_based_rule({
2322
+ # rule_id: "ResourceId", # required
2323
+ # change_token: "ChangeToken", # required
2324
+ # updates: [ # required
2325
+ # {
2326
+ # action: "INSERT", # required, accepts INSERT, DELETE
2327
+ # predicate: { # required
2328
+ # negated: false, # required
2329
+ # type: "IPMatch", # required, accepts IPMatch, ByteMatch, SqlInjectionMatch, SizeConstraint, XssMatch
2330
+ # data_id: "ResourceId", # required
2331
+ # },
2332
+ # },
2333
+ # ],
2334
+ # rate_limit: 1, # required
2335
+ # })
2336
+ #
2337
+ # @example Response structure
2338
+ #
2339
+ # resp.change_token #=> String
2340
+ #
2341
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRule AWS API Documentation
2342
+ #
2343
+ # @overload update_rate_based_rule(params = {})
2344
+ # @param [Hash] params ({})
2345
+ def update_rate_based_rule(params = {}, options = {})
2346
+ req = build_request(:update_rate_based_rule, params)
2347
+ req.send_request(options)
2348
+ end
2349
+
1944
2350
  # Inserts or deletes Predicate objects in a `Rule`. Each `Predicate`
1945
2351
  # object identifies a predicate, such as a ByteMatchSet or an IPSet,
1946
2352
  # that specifies the web requests that you want to allow, block, or
@@ -2288,6 +2694,12 @@ module Aws::WAF
2288
2694
  # want to include in the `WebACL`, to specify the default action,
2289
2695
  # and to associate the `WebACL` with a CloudFront distribution.
2290
2696
  #
2697
+ # Be aware that if you try to add a RATE\_BASED rule to a web ACL
2698
+ # without setting the rule type when first creating the rule, the
2699
+ # UpdateWebACL request will fail because the request tries to add a
2700
+ # REGULAR rule (the default rule type) with the specified ID, which does
2701
+ # not exist.
2702
+ #
2291
2703
  # For more information about how to use the AWS WAF API to allow or
2292
2704
  # block HTTP requests, see the [AWS WAF Developer Guide][1].
2293
2705
  #
@@ -2311,7 +2723,7 @@ module Aws::WAF
2311
2723
  #
2312
2724
  # * WebACLUpdate: Contains `Action` and `ActivatedRule`
2313
2725
  #
2314
- # * ActivatedRule: Contains `Action`, `Priority`, and `RuleId`
2726
+ # * ActivatedRule: Contains `Action`, `Priority`, `RuleId`, and `Type`
2315
2727
  #
2316
2728
  # * WafAction: Contains `Type`
2317
2729
  #
@@ -2338,6 +2750,7 @@ module Aws::WAF
2338
2750
  # action: { # required
2339
2751
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
2340
2752
  # },
2753
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
2341
2754
  # },
2342
2755
  # },
2343
2756
  # ],
@@ -2467,7 +2880,7 @@ module Aws::WAF
2467
2880
  params: params,
2468
2881
  config: config)
2469
2882
  context[:gem_name] = 'aws-sdk-waf'
2470
- context[:gem_version] = '1.0.0.rc7'
2883
+ context[:gem_version] = '1.0.0.rc8'
2471
2884
  Seahorse::Client::Request.new(handlers, context)
2472
2885
  end
2473
2886
 
@@ -31,6 +31,8 @@ module Aws::WAF
31
31
  CreateByteMatchSetResponse = Shapes::StructureShape.new(name: 'CreateByteMatchSetResponse')
32
32
  CreateIPSetRequest = Shapes::StructureShape.new(name: 'CreateIPSetRequest')
33
33
  CreateIPSetResponse = Shapes::StructureShape.new(name: 'CreateIPSetResponse')
34
+ CreateRateBasedRuleRequest = Shapes::StructureShape.new(name: 'CreateRateBasedRuleRequest')
35
+ CreateRateBasedRuleResponse = Shapes::StructureShape.new(name: 'CreateRateBasedRuleResponse')
34
36
  CreateRuleRequest = Shapes::StructureShape.new(name: 'CreateRuleRequest')
35
37
  CreateRuleResponse = Shapes::StructureShape.new(name: 'CreateRuleResponse')
36
38
  CreateSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'CreateSizeConstraintSetRequest')
@@ -45,6 +47,8 @@ module Aws::WAF
45
47
  DeleteByteMatchSetResponse = Shapes::StructureShape.new(name: 'DeleteByteMatchSetResponse')
46
48
  DeleteIPSetRequest = Shapes::StructureShape.new(name: 'DeleteIPSetRequest')
47
49
  DeleteIPSetResponse = Shapes::StructureShape.new(name: 'DeleteIPSetResponse')
50
+ DeleteRateBasedRuleRequest = Shapes::StructureShape.new(name: 'DeleteRateBasedRuleRequest')
51
+ DeleteRateBasedRuleResponse = Shapes::StructureShape.new(name: 'DeleteRateBasedRuleResponse')
48
52
  DeleteRuleRequest = Shapes::StructureShape.new(name: 'DeleteRuleRequest')
49
53
  DeleteRuleResponse = Shapes::StructureShape.new(name: 'DeleteRuleResponse')
50
54
  DeleteSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'DeleteSizeConstraintSetRequest')
@@ -64,6 +68,10 @@ module Aws::WAF
64
68
  GetChangeTokenStatusResponse = Shapes::StructureShape.new(name: 'GetChangeTokenStatusResponse')
65
69
  GetIPSetRequest = Shapes::StructureShape.new(name: 'GetIPSetRequest')
66
70
  GetIPSetResponse = Shapes::StructureShape.new(name: 'GetIPSetResponse')
71
+ GetRateBasedRuleManagedKeysRequest = Shapes::StructureShape.new(name: 'GetRateBasedRuleManagedKeysRequest')
72
+ GetRateBasedRuleManagedKeysResponse = Shapes::StructureShape.new(name: 'GetRateBasedRuleManagedKeysResponse')
73
+ GetRateBasedRuleRequest = Shapes::StructureShape.new(name: 'GetRateBasedRuleRequest')
74
+ GetRateBasedRuleResponse = Shapes::StructureShape.new(name: 'GetRateBasedRuleResponse')
67
75
  GetRuleRequest = Shapes::StructureShape.new(name: 'GetRuleRequest')
68
76
  GetRuleResponse = Shapes::StructureShape.new(name: 'GetRuleResponse')
69
77
  GetSampledRequestsMaxItems = Shapes::IntegerShape.new(name: 'GetSampledRequestsMaxItems')
@@ -98,6 +106,8 @@ module Aws::WAF
98
106
  ListByteMatchSetsResponse = Shapes::StructureShape.new(name: 'ListByteMatchSetsResponse')
99
107
  ListIPSetsRequest = Shapes::StructureShape.new(name: 'ListIPSetsRequest')
100
108
  ListIPSetsResponse = Shapes::StructureShape.new(name: 'ListIPSetsResponse')
109
+ ListRateBasedRulesRequest = Shapes::StructureShape.new(name: 'ListRateBasedRulesRequest')
110
+ ListRateBasedRulesResponse = Shapes::StructureShape.new(name: 'ListRateBasedRulesResponse')
101
111
  ListRulesRequest = Shapes::StructureShape.new(name: 'ListRulesRequest')
102
112
  ListRulesResponse = Shapes::StructureShape.new(name: 'ListRulesResponse')
103
113
  ListSizeConstraintSetsRequest = Shapes::StructureShape.new(name: 'ListSizeConstraintSetsRequest')
@@ -108,6 +118,8 @@ module Aws::WAF
108
118
  ListWebACLsResponse = Shapes::StructureShape.new(name: 'ListWebACLsResponse')
109
119
  ListXssMatchSetsRequest = Shapes::StructureShape.new(name: 'ListXssMatchSetsRequest')
110
120
  ListXssMatchSetsResponse = Shapes::StructureShape.new(name: 'ListXssMatchSetsResponse')
121
+ ManagedKey = Shapes::StringShape.new(name: 'ManagedKey')
122
+ ManagedKeys = Shapes::ListShape.new(name: 'ManagedKeys')
111
123
  MatchFieldData = Shapes::StringShape.new(name: 'MatchFieldData')
112
124
  MatchFieldType = Shapes::StringShape.new(name: 'MatchFieldType')
113
125
  MetricName = Shapes::StringShape.new(name: 'MetricName')
@@ -122,6 +134,9 @@ module Aws::WAF
122
134
  Predicate = Shapes::StructureShape.new(name: 'Predicate')
123
135
  PredicateType = Shapes::StringShape.new(name: 'PredicateType')
124
136
  Predicates = Shapes::ListShape.new(name: 'Predicates')
137
+ RateBasedRule = Shapes::StructureShape.new(name: 'RateBasedRule')
138
+ RateKey = Shapes::StringShape.new(name: 'RateKey')
139
+ RateLimit = Shapes::IntegerShape.new(name: 'RateLimit')
125
140
  ResourceId = Shapes::StringShape.new(name: 'ResourceId')
126
141
  ResourceName = Shapes::StringShape.new(name: 'ResourceName')
127
142
  Rule = Shapes::StructureShape.new(name: 'Rule')
@@ -156,6 +171,8 @@ module Aws::WAF
156
171
  UpdateByteMatchSetResponse = Shapes::StructureShape.new(name: 'UpdateByteMatchSetResponse')
157
172
  UpdateIPSetRequest = Shapes::StructureShape.new(name: 'UpdateIPSetRequest')
158
173
  UpdateIPSetResponse = Shapes::StructureShape.new(name: 'UpdateIPSetResponse')
174
+ UpdateRateBasedRuleRequest = Shapes::StructureShape.new(name: 'UpdateRateBasedRuleRequest')
175
+ UpdateRateBasedRuleResponse = Shapes::StructureShape.new(name: 'UpdateRateBasedRuleResponse')
159
176
  UpdateRuleRequest = Shapes::StructureShape.new(name: 'UpdateRuleRequest')
160
177
  UpdateRuleResponse = Shapes::StructureShape.new(name: 'UpdateRuleResponse')
161
178
  UpdateSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'UpdateSizeConstraintSetRequest')
@@ -179,6 +196,7 @@ module Aws::WAF
179
196
  WAFStaleDataException = Shapes::StructureShape.new(name: 'WAFStaleDataException')
180
197
  WafAction = Shapes::StructureShape.new(name: 'WafAction')
181
198
  WafActionType = Shapes::StringShape.new(name: 'WafActionType')
199
+ WafRuleType = Shapes::StringShape.new(name: 'WafRuleType')
182
200
  WebACL = Shapes::StructureShape.new(name: 'WebACL')
183
201
  WebACLSummaries = Shapes::ListShape.new(name: 'WebACLSummaries')
184
202
  WebACLSummary = Shapes::StructureShape.new(name: 'WebACLSummary')
@@ -196,6 +214,7 @@ module Aws::WAF
196
214
  ActivatedRule.add_member(:priority, Shapes::ShapeRef.new(shape: RulePriority, required: true, location_name: "Priority"))
197
215
  ActivatedRule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
198
216
  ActivatedRule.add_member(:action, Shapes::ShapeRef.new(shape: WafAction, required: true, location_name: "Action"))
217
+ ActivatedRule.add_member(:type, Shapes::ShapeRef.new(shape: WafRuleType, location_name: "Type"))
199
218
  ActivatedRule.struct_class = Types::ActivatedRule
200
219
 
201
220
  ActivatedRules.member = Shapes::ShapeRef.new(shape: ActivatedRule)
@@ -241,6 +260,17 @@ module Aws::WAF
241
260
  CreateIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
242
261
  CreateIPSetResponse.struct_class = Types::CreateIPSetResponse
243
262
 
263
+ CreateRateBasedRuleRequest.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "Name"))
264
+ CreateRateBasedRuleRequest.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, required: true, location_name: "MetricName"))
265
+ CreateRateBasedRuleRequest.add_member(:rate_key, Shapes::ShapeRef.new(shape: RateKey, required: true, location_name: "RateKey"))
266
+ CreateRateBasedRuleRequest.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
267
+ CreateRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
268
+ CreateRateBasedRuleRequest.struct_class = Types::CreateRateBasedRuleRequest
269
+
270
+ CreateRateBasedRuleResponse.add_member(:rule, Shapes::ShapeRef.new(shape: RateBasedRule, location_name: "Rule"))
271
+ CreateRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
272
+ CreateRateBasedRuleResponse.struct_class = Types::CreateRateBasedRuleResponse
273
+
244
274
  CreateRuleRequest.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "Name"))
245
275
  CreateRuleRequest.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, required: true, location_name: "MetricName"))
246
276
  CreateRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
@@ -298,6 +328,13 @@ module Aws::WAF
298
328
  DeleteIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
299
329
  DeleteIPSetResponse.struct_class = Types::DeleteIPSetResponse
300
330
 
331
+ DeleteRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
332
+ DeleteRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
333
+ DeleteRateBasedRuleRequest.struct_class = Types::DeleteRateBasedRuleRequest
334
+
335
+ DeleteRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
336
+ DeleteRateBasedRuleResponse.struct_class = Types::DeleteRateBasedRuleResponse
337
+
301
338
  DeleteRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
302
339
  DeleteRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
303
340
  DeleteRuleRequest.struct_class = Types::DeleteRuleRequest
@@ -360,6 +397,20 @@ module Aws::WAF
360
397
  GetIPSetResponse.add_member(:ip_set, Shapes::ShapeRef.new(shape: IPSet, location_name: "IPSet"))
361
398
  GetIPSetResponse.struct_class = Types::GetIPSetResponse
362
399
 
400
+ GetRateBasedRuleManagedKeysRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
401
+ GetRateBasedRuleManagedKeysRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
402
+ GetRateBasedRuleManagedKeysRequest.struct_class = Types::GetRateBasedRuleManagedKeysRequest
403
+
404
+ GetRateBasedRuleManagedKeysResponse.add_member(:managed_keys, Shapes::ShapeRef.new(shape: ManagedKeys, location_name: "ManagedKeys"))
405
+ GetRateBasedRuleManagedKeysResponse.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
406
+ GetRateBasedRuleManagedKeysResponse.struct_class = Types::GetRateBasedRuleManagedKeysResponse
407
+
408
+ GetRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
409
+ GetRateBasedRuleRequest.struct_class = Types::GetRateBasedRuleRequest
410
+
411
+ GetRateBasedRuleResponse.add_member(:rule, Shapes::ShapeRef.new(shape: RateBasedRule, location_name: "Rule"))
412
+ GetRateBasedRuleResponse.struct_class = Types::GetRateBasedRuleResponse
413
+
363
414
  GetRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
364
415
  GetRuleRequest.struct_class = Types::GetRuleRequest
365
416
 
@@ -454,6 +505,14 @@ module Aws::WAF
454
505
  ListIPSetsResponse.add_member(:ip_sets, Shapes::ShapeRef.new(shape: IPSetSummaries, location_name: "IPSets"))
455
506
  ListIPSetsResponse.struct_class = Types::ListIPSetsResponse
456
507
 
508
+ ListRateBasedRulesRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
509
+ ListRateBasedRulesRequest.add_member(:limit, Shapes::ShapeRef.new(shape: PaginationLimit, location_name: "Limit"))
510
+ ListRateBasedRulesRequest.struct_class = Types::ListRateBasedRulesRequest
511
+
512
+ ListRateBasedRulesResponse.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
513
+ ListRateBasedRulesResponse.add_member(:rules, Shapes::ShapeRef.new(shape: RuleSummaries, location_name: "Rules"))
514
+ ListRateBasedRulesResponse.struct_class = Types::ListRateBasedRulesResponse
515
+
457
516
  ListRulesRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
458
517
  ListRulesRequest.add_member(:limit, Shapes::ShapeRef.new(shape: PaginationLimit, location_name: "Limit"))
459
518
  ListRulesRequest.struct_class = Types::ListRulesRequest
@@ -494,6 +553,8 @@ module Aws::WAF
494
553
  ListXssMatchSetsResponse.add_member(:xss_match_sets, Shapes::ShapeRef.new(shape: XssMatchSetSummaries, location_name: "XssMatchSets"))
495
554
  ListXssMatchSetsResponse.struct_class = Types::ListXssMatchSetsResponse
496
555
 
556
+ ManagedKeys.member = Shapes::ShapeRef.new(shape: ManagedKey)
557
+
497
558
  Predicate.add_member(:negated, Shapes::ShapeRef.new(shape: Negated, required: true, location_name: "Negated"))
498
559
  Predicate.add_member(:type, Shapes::ShapeRef.new(shape: PredicateType, required: true, location_name: "Type"))
499
560
  Predicate.add_member(:data_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "DataId"))
@@ -501,6 +562,14 @@ module Aws::WAF
501
562
 
502
563
  Predicates.member = Shapes::ShapeRef.new(shape: Predicate)
503
564
 
565
+ RateBasedRule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
566
+ RateBasedRule.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "Name"))
567
+ RateBasedRule.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, location_name: "MetricName"))
568
+ RateBasedRule.add_member(:match_predicates, Shapes::ShapeRef.new(shape: Predicates, required: true, location_name: "MatchPredicates"))
569
+ RateBasedRule.add_member(:rate_key, Shapes::ShapeRef.new(shape: RateKey, required: true, location_name: "RateKey"))
570
+ RateBasedRule.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
571
+ RateBasedRule.struct_class = Types::RateBasedRule
572
+
504
573
  Rule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
505
574
  Rule.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "Name"))
506
575
  Rule.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, location_name: "MetricName"))
@@ -595,6 +664,15 @@ module Aws::WAF
595
664
  UpdateIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
596
665
  UpdateIPSetResponse.struct_class = Types::UpdateIPSetResponse
597
666
 
667
+ UpdateRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
668
+ UpdateRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
669
+ UpdateRateBasedRuleRequest.add_member(:updates, Shapes::ShapeRef.new(shape: RuleUpdates, required: true, location_name: "Updates"))
670
+ UpdateRateBasedRuleRequest.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
671
+ UpdateRateBasedRuleRequest.struct_class = Types::UpdateRateBasedRuleRequest
672
+
673
+ UpdateRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
674
+ UpdateRateBasedRuleResponse.struct_class = Types::UpdateRateBasedRuleResponse
675
+
598
676
  UpdateRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
599
677
  UpdateRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
600
678
  UpdateRuleRequest.add_member(:updates, Shapes::ShapeRef.new(shape: RuleUpdates, required: true, location_name: "Updates"))
@@ -724,6 +802,19 @@ module Aws::WAF
724
802
  o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
725
803
  end)
726
804
 
805
+ api.add_operation(:create_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
806
+ o.name = "CreateRateBasedRule"
807
+ o.http_method = "POST"
808
+ o.http_request_uri = "/"
809
+ o.input = Shapes::ShapeRef.new(shape: CreateRateBasedRuleRequest)
810
+ o.output = Shapes::ShapeRef.new(shape: CreateRateBasedRuleResponse)
811
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
812
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
813
+ o.errors << Shapes::ShapeRef.new(shape: WAFDisallowedNameException)
814
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
815
+ o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
816
+ end)
817
+
727
818
  api.add_operation(:create_rule, Seahorse::Model::Operation.new.tap do |o|
728
819
  o.name = "CreateRule"
729
820
  o.http_method = "POST"
@@ -821,6 +912,20 @@ module Aws::WAF
821
912
  o.errors << Shapes::ShapeRef.new(shape: WAFNonEmptyEntityException)
822
913
  end)
823
914
 
915
+ api.add_operation(:delete_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
916
+ o.name = "DeleteRateBasedRule"
917
+ o.http_method = "POST"
918
+ o.http_request_uri = "/"
919
+ o.input = Shapes::ShapeRef.new(shape: DeleteRateBasedRuleRequest)
920
+ o.output = Shapes::ShapeRef.new(shape: DeleteRateBasedRuleResponse)
921
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
922
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
923
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
924
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
925
+ o.errors << Shapes::ShapeRef.new(shape: WAFReferencedItemException)
926
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonEmptyEntityException)
927
+ end)
928
+
824
929
  api.add_operation(:delete_rule, Seahorse::Model::Operation.new.tap do |o|
825
930
  o.name = "DeleteRule"
826
931
  o.http_method = "POST"
@@ -932,6 +1037,29 @@ module Aws::WAF
932
1037
  o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
933
1038
  end)
934
1039
 
1040
+ api.add_operation(:get_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
1041
+ o.name = "GetRateBasedRule"
1042
+ o.http_method = "POST"
1043
+ o.http_request_uri = "/"
1044
+ o.input = Shapes::ShapeRef.new(shape: GetRateBasedRuleRequest)
1045
+ o.output = Shapes::ShapeRef.new(shape: GetRateBasedRuleResponse)
1046
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1047
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1048
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1049
+ end)
1050
+
1051
+ api.add_operation(:get_rate_based_rule_managed_keys, Seahorse::Model::Operation.new.tap do |o|
1052
+ o.name = "GetRateBasedRuleManagedKeys"
1053
+ o.http_method = "POST"
1054
+ o.http_request_uri = "/"
1055
+ o.input = Shapes::ShapeRef.new(shape: GetRateBasedRuleManagedKeysRequest)
1056
+ o.output = Shapes::ShapeRef.new(shape: GetRateBasedRuleManagedKeysResponse)
1057
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1058
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1059
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1060
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
1061
+ end)
1062
+
935
1063
  api.add_operation(:get_rule, Seahorse::Model::Operation.new.tap do |o|
936
1064
  o.name = "GetRule"
937
1065
  o.http_method = "POST"
@@ -1017,6 +1145,16 @@ module Aws::WAF
1017
1145
  o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1018
1146
  end)
1019
1147
 
1148
+ api.add_operation(:list_rate_based_rules, Seahorse::Model::Operation.new.tap do |o|
1149
+ o.name = "ListRateBasedRules"
1150
+ o.http_method = "POST"
1151
+ o.http_request_uri = "/"
1152
+ o.input = Shapes::ShapeRef.new(shape: ListRateBasedRulesRequest)
1153
+ o.output = Shapes::ShapeRef.new(shape: ListRateBasedRulesResponse)
1154
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1155
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1156
+ end)
1157
+
1020
1158
  api.add_operation(:list_rules, Seahorse::Model::Operation.new.tap do |o|
1021
1159
  o.name = "ListRules"
1022
1160
  o.http_method = "POST"
@@ -1100,6 +1238,23 @@ module Aws::WAF
1100
1238
  o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
1101
1239
  end)
1102
1240
 
1241
+ api.add_operation(:update_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
1242
+ o.name = "UpdateRateBasedRule"
1243
+ o.http_method = "POST"
1244
+ o.http_request_uri = "/"
1245
+ o.input = Shapes::ShapeRef.new(shape: UpdateRateBasedRuleRequest)
1246
+ o.output = Shapes::ShapeRef.new(shape: UpdateRateBasedRuleResponse)
1247
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
1248
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1249
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1250
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidOperationException)
1251
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
1252
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentContainerException)
1253
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1254
+ o.errors << Shapes::ShapeRef.new(shape: WAFReferencedItemException)
1255
+ o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
1256
+ end)
1257
+
1103
1258
  api.add_operation(:update_rule, Seahorse::Model::Operation.new.tap do |o|
1104
1259
  o.name = "UpdateRule"
1105
1260
  o.http_method = "POST"
@@ -25,6 +25,7 @@ module Aws::WAF
25
25
  # action: { # required
26
26
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
27
27
  # },
28
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
28
29
  # }
29
30
  #
30
31
  # @!attribute [rw] priority
@@ -59,12 +60,22 @@ module Aws::WAF
59
60
  # request based on the remaining rules in the web ACL.
60
61
  # @return [Types::WafAction]
61
62
  #
63
+ # @!attribute [rw] type
64
+ # The rule type, either `REGULAR`, as defined by Rule, or
65
+ # `RATE_BASED`, as defined by RateBasedRule. The default is REGULAR.
66
+ # Although this field is optional, be aware that if you try to add a
67
+ # RATE\_BASED rule to a web ACL without setting the type, the
68
+ # UpdateWebACL request will fail because the request tries to add a
69
+ # REGULAR rule with the specified ID, which does not exist.
70
+ # @return [String]
71
+ #
62
72
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ActivatedRule AWS API Documentation
63
73
  #
64
74
  class ActivatedRule < Struct.new(
65
75
  :priority,
66
76
  :rule_id,
67
- :action)
77
+ :action,
78
+ :type)
68
79
  include Aws::Structure
69
80
  end
70
81
 
@@ -476,6 +487,81 @@ module Aws::WAF
476
487
  include Aws::Structure
477
488
  end
478
489
 
490
+ # @note When making an API call, you may pass CreateRateBasedRuleRequest
491
+ # data as a hash:
492
+ #
493
+ # {
494
+ # name: "ResourceName", # required
495
+ # metric_name: "MetricName", # required
496
+ # rate_key: "IP", # required, accepts IP
497
+ # rate_limit: 1, # required
498
+ # change_token: "ChangeToken", # required
499
+ # }
500
+ #
501
+ # @!attribute [rw] name
502
+ # A friendly name or description of the RateBasedRule. You can't
503
+ # change the name of a `RateBasedRule` after you create it.
504
+ # @return [String]
505
+ #
506
+ # @!attribute [rw] metric_name
507
+ # A friendly name or description for the metrics for this
508
+ # `RateBasedRule`. The name can contain only alphanumeric characters
509
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't
510
+ # change the name of the metric after you create the `RateBasedRule`.
511
+ # @return [String]
512
+ #
513
+ # @!attribute [rw] rate_key
514
+ # The field that AWS WAF uses to determine if requests are likely
515
+ # arriving from a single source and thus subject to rate monitoring.
516
+ # The only valid value for `RateKey` is `IP`. `IP` indicates that
517
+ # requests that arrive from the same IP address are subject to the
518
+ # `RateLimit` that is specified in the `RateBasedRule`.
519
+ # @return [String]
520
+ #
521
+ # @!attribute [rw] rate_limit
522
+ # The maximum number of requests, which have an identical value in the
523
+ # field that is specified by `RateKey`, allowed in a five-minute
524
+ # period. If the number of requests exceeds the `RateLimit` and the
525
+ # other predicates specified in the rule are also met, AWS WAF
526
+ # triggers the action that is specified for this rule.
527
+ # @return [Integer]
528
+ #
529
+ # @!attribute [rw] change_token
530
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
531
+ # request. You can also use this value to query the status of the
532
+ # request. For more information, see GetChangeTokenStatus.
533
+ # @return [String]
534
+ #
535
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRuleRequest AWS API Documentation
536
+ #
537
+ class CreateRateBasedRuleRequest < Struct.new(
538
+ :name,
539
+ :metric_name,
540
+ :rate_key,
541
+ :rate_limit,
542
+ :change_token)
543
+ include Aws::Structure
544
+ end
545
+
546
+ # @!attribute [rw] rule
547
+ # The RateBasedRule that is returned in the `CreateRateBasedRule`
548
+ # response.
549
+ # @return [Types::RateBasedRule]
550
+ #
551
+ # @!attribute [rw] change_token
552
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
553
+ # request. You can also use this value to query the status of the
554
+ # request. For more information, see GetChangeTokenStatus.
555
+ # @return [String]
556
+ #
557
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/CreateRateBasedRuleResponse AWS API Documentation
558
+ #
559
+ class CreateRateBasedRuleResponse < Struct.new(
560
+ :rule,
561
+ :change_token)
562
+ include Aws::Structure
563
+ end
564
+
479
565
  # @note When making an API call, you may pass CreateRuleRequest
480
566
  # data as a hash:
481
567
  #
@@ -808,6 +894,44 @@ module Aws::WAF
808
894
  include Aws::Structure
809
895
  end
810
896
 
897
+ # @note When making an API call, you may pass DeleteRateBasedRuleRequest
898
+ # data as a hash:
899
+ #
900
+ # {
901
+ # rule_id: "ResourceId", # required
902
+ # change_token: "ChangeToken", # required
903
+ # }
904
+ #
905
+ # @!attribute [rw] rule_id
906
+ # The `RuleId` of the RateBasedRule that you want to delete. `RuleId`
907
+ # is returned by CreateRateBasedRule and by ListRateBasedRules.
908
+ # @return [String]
909
+ #
910
+ # @!attribute [rw] change_token
911
+ # The value returned by the most recent call to GetChangeToken.
912
+ # @return [String]
913
+ #
914
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRuleRequest AWS API Documentation
915
+ #
916
+ class DeleteRateBasedRuleRequest < Struct.new(
917
+ :rule_id,
918
+ :change_token)
919
+ include Aws::Structure
920
+ end
921
+
922
+ # @!attribute [rw] change_token
923
+ # The `ChangeToken` that you used to submit the `DeleteRateBasedRule`
924
+ # request. You can also use this value to query the status of the
925
+ # request. For more information, see GetChangeTokenStatus.
926
+ # @return [String]
927
+ #
928
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/DeleteRateBasedRuleResponse AWS API Documentation
929
+ #
930
+ class DeleteRateBasedRuleResponse < Struct.new(
931
+ :change_token)
932
+ include Aws::Structure
933
+ end
934
+
811
935
  # @note When making an API call, you may pass DeleteRuleRequest
812
936
  # data as a hash:
813
937
  #
@@ -1195,6 +1319,81 @@ module Aws::WAF
1195
1319
  include Aws::Structure
1196
1320
  end
1197
1321
 
1322
+ # @note When making an API call, you may pass GetRateBasedRuleManagedKeysRequest
1323
+ # data as a hash:
1324
+ #
1325
+ # {
1326
+ # rule_id: "ResourceId", # required
1327
+ # next_marker: "NextMarker",
1328
+ # }
1329
+ #
1330
+ # @!attribute [rw] rule_id
1331
+ # The `RuleId` of the RateBasedRule for which you want to get a list
1332
+ # of `ManagedKeys`. `RuleId` is returned by CreateRateBasedRule and by
1333
+ # ListRateBasedRules.
1334
+ # @return [String]
1335
+ #
1336
+ # @!attribute [rw] next_marker
1337
+ # A null value and not currently used. Do not include this in your
1338
+ # request.
1339
+ # @return [String]
1340
+ #
1341
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeysRequest AWS API Documentation
1342
+ #
1343
+ class GetRateBasedRuleManagedKeysRequest < Struct.new(
1344
+ :rule_id,
1345
+ :next_marker)
1346
+ include Aws::Structure
1347
+ end
1348
+
1349
+ # @!attribute [rw] managed_keys
1350
+ # An array of IP addresses that currently are blocked by the specified
1351
+ # RateBasedRule.
1352
+ # @return [Array<String>]
1353
+ #
1354
+ # @!attribute [rw] next_marker
1355
+ # A null value and not currently used.
1356
+ # @return [String]
1357
+ #
1358
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleManagedKeysResponse AWS API Documentation
1359
+ #
1360
+ class GetRateBasedRuleManagedKeysResponse < Struct.new(
1361
+ :managed_keys,
1362
+ :next_marker)
1363
+ include Aws::Structure
1364
+ end
1365
+
1366
+ # @note When making an API call, you may pass GetRateBasedRuleRequest
1367
+ # data as a hash:
1368
+ #
1369
+ # {
1370
+ # rule_id: "ResourceId", # required
1371
+ # }
1372
+ #
1373
+ # @!attribute [rw] rule_id
1374
+ # The `RuleId` of the RateBasedRule that you want to get. `RuleId` is
1375
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
1376
+ # @return [String]
1377
+ #
1378
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleRequest AWS API Documentation
1379
+ #
1380
+ class GetRateBasedRuleRequest < Struct.new(
1381
+ :rule_id)
1382
+ include Aws::Structure
1383
+ end
1384
+
1385
+ # @!attribute [rw] rule
1386
+ # Information about the RateBasedRule that you specified in the
1387
+ # `GetRateBasedRule` request.
1388
+ # @return [Types::RateBasedRule]
1389
+ #
1390
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/GetRateBasedRuleResponse AWS API Documentation
1391
+ #
1392
+ class GetRateBasedRuleResponse < Struct.new(
1393
+ :rule)
1394
+ include Aws::Structure
1395
+ end
1396
+
1198
1397
  # @note When making an API call, you may pass GetRuleRequest
1199
1398
  # data as a hash:
1200
1399
  #
@@ -1605,14 +1804,9 @@ module Aws::WAF
1605
1804
  # @!attribute [rw] ip_set_descriptors
1606
1805
  # The IP address type (`IPV4` or `IPV6`) and the IP address range (in
1607
1806
  # CIDR notation) that web requests originate from. If the `WebACL` is
1608
- # associated with a CloudFront distribution, this is the value of one
1609
- # of the following fields in CloudFront access logs:
1610
- #
1611
- # * `c-ip`, if the viewer did not use an HTTP proxy or a load balancer
1612
- # to send the request
1613
- #
1614
- # * `x-forwarded-for`, if the viewer did use an HTTP proxy or a load
1615
- # balancer to send the request
1807
+ # associated with a CloudFront distribution and the viewer did not use
1808
+ # an HTTP proxy or a load balancer to send the request, this is the
1809
+ # value of the c-ip field in the CloudFront access logs.
1616
1810
  # @return [Array<Types::IPSetDescriptor>]
1617
1811
  #
1618
1812
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/IPSet AWS API Documentation
@@ -1836,6 +2030,58 @@ module Aws::WAF
1836
2030
  include Aws::Structure
1837
2031
  end
1838
2032
 
2033
+ # @note When making an API call, you may pass ListRateBasedRulesRequest
2034
+ # data as a hash:
2035
+ #
2036
+ # {
2037
+ # next_marker: "NextMarker",
2038
+ # limit: 1,
2039
+ # }
2040
+ #
2041
+ # @!attribute [rw] next_marker
2042
+ # If you specify a value for `Limit` and you have more `Rules` than
2043
+ # the value of `Limit`, AWS WAF returns a `NextMarker` value in the
2044
+ # response that allows you to list another group of `Rules`. For the
2045
+ # second and subsequent `ListRateBasedRules` requests, specify the
2046
+ # value of `NextMarker` from the previous response to get information
2047
+ # about another batch of `Rules`.
2048
+ # @return [String]
2049
+ #
2050
+ # @!attribute [rw] limit
2051
+ # Specifies the number of `Rules` that you want AWS WAF to return for
2052
+ # this request. If you have more `Rules` than the number that you
2053
+ # specify for `Limit`, the response includes a `NextMarker` value that
2054
+ # you can use to get another batch of `Rules`.
2055
+ # @return [Integer]
2056
+ #
2057
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRulesRequest AWS API Documentation
2058
+ #
2059
+ class ListRateBasedRulesRequest < Struct.new(
2060
+ :next_marker,
2061
+ :limit)
2062
+ include Aws::Structure
2063
+ end
2064
+
2065
+ # @!attribute [rw] next_marker
2066
+ # If you have more `Rules` than the number that you specified for
2067
+ # `Limit` in the request, the response includes a `NextMarker` value.
2068
+ # To list more `Rules`, submit another `ListRateBasedRules` request,
2069
+ # and specify the `NextMarker` value from the response in the
2070
+ # `NextMarker` value in the next request.
2071
+ # @return [String]
2072
+ #
2073
+ # @!attribute [rw] rules
2074
+ # An array of RuleSummary objects.
2075
+ # @return [Array<Types::RuleSummary>]
2076
+ #
2077
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/ListRateBasedRulesResponse AWS API Documentation
2078
+ #
2079
+ class ListRateBasedRulesResponse < Struct.new(
2080
+ :next_marker,
2081
+ :rules)
2082
+ include Aws::Structure
2083
+ end
2084
+
1839
2085
  # @note When making an API call, you may pass ListRulesRequest
1840
2086
  # data as a hash:
1841
2087
  #
@@ -2165,6 +2411,77 @@ module Aws::WAF
2165
2411
  include Aws::Structure
2166
2412
  end
2167
2413
 
2414
+ # A `RateBasedRule` is identical to a regular Rule, with one addition: a
2415
+ # `RateBasedRule` counts the number of requests that arrive from a
2416
+ # specified IP address every five minutes. For example, based on recent
2417
+ # requests that you've seen from an attacker, you might create a
2418
+ # `RateBasedRule` that includes the following conditions:
2419
+ #
2420
+ # * The requests come from 192.0.2.44.
2421
+ #
2422
+ # * They contain the value `BadBot` in the `User-Agent` header.
2423
+ #
2424
+ # In the rule, you also define the rate limit as 15,000.
2425
+ #
2426
+ # Requests that meet both of these conditions and exceed 15,000 requests
2427
+ # every five minutes trigger the rule's action (block or count), which
2428
+ # is defined in the web ACL.
2429
+ #
2430
+ # @!attribute [rw] rule_id
2431
+ # A unique identifier for a `RateBasedRule`. You use `RuleId` to get
2432
+ # more information about a `RateBasedRule` (see GetRateBasedRule),
2433
+ # update a `RateBasedRule` (see UpdateRateBasedRule), insert a
2434
+ # `RateBasedRule` into a `WebACL` or delete one from a `WebACL` (see
2435
+ # UpdateWebACL), or delete a `RateBasedRule` from AWS WAF (see
2436
+ # DeleteRateBasedRule).
2437
+ # @return [String]
2438
+ #
2439
+ # @!attribute [rw] name
2440
+ # A friendly name or description for a `RateBasedRule`. You can't
2441
+ # change the name of a `RateBasedRule` after you create it.
2442
+ # @return [String]
2443
+ #
2444
+ # @!attribute [rw] metric_name
2445
+ # A friendly name or description for the metrics for a
2446
+ # `RateBasedRule`. The name can contain only alphanumeric characters
2447
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't
2448
+ # change the name of the metric after you create the `RateBasedRule`.
2449
+ # @return [String]
2450
+ #
2451
+ # @!attribute [rw] match_predicates
2452
+ # The `Predicates` object contains one `Predicate` element for each
2453
+ # ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to
2454
+ # include in a `RateBasedRule`.
2455
+ # @return [Array<Types::Predicate>]
2456
+ #
2457
+ # @!attribute [rw] rate_key
2458
+ # The field that AWS WAF uses to determine if requests are likely
2459
+ # arriving from single source and thus subject to rate monitoring. The
2460
+ # only valid value for `RateKey` is `IP`. `IP` indicates that requests
2461
+ # arriving from the same IP address are subject to the `RateLimit`
2462
+ # that is specified in the `RateBasedRule`.
2463
+ # @return [String]
2464
+ #
2465
+ # @!attribute [rw] rate_limit
2466
+ # The maximum number of requests, which have an identical value in the
2467
+ # field specified by the `RateKey`, allowed in a five-minute period.
2468
+ # If the number of requests exceeds the `RateLimit` and the other
2469
+ # predicates specified in the rule are also met, AWS WAF triggers the
2470
+ # action that is specified for this rule.
2471
+ # @return [Integer]
2472
+ #
2473
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/RateBasedRule AWS API Documentation
2474
+ #
2475
+ class RateBasedRule < Struct.new(
2476
+ :rule_id,
2477
+ :name,
2478
+ :metric_name,
2479
+ :match_predicates,
2480
+ :rate_key,
2481
+ :rate_limit)
2482
+ include Aws::Structure
2483
+ end
2484
+
2168
2485
  # A combination of ByteMatchSet, IPSet, and/or SqlInjectionMatchSet
2169
2486
  # objects that identify the web requests that you want to allow, block,
2170
2487
  # or count. For example, you might create a `Rule` that includes the
@@ -2951,6 +3268,71 @@ module Aws::WAF
2951
3268
  include Aws::Structure
2952
3269
  end
2953
3270
 
3271
+ # @note When making an API call, you may pass UpdateRateBasedRuleRequest
3272
+ # data as a hash:
3273
+ #
3274
+ # {
3275
+ # rule_id: "ResourceId", # required
3276
+ # change_token: "ChangeToken", # required
3277
+ # updates: [ # required
3278
+ # {
3279
+ # action: "INSERT", # required, accepts INSERT, DELETE
3280
+ # predicate: { # required
3281
+ # negated: false, # required
3282
+ # type: "IPMatch", # required, accepts IPMatch, ByteMatch, SqlInjectionMatch, SizeConstraint, XssMatch
3283
+ # data_id: "ResourceId", # required
3284
+ # },
3285
+ # },
3286
+ # ],
3287
+ # rate_limit: 1, # required
3288
+ # }
3289
+ #
3290
+ # @!attribute [rw] rule_id
3291
+ # The `RuleId` of the `RateBasedRule` that you want to update.
3292
+ # `RuleId` is returned by `CreateRateBasedRule` and by
3293
+ # ListRateBasedRules.
3294
+ # @return [String]
3295
+ #
3296
+ # @!attribute [rw] change_token
3297
+ # The value returned by the most recent call to GetChangeToken.
3298
+ # @return [String]
3299
+ #
3300
+ # @!attribute [rw] updates
3301
+ # An array of `RuleUpdate` objects that you want to insert into or
3302
+ # delete from a RateBasedRule.
3303
+ # @return [Array<Types::RuleUpdate>]
3304
+ #
3305
+ # @!attribute [rw] rate_limit
3306
+ # The maximum number of requests, which have an identical value in the
3307
+ # field specified by the `RateKey`, allowed in a five-minute period.
3308
+ # If the number of requests exceeds the `RateLimit` and the other
3309
+ # predicates specified in the rule are also met, AWS WAF triggers the
3310
+ # action that is specified for this rule.
3311
+ # @return [Integer]
3312
+ #
3313
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRuleRequest AWS API Documentation
3314
+ #
3315
+ class UpdateRateBasedRuleRequest < Struct.new(
3316
+ :rule_id,
3317
+ :change_token,
3318
+ :updates,
3319
+ :rate_limit)
3320
+ include Aws::Structure
3321
+ end
3322
+
3323
+ # @!attribute [rw] change_token
3324
+ # The `ChangeToken` that you used to submit the `UpdateRateBasedRule`
3325
+ # request. You can also use this value to query the status of the
3326
+ # request. For more information, see GetChangeTokenStatus.
3327
+ # @return [String]
3328
+ #
3329
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-2015-08-24/UpdateRateBasedRuleResponse AWS API Documentation
3330
+ #
3331
+ class UpdateRateBasedRuleResponse < Struct.new(
3332
+ :change_token)
3333
+ include Aws::Structure
3334
+ end
3335
+
2954
3336
  # @note When making an API call, you may pass UpdateRuleRequest
2955
3337
  # data as a hash:
2956
3338
  #
@@ -3166,6 +3548,7 @@ module Aws::WAF
3166
3548
  # action: { # required
3167
3549
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
3168
3550
  # },
3551
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
3169
3552
  # },
3170
3553
  # },
3171
3554
  # ],
@@ -3192,7 +3575,7 @@ module Aws::WAF
3192
3575
  #
3193
3576
  # * WebACLUpdate: Contains `Action` and `ActivatedRule`
3194
3577
  #
3195
- # * ActivatedRule: Contains `Action`, `Priority`, and `RuleId`
3578
+ # * ActivatedRule: Contains `Action`, `Priority`, `RuleId`, and `Type`
3196
3579
  #
3197
3580
  # * WafAction: Contains `Type`
3198
3581
  # @return [Array<Types::WebACLUpdate>]
@@ -3421,6 +3804,7 @@ module Aws::WAF
3421
3804
  # action: { # required
3422
3805
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
3423
3806
  # },
3807
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
3424
3808
  # },
3425
3809
  # }
3426
3810
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-waf
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0.rc7
4
+ version: 1.0.0.rc8
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: 2017-05-23 00:00:00.000000000 Z
11
+ date: 2017-06-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: aws-sdk-core
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: 3.0.0.rc12
19
+ version: 3.0.0.rc13
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: 3.0.0.rc12
26
+ version: 3.0.0.rc13
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: aws-sigv4
29
29
  requirement: !ruby/object:Gem::Requirement