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

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  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