aws-sdk-wafregional 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: ea64f9c2d90551be9891e1abcfe1586ae2055edb
4
- data.tar.gz: af9a26fbc6a4f8ac8f84a24c07d75716250cf03e
3
+ metadata.gz: 69c9c54113a11a8003b87a41623fb613f3837686
4
+ data.tar.gz: 2c9409f4b69d2985c338444dd9ef3467fe5cad6d
5
5
  SHA512:
6
- metadata.gz: 42bd7f421837b9b96d7a06ae943170158deb657cd3671da07957219264368178d4f0e456218075d482f34b4658d6048af37d9e245b066e9f52a92cd995fcbb30
7
- data.tar.gz: e9fb7611c74e6f70a1df827ce8d3e24d52bbc3e8b8cbb043c0883a6573591c5cc8b2bfe6ef8e39a2d3d46b43a852530790835d487c6bd13fcf14f44477ff3a4e
6
+ metadata.gz: 5c8e4637b04f30c6c350307186bbba85adbe46bfae8a446713911ec50ce75932022cfa4d09ca20d3eda9a20d591f8733077ea732d7b3a68e306719928d7ce95a
7
+ data.tar.gz: 44983b919631afc6f50671414d7455a5206989a94a3283158c74067a3a7087ccbb0e66fead67a77cea51eaec5bdb7c7f7de5253e6beb8a7334ad623d9d62c4b5
@@ -42,6 +42,6 @@ require_relative 'aws-sdk-wafregional/customizations'
42
42
  # @service
43
43
  module Aws::WAFRegional
44
44
 
45
- GEM_VERSION = '1.0.0.rc7'
45
+ GEM_VERSION = '1.0.0.rc8'
46
46
 
47
47
  end
@@ -314,6 +314,143 @@ module Aws::WAFRegional
314
314
  req.send_request(options)
315
315
  end
316
316
 
317
+ # Creates a RateBasedRule. The `RateBasedRule` contains a `RateLimit`,
318
+ # which specifies the maximum number of requests that AWS WAF allows
319
+ # from a specified IP address in a five-minute period. The
320
+ # `RateBasedRule` also contains the `IPSet` objects, `ByteMatchSet`
321
+ # objects, and other predicates that identify the requests that you want
322
+ # to count or block if these requests exceed the `RateLimit`.
323
+ #
324
+ # If you add more than one predicate to a `RateBasedRule`, a request not
325
+ # only must exceed the `RateLimit`, but it also must match all the
326
+ # specifications to be counted or blocked. For example, suppose you add
327
+ # the following to a `RateBasedRule`\:
328
+ #
329
+ # * An `IPSet` that matches the IP address `192.0.2.44/32`
330
+ #
331
+ # * A `ByteMatchSet` that matches `BadBot` in the `User-Agent` header
332
+ #
333
+ # Further, you specify a `RateLimit` of 15,000.
334
+ #
335
+ # You then add the `RateBasedRule` to a `WebACL` and specify that you
336
+ # want to block requests that meet the conditions in the rule. For a
337
+ # request to be blocked, it must come from the IP address 192.0.2.44
338
+ # *and* the `User-Agent` header in the request must contain the value
339
+ # `BadBot`. Further, requests that match these two conditions must be
340
+ # received at a rate of more than 15,000 requests every five minutes. If
341
+ # both conditions are met and the rate is exceeded, AWS WAF blocks the
342
+ # requests. If the rate drops below 15,000 for a five-minute period, AWS
343
+ # WAF no longer blocks the requests.
344
+ #
345
+ # As a second example, suppose you want to limit requests to a
346
+ # particular page on your site. To do this, you could add the following
347
+ # to a `RateBasedRule`\:
348
+ #
349
+ # * A `ByteMatchSet` with `FieldToMatch` of `URI`
350
+ #
351
+ # * A `PositionalConstraint` of `STARTS_WITH`
352
+ #
353
+ # * A `TargetString` of `login`
354
+ #
355
+ # Further, you specify a `RateLimit` of 15,000.
356
+ #
357
+ # By adding this `RateBasedRule` to a `WebACL`, you could limit requests
358
+ # to your login page without affecting the rest of your site.
359
+ #
360
+ # To create and configure a `RateBasedRule`, perform the following
361
+ # steps:
362
+ #
363
+ # 1. Create and update the predicates that you want to include in the
364
+ # rule. For more information, see CreateByteMatchSet, CreateIPSet,
365
+ # and CreateSqlInjectionMatchSet.
366
+ #
367
+ # 2. Use GetChangeToken to get the change token that you provide in the
368
+ # `ChangeToken` parameter of a `CreateRule` request.
369
+ #
370
+ # 3. Submit a `CreateRateBasedRule` request.
371
+ #
372
+ # 4. Use `GetChangeToken` to get the change token that you provide in
373
+ # the `ChangeToken` parameter of an UpdateRule request.
374
+ #
375
+ # 5. Submit an `UpdateRateBasedRule` request to specify the predicates
376
+ # that you want to include in the rule.
377
+ #
378
+ # 6. Create and update a `WebACL` that contains the `RateBasedRule`.
379
+ # For more information, see CreateWebACL.
380
+ #
381
+ # For more information about how to use the AWS WAF API to allow or
382
+ # block HTTP requests, see the [AWS WAF Developer Guide][1].
383
+ #
384
+ #
385
+ #
386
+ # [1]: http://docs.aws.amazon.com/waf/latest/developerguide/
387
+ #
388
+ # @option params [required, String] :name
389
+ # A friendly name or description of the RateBasedRule. You can't change
390
+ # the name of a `RateBasedRule` after you create it.
391
+ #
392
+ # @option params [required, String] :metric_name
393
+ # A friendly name or description for the metrics for this
394
+ # `RateBasedRule`. The name can contain only alphanumeric characters
395
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't change
396
+ # the name of the metric after you create the `RateBasedRule`.
397
+ #
398
+ # @option params [required, String] :rate_key
399
+ # The field that AWS WAF uses to determine if requests are likely
400
+ # arriving from a single source and thus subject to rate monitoring. The
401
+ # only valid value for `RateKey` is `IP`. `IP` indicates that requests
402
+ # that arrive from the same IP address are subject to the `RateLimit`
403
+ # that is specified in the `RateBasedRule`.
404
+ #
405
+ # @option params [required, Integer] :rate_limit
406
+ # The maximum number of requests, which have an identical value in the
407
+ # field that is specified by `RateKey`, allowed in a five-minute period.
408
+ # If the number of requests exceeds the `RateLimit` and the other
409
+ # predicates specified in the rule are also met, AWS WAF triggers the
410
+ # action that is specified for this rule.
411
+ #
412
+ # @option params [required, String] :change_token
413
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
414
+ # request. You can also use this value to query the status of the
415
+ # request. For more information, see GetChangeTokenStatus.
416
+ #
417
+ # @return [Types::CreateRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
418
+ #
419
+ # * {Types::CreateRateBasedRuleResponse#rule #rule} => Types::RateBasedRule
420
+ # * {Types::CreateRateBasedRuleResponse#change_token #change_token} => String
421
+ #
422
+ # @example Request syntax with placeholder values
423
+ #
424
+ # resp = client.create_rate_based_rule({
425
+ # name: "ResourceName", # required
426
+ # metric_name: "MetricName", # required
427
+ # rate_key: "IP", # required, accepts IP
428
+ # rate_limit: 1, # required
429
+ # change_token: "ChangeToken", # required
430
+ # })
431
+ #
432
+ # @example Response structure
433
+ #
434
+ # resp.rule.rule_id #=> String
435
+ # resp.rule.name #=> String
436
+ # resp.rule.metric_name #=> String
437
+ # resp.rule.match_predicates #=> Array
438
+ # resp.rule.match_predicates[0].negated #=> Boolean
439
+ # resp.rule.match_predicates[0].type #=> String, one of "IPMatch", "ByteMatch", "SqlInjectionMatch", "SizeConstraint", "XssMatch"
440
+ # resp.rule.match_predicates[0].data_id #=> String
441
+ # resp.rule.rate_key #=> String, one of "IP"
442
+ # resp.rule.rate_limit #=> Integer
443
+ # resp.change_token #=> String
444
+ #
445
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/CreateRateBasedRule AWS API Documentation
446
+ #
447
+ # @overload create_rate_based_rule(params = {})
448
+ # @param [Hash] params ({})
449
+ def create_rate_based_rule(params = {}, options = {})
450
+ req = build_request(:create_rate_based_rule, params)
451
+ req.send_request(options)
452
+ end
453
+
317
454
  # Creates a `Rule`, which contains the `IPSet` objects, `ByteMatchSet`
318
455
  # objects, and other predicates that identify the requests that you want
319
456
  # to block. If you add more than one predicate to a `Rule`, a request
@@ -622,6 +759,7 @@ module Aws::WAFRegional
622
759
  # resp.web_acl.rules[0].priority #=> Integer
623
760
  # resp.web_acl.rules[0].rule_id #=> String
624
761
  # resp.web_acl.rules[0].action.type #=> String, one of "BLOCK", "ALLOW", "COUNT"
762
+ # resp.web_acl.rules[0].type #=> String, one of "REGULAR", "RATE_BASED"
625
763
  # resp.change_token #=> String
626
764
  #
627
765
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/CreateWebACL AWS API Documentation
@@ -793,6 +931,54 @@ module Aws::WAFRegional
793
931
  req.send_request(options)
794
932
  end
795
933
 
934
+ # Permanently deletes a RateBasedRule. You can't delete a rule if it's
935
+ # still used in any `WebACL` objects or if it still includes any
936
+ # predicates, such as `ByteMatchSet` objects.
937
+ #
938
+ # If you just want to remove a rule from a `WebACL`, use UpdateWebACL.
939
+ #
940
+ # To permanently delete a `RateBasedRule` from AWS WAF, perform the
941
+ # following steps:
942
+ #
943
+ # 1. Update the `RateBasedRule` to remove predicates, if any. For more
944
+ # information, see UpdateRateBasedRule.
945
+ #
946
+ # 2. Use GetChangeToken to get the change token that you provide in the
947
+ # `ChangeToken` parameter of a `DeleteRateBasedRule` request.
948
+ #
949
+ # 3. Submit a `DeleteRateBasedRule` request.
950
+ #
951
+ # @option params [required, String] :rule_id
952
+ # The `RuleId` of the RateBasedRule that you want to delete. `RuleId` is
953
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
954
+ #
955
+ # @option params [required, String] :change_token
956
+ # The value returned by the most recent call to GetChangeToken.
957
+ #
958
+ # @return [Types::DeleteRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
959
+ #
960
+ # * {Types::DeleteRateBasedRuleResponse#change_token #change_token} => String
961
+ #
962
+ # @example Request syntax with placeholder values
963
+ #
964
+ # resp = client.delete_rate_based_rule({
965
+ # rule_id: "ResourceId", # required
966
+ # change_token: "ChangeToken", # required
967
+ # })
968
+ #
969
+ # @example Response structure
970
+ #
971
+ # resp.change_token #=> String
972
+ #
973
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/DeleteRateBasedRule AWS API Documentation
974
+ #
975
+ # @overload delete_rate_based_rule(params = {})
976
+ # @param [Hash] params ({})
977
+ def delete_rate_based_rule(params = {}, options = {})
978
+ req = build_request(:delete_rate_based_rule, params)
979
+ req.send_request(options)
980
+ end
981
+
796
982
  # Permanently deletes a Rule. You can't delete a `Rule` if it's still
797
983
  # used in any `WebACL` objects or if it still includes any predicates,
798
984
  # such as `ByteMatchSet` objects.
@@ -1200,6 +1386,86 @@ module Aws::WAFRegional
1200
1386
  req.send_request(options)
1201
1387
  end
1202
1388
 
1389
+ # Returns the RateBasedRule that is specified by the `RuleId` that you
1390
+ # included in the `GetRateBasedRule` request.
1391
+ #
1392
+ # @option params [required, String] :rule_id
1393
+ # The `RuleId` of the RateBasedRule that you want to get. `RuleId` is
1394
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
1395
+ #
1396
+ # @return [Types::GetRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1397
+ #
1398
+ # * {Types::GetRateBasedRuleResponse#rule #rule} => Types::RateBasedRule
1399
+ #
1400
+ # @example Request syntax with placeholder values
1401
+ #
1402
+ # resp = client.get_rate_based_rule({
1403
+ # rule_id: "ResourceId", # required
1404
+ # })
1405
+ #
1406
+ # @example Response structure
1407
+ #
1408
+ # resp.rule.rule_id #=> String
1409
+ # resp.rule.name #=> String
1410
+ # resp.rule.metric_name #=> String
1411
+ # resp.rule.match_predicates #=> Array
1412
+ # resp.rule.match_predicates[0].negated #=> Boolean
1413
+ # resp.rule.match_predicates[0].type #=> String, one of "IPMatch", "ByteMatch", "SqlInjectionMatch", "SizeConstraint", "XssMatch"
1414
+ # resp.rule.match_predicates[0].data_id #=> String
1415
+ # resp.rule.rate_key #=> String, one of "IP"
1416
+ # resp.rule.rate_limit #=> Integer
1417
+ #
1418
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRule AWS API Documentation
1419
+ #
1420
+ # @overload get_rate_based_rule(params = {})
1421
+ # @param [Hash] params ({})
1422
+ def get_rate_based_rule(params = {}, options = {})
1423
+ req = build_request(:get_rate_based_rule, params)
1424
+ req.send_request(options)
1425
+ end
1426
+
1427
+ # Returns an array of IP addresses currently being blocked by the
1428
+ # RateBasedRule that is specified by the `RuleId`. The maximum number of
1429
+ # managed keys that will be blocked is 10,000. If more than 10,000
1430
+ # addresses exceed the rate limit, the 10,000 addresses with the highest
1431
+ # rates will be blocked.
1432
+ #
1433
+ # @option params [required, String] :rule_id
1434
+ # The `RuleId` of the RateBasedRule for which you want to get a list of
1435
+ # `ManagedKeys`. `RuleId` is returned by CreateRateBasedRule and by
1436
+ # ListRateBasedRules.
1437
+ #
1438
+ # @option params [String] :next_marker
1439
+ # A null value and not currently used. Do not include this in your
1440
+ # request.
1441
+ #
1442
+ # @return [Types::GetRateBasedRuleManagedKeysResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1443
+ #
1444
+ # * {Types::GetRateBasedRuleManagedKeysResponse#managed_keys #managed_keys} => Array<String>
1445
+ # * {Types::GetRateBasedRuleManagedKeysResponse#next_marker #next_marker} => String
1446
+ #
1447
+ # @example Request syntax with placeholder values
1448
+ #
1449
+ # resp = client.get_rate_based_rule_managed_keys({
1450
+ # rule_id: "ResourceId", # required
1451
+ # next_marker: "NextMarker",
1452
+ # })
1453
+ #
1454
+ # @example Response structure
1455
+ #
1456
+ # resp.managed_keys #=> Array
1457
+ # resp.managed_keys[0] #=> String
1458
+ # resp.next_marker #=> String
1459
+ #
1460
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRuleManagedKeys AWS API Documentation
1461
+ #
1462
+ # @overload get_rate_based_rule_managed_keys(params = {})
1463
+ # @param [Hash] params ({})
1464
+ def get_rate_based_rule_managed_keys(params = {}, options = {})
1465
+ req = build_request(:get_rate_based_rule_managed_keys, params)
1466
+ req.send_request(options)
1467
+ end
1468
+
1203
1469
  # Returns the Rule that is specified by the `RuleId` that you included
1204
1470
  # in the `GetRule` request.
1205
1471
  #
@@ -1421,6 +1687,7 @@ module Aws::WAFRegional
1421
1687
  # resp.web_acl.rules[0].priority #=> Integer
1422
1688
  # resp.web_acl.rules[0].rule_id #=> String
1423
1689
  # resp.web_acl.rules[0].action.type #=> String, one of "BLOCK", "ALLOW", "COUNT"
1690
+ # resp.web_acl.rules[0].type #=> String, one of "REGULAR", "RATE_BASED"
1424
1691
  #
1425
1692
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetWebACL AWS API Documentation
1426
1693
  #
@@ -1585,6 +1852,50 @@ module Aws::WAFRegional
1585
1852
  req.send_request(options)
1586
1853
  end
1587
1854
 
1855
+ # Returns an array of RuleSummary objects.
1856
+ #
1857
+ # @option params [String] :next_marker
1858
+ # If you specify a value for `Limit` and you have more `Rules` than the
1859
+ # value of `Limit`, AWS WAF returns a `NextMarker` value in the response
1860
+ # that allows you to list another group of `Rules`. For the second and
1861
+ # subsequent `ListRateBasedRules` requests, specify the value of
1862
+ # `NextMarker` from the previous response to get information about
1863
+ # another batch of `Rules`.
1864
+ #
1865
+ # @option params [Integer] :limit
1866
+ # Specifies the number of `Rules` that you want AWS WAF to return for
1867
+ # this request. If you have more `Rules` than the number that you
1868
+ # specify for `Limit`, the response includes a `NextMarker` value that
1869
+ # you can use to get another batch of `Rules`.
1870
+ #
1871
+ # @return [Types::ListRateBasedRulesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1872
+ #
1873
+ # * {Types::ListRateBasedRulesResponse#next_marker #next_marker} => String
1874
+ # * {Types::ListRateBasedRulesResponse#rules #rules} => Array<Types::RuleSummary>
1875
+ #
1876
+ # @example Request syntax with placeholder values
1877
+ #
1878
+ # resp = client.list_rate_based_rules({
1879
+ # next_marker: "NextMarker",
1880
+ # limit: 1,
1881
+ # })
1882
+ #
1883
+ # @example Response structure
1884
+ #
1885
+ # resp.next_marker #=> String
1886
+ # resp.rules #=> Array
1887
+ # resp.rules[0].rule_id #=> String
1888
+ # resp.rules[0].name #=> String
1889
+ #
1890
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/ListRateBasedRules AWS API Documentation
1891
+ #
1892
+ # @overload list_rate_based_rules(params = {})
1893
+ # @param [Hash] params ({})
1894
+ def list_rate_based_rules(params = {}, options = {})
1895
+ req = build_request(:list_rate_based_rules, params)
1896
+ req.send_request(options)
1897
+ end
1898
+
1588
1899
  # Returns an array of resources associated with the specified web ACL.
1589
1900
  #
1590
1901
  # @option params [required, String] :web_acl_id
@@ -2050,6 +2361,101 @@ module Aws::WAFRegional
2050
2361
  req.send_request(options)
2051
2362
  end
2052
2363
 
2364
+ # Inserts or deletes Predicate objects in a rule and updates the
2365
+ # `RateLimit` in the rule.
2366
+ #
2367
+ # Each `Predicate` object identifies a predicate, such as a ByteMatchSet
2368
+ # or an IPSet, that specifies the web requests that you want to block or
2369
+ # count. The `RateLimit` specifies the number of requests every five
2370
+ # minutes that triggers the rule.
2371
+ #
2372
+ # If you add more than one predicate to a `RateBasedRule`, a request
2373
+ # must match all the predicates and exceed the `RateLimit` to be counted
2374
+ # or blocked. For example, suppose you add the following to a
2375
+ # `RateBasedRule`\:
2376
+ #
2377
+ # * An `IPSet` that matches the IP address `192.0.2.44/32`
2378
+ #
2379
+ # * A `ByteMatchSet` that matches `BadBot` in the `User-Agent` header
2380
+ #
2381
+ # Further, you specify a `RateLimit` of 15,000.
2382
+ #
2383
+ # You then add the `RateBasedRule` to a `WebACL` and specify that you
2384
+ # want to block requests that satisfy the rule. For a request to be
2385
+ # blocked, it must come from the IP address 192.0.2.44 *and* the
2386
+ # `User-Agent` header in the request must contain the value `BadBot`.
2387
+ # Further, requests that match these two conditions much be received at
2388
+ # a rate of more than 15,000 every five minutes. If the rate drops below
2389
+ # this limit, AWS WAF no longer blocks the requests.
2390
+ #
2391
+ # As a second example, suppose you want to limit requests to a
2392
+ # particular page on your site. To do this, you could add the following
2393
+ # to a `RateBasedRule`\:
2394
+ #
2395
+ # * A `ByteMatchSet` with `FieldToMatch` of `URI`
2396
+ #
2397
+ # * A `PositionalConstraint` of `STARTS_WITH`
2398
+ #
2399
+ # * A `TargetString` of `login`
2400
+ #
2401
+ # Further, you specify a `RateLimit` of 15,000.
2402
+ #
2403
+ # By adding this `RateBasedRule` to a `WebACL`, you could limit requests
2404
+ # to your login page without affecting the rest of your site.
2405
+ #
2406
+ # @option params [required, String] :rule_id
2407
+ # The `RuleId` of the `RateBasedRule` that you want to update. `RuleId`
2408
+ # is returned by `CreateRateBasedRule` and by ListRateBasedRules.
2409
+ #
2410
+ # @option params [required, String] :change_token
2411
+ # The value returned by the most recent call to GetChangeToken.
2412
+ #
2413
+ # @option params [required, Array<Types::RuleUpdate>] :updates
2414
+ # An array of `RuleUpdate` objects that you want to insert into or
2415
+ # delete from a RateBasedRule.
2416
+ #
2417
+ # @option params [required, Integer] :rate_limit
2418
+ # The maximum number of requests, which have an identical value in the
2419
+ # field specified by the `RateKey`, allowed in a five-minute period. If
2420
+ # the number of requests exceeds the `RateLimit` and the other
2421
+ # predicates specified in the rule are also met, AWS WAF triggers the
2422
+ # action that is specified for this rule.
2423
+ #
2424
+ # @return [Types::UpdateRateBasedRuleResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2425
+ #
2426
+ # * {Types::UpdateRateBasedRuleResponse#change_token #change_token} => String
2427
+ #
2428
+ # @example Request syntax with placeholder values
2429
+ #
2430
+ # resp = client.update_rate_based_rule({
2431
+ # rule_id: "ResourceId", # required
2432
+ # change_token: "ChangeToken", # required
2433
+ # updates: [ # required
2434
+ # {
2435
+ # action: "INSERT", # required, accepts INSERT, DELETE
2436
+ # predicate: { # required
2437
+ # negated: false, # required
2438
+ # type: "IPMatch", # required, accepts IPMatch, ByteMatch, SqlInjectionMatch, SizeConstraint, XssMatch
2439
+ # data_id: "ResourceId", # required
2440
+ # },
2441
+ # },
2442
+ # ],
2443
+ # rate_limit: 1, # required
2444
+ # })
2445
+ #
2446
+ # @example Response structure
2447
+ #
2448
+ # resp.change_token #=> String
2449
+ #
2450
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/UpdateRateBasedRule AWS API Documentation
2451
+ #
2452
+ # @overload update_rate_based_rule(params = {})
2453
+ # @param [Hash] params ({})
2454
+ def update_rate_based_rule(params = {}, options = {})
2455
+ req = build_request(:update_rate_based_rule, params)
2456
+ req.send_request(options)
2457
+ end
2458
+
2053
2459
  # Inserts or deletes Predicate objects in a `Rule`. Each `Predicate`
2054
2460
  # object identifies a predicate, such as a ByteMatchSet or an IPSet,
2055
2461
  # that specifies the web requests that you want to allow, block, or
@@ -2397,6 +2803,12 @@ module Aws::WAFRegional
2397
2803
  # want to include in the `WebACL`, to specify the default action,
2398
2804
  # and to associate the `WebACL` with a CloudFront distribution.
2399
2805
  #
2806
+ # Be aware that if you try to add a RATE\_BASED rule to a web ACL
2807
+ # without setting the rule type when first creating the rule, the
2808
+ # UpdateWebACL request will fail because the request tries to add a
2809
+ # REGULAR rule (the default rule type) with the specified ID, which does
2810
+ # not exist.
2811
+ #
2400
2812
  # For more information about how to use the AWS WAF API to allow or
2401
2813
  # block HTTP requests, see the [AWS WAF Developer Guide][1].
2402
2814
  #
@@ -2420,7 +2832,7 @@ module Aws::WAFRegional
2420
2832
  #
2421
2833
  # * WebACLUpdate: Contains `Action` and `ActivatedRule`
2422
2834
  #
2423
- # * ActivatedRule: Contains `Action`, `Priority`, and `RuleId`
2835
+ # * ActivatedRule: Contains `Action`, `Priority`, `RuleId`, and `Type`
2424
2836
  #
2425
2837
  # * WafAction: Contains `Type`
2426
2838
  #
@@ -2447,6 +2859,7 @@ module Aws::WAFRegional
2447
2859
  # action: { # required
2448
2860
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
2449
2861
  # },
2862
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
2450
2863
  # },
2451
2864
  # },
2452
2865
  # ],
@@ -2576,7 +2989,7 @@ module Aws::WAFRegional
2576
2989
  params: params,
2577
2990
  config: config)
2578
2991
  context[:gem_name] = 'aws-sdk-wafregional'
2579
- context[:gem_version] = '1.0.0.rc7'
2992
+ context[:gem_version] = '1.0.0.rc8'
2580
2993
  Seahorse::Client::Request.new(handlers, context)
2581
2994
  end
2582
2995
 
@@ -33,6 +33,8 @@ module Aws::WAFRegional
33
33
  CreateByteMatchSetResponse = Shapes::StructureShape.new(name: 'CreateByteMatchSetResponse')
34
34
  CreateIPSetRequest = Shapes::StructureShape.new(name: 'CreateIPSetRequest')
35
35
  CreateIPSetResponse = Shapes::StructureShape.new(name: 'CreateIPSetResponse')
36
+ CreateRateBasedRuleRequest = Shapes::StructureShape.new(name: 'CreateRateBasedRuleRequest')
37
+ CreateRateBasedRuleResponse = Shapes::StructureShape.new(name: 'CreateRateBasedRuleResponse')
36
38
  CreateRuleRequest = Shapes::StructureShape.new(name: 'CreateRuleRequest')
37
39
  CreateRuleResponse = Shapes::StructureShape.new(name: 'CreateRuleResponse')
38
40
  CreateSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'CreateSizeConstraintSetRequest')
@@ -47,6 +49,8 @@ module Aws::WAFRegional
47
49
  DeleteByteMatchSetResponse = Shapes::StructureShape.new(name: 'DeleteByteMatchSetResponse')
48
50
  DeleteIPSetRequest = Shapes::StructureShape.new(name: 'DeleteIPSetRequest')
49
51
  DeleteIPSetResponse = Shapes::StructureShape.new(name: 'DeleteIPSetResponse')
52
+ DeleteRateBasedRuleRequest = Shapes::StructureShape.new(name: 'DeleteRateBasedRuleRequest')
53
+ DeleteRateBasedRuleResponse = Shapes::StructureShape.new(name: 'DeleteRateBasedRuleResponse')
50
54
  DeleteRuleRequest = Shapes::StructureShape.new(name: 'DeleteRuleRequest')
51
55
  DeleteRuleResponse = Shapes::StructureShape.new(name: 'DeleteRuleResponse')
52
56
  DeleteSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'DeleteSizeConstraintSetRequest')
@@ -68,6 +72,10 @@ module Aws::WAFRegional
68
72
  GetChangeTokenStatusResponse = Shapes::StructureShape.new(name: 'GetChangeTokenStatusResponse')
69
73
  GetIPSetRequest = Shapes::StructureShape.new(name: 'GetIPSetRequest')
70
74
  GetIPSetResponse = Shapes::StructureShape.new(name: 'GetIPSetResponse')
75
+ GetRateBasedRuleManagedKeysRequest = Shapes::StructureShape.new(name: 'GetRateBasedRuleManagedKeysRequest')
76
+ GetRateBasedRuleManagedKeysResponse = Shapes::StructureShape.new(name: 'GetRateBasedRuleManagedKeysResponse')
77
+ GetRateBasedRuleRequest = Shapes::StructureShape.new(name: 'GetRateBasedRuleRequest')
78
+ GetRateBasedRuleResponse = Shapes::StructureShape.new(name: 'GetRateBasedRuleResponse')
71
79
  GetRuleRequest = Shapes::StructureShape.new(name: 'GetRuleRequest')
72
80
  GetRuleResponse = Shapes::StructureShape.new(name: 'GetRuleResponse')
73
81
  GetSampledRequestsMaxItems = Shapes::IntegerShape.new(name: 'GetSampledRequestsMaxItems')
@@ -104,6 +112,8 @@ module Aws::WAFRegional
104
112
  ListByteMatchSetsResponse = Shapes::StructureShape.new(name: 'ListByteMatchSetsResponse')
105
113
  ListIPSetsRequest = Shapes::StructureShape.new(name: 'ListIPSetsRequest')
106
114
  ListIPSetsResponse = Shapes::StructureShape.new(name: 'ListIPSetsResponse')
115
+ ListRateBasedRulesRequest = Shapes::StructureShape.new(name: 'ListRateBasedRulesRequest')
116
+ ListRateBasedRulesResponse = Shapes::StructureShape.new(name: 'ListRateBasedRulesResponse')
107
117
  ListResourcesForWebACLRequest = Shapes::StructureShape.new(name: 'ListResourcesForWebACLRequest')
108
118
  ListResourcesForWebACLResponse = Shapes::StructureShape.new(name: 'ListResourcesForWebACLResponse')
109
119
  ListRulesRequest = Shapes::StructureShape.new(name: 'ListRulesRequest')
@@ -116,6 +126,8 @@ module Aws::WAFRegional
116
126
  ListWebACLsResponse = Shapes::StructureShape.new(name: 'ListWebACLsResponse')
117
127
  ListXssMatchSetsRequest = Shapes::StructureShape.new(name: 'ListXssMatchSetsRequest')
118
128
  ListXssMatchSetsResponse = Shapes::StructureShape.new(name: 'ListXssMatchSetsResponse')
129
+ ManagedKey = Shapes::StringShape.new(name: 'ManagedKey')
130
+ ManagedKeys = Shapes::ListShape.new(name: 'ManagedKeys')
119
131
  MatchFieldData = Shapes::StringShape.new(name: 'MatchFieldData')
120
132
  MatchFieldType = Shapes::StringShape.new(name: 'MatchFieldType')
121
133
  MetricName = Shapes::StringShape.new(name: 'MetricName')
@@ -130,6 +142,9 @@ module Aws::WAFRegional
130
142
  Predicate = Shapes::StructureShape.new(name: 'Predicate')
131
143
  PredicateType = Shapes::StringShape.new(name: 'PredicateType')
132
144
  Predicates = Shapes::ListShape.new(name: 'Predicates')
145
+ RateBasedRule = Shapes::StructureShape.new(name: 'RateBasedRule')
146
+ RateKey = Shapes::StringShape.new(name: 'RateKey')
147
+ RateLimit = Shapes::IntegerShape.new(name: 'RateLimit')
133
148
  ResourceArn = Shapes::StringShape.new(name: 'ResourceArn')
134
149
  ResourceArns = Shapes::ListShape.new(name: 'ResourceArns')
135
150
  ResourceId = Shapes::StringShape.new(name: 'ResourceId')
@@ -166,6 +181,8 @@ module Aws::WAFRegional
166
181
  UpdateByteMatchSetResponse = Shapes::StructureShape.new(name: 'UpdateByteMatchSetResponse')
167
182
  UpdateIPSetRequest = Shapes::StructureShape.new(name: 'UpdateIPSetRequest')
168
183
  UpdateIPSetResponse = Shapes::StructureShape.new(name: 'UpdateIPSetResponse')
184
+ UpdateRateBasedRuleRequest = Shapes::StructureShape.new(name: 'UpdateRateBasedRuleRequest')
185
+ UpdateRateBasedRuleResponse = Shapes::StructureShape.new(name: 'UpdateRateBasedRuleResponse')
169
186
  UpdateRuleRequest = Shapes::StructureShape.new(name: 'UpdateRuleRequest')
170
187
  UpdateRuleResponse = Shapes::StructureShape.new(name: 'UpdateRuleResponse')
171
188
  UpdateSizeConstraintSetRequest = Shapes::StructureShape.new(name: 'UpdateSizeConstraintSetRequest')
@@ -190,6 +207,7 @@ module Aws::WAFRegional
190
207
  WAFUnavailableEntityException = Shapes::StructureShape.new(name: 'WAFUnavailableEntityException')
191
208
  WafAction = Shapes::StructureShape.new(name: 'WafAction')
192
209
  WafActionType = Shapes::StringShape.new(name: 'WafActionType')
210
+ WafRuleType = Shapes::StringShape.new(name: 'WafRuleType')
193
211
  WebACL = Shapes::StructureShape.new(name: 'WebACL')
194
212
  WebACLSummaries = Shapes::ListShape.new(name: 'WebACLSummaries')
195
213
  WebACLSummary = Shapes::StructureShape.new(name: 'WebACLSummary')
@@ -207,6 +225,7 @@ module Aws::WAFRegional
207
225
  ActivatedRule.add_member(:priority, Shapes::ShapeRef.new(shape: RulePriority, required: true, location_name: "Priority"))
208
226
  ActivatedRule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
209
227
  ActivatedRule.add_member(:action, Shapes::ShapeRef.new(shape: WafAction, required: true, location_name: "Action"))
228
+ ActivatedRule.add_member(:type, Shapes::ShapeRef.new(shape: WafRuleType, location_name: "Type"))
210
229
  ActivatedRule.struct_class = Types::ActivatedRule
211
230
 
212
231
  ActivatedRules.member = Shapes::ShapeRef.new(shape: ActivatedRule)
@@ -258,6 +277,17 @@ module Aws::WAFRegional
258
277
  CreateIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
259
278
  CreateIPSetResponse.struct_class = Types::CreateIPSetResponse
260
279
 
280
+ CreateRateBasedRuleRequest.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "Name"))
281
+ CreateRateBasedRuleRequest.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, required: true, location_name: "MetricName"))
282
+ CreateRateBasedRuleRequest.add_member(:rate_key, Shapes::ShapeRef.new(shape: RateKey, required: true, location_name: "RateKey"))
283
+ CreateRateBasedRuleRequest.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
284
+ CreateRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
285
+ CreateRateBasedRuleRequest.struct_class = Types::CreateRateBasedRuleRequest
286
+
287
+ CreateRateBasedRuleResponse.add_member(:rule, Shapes::ShapeRef.new(shape: RateBasedRule, location_name: "Rule"))
288
+ CreateRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
289
+ CreateRateBasedRuleResponse.struct_class = Types::CreateRateBasedRuleResponse
290
+
261
291
  CreateRuleRequest.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, required: true, location_name: "Name"))
262
292
  CreateRuleRequest.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, required: true, location_name: "MetricName"))
263
293
  CreateRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
@@ -315,6 +345,13 @@ module Aws::WAFRegional
315
345
  DeleteIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
316
346
  DeleteIPSetResponse.struct_class = Types::DeleteIPSetResponse
317
347
 
348
+ DeleteRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
349
+ DeleteRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
350
+ DeleteRateBasedRuleRequest.struct_class = Types::DeleteRateBasedRuleRequest
351
+
352
+ DeleteRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
353
+ DeleteRateBasedRuleResponse.struct_class = Types::DeleteRateBasedRuleResponse
354
+
318
355
  DeleteRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
319
356
  DeleteRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
320
357
  DeleteRuleRequest.struct_class = Types::DeleteRuleRequest
@@ -382,6 +419,20 @@ module Aws::WAFRegional
382
419
  GetIPSetResponse.add_member(:ip_set, Shapes::ShapeRef.new(shape: IPSet, location_name: "IPSet"))
383
420
  GetIPSetResponse.struct_class = Types::GetIPSetResponse
384
421
 
422
+ GetRateBasedRuleManagedKeysRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
423
+ GetRateBasedRuleManagedKeysRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
424
+ GetRateBasedRuleManagedKeysRequest.struct_class = Types::GetRateBasedRuleManagedKeysRequest
425
+
426
+ GetRateBasedRuleManagedKeysResponse.add_member(:managed_keys, Shapes::ShapeRef.new(shape: ManagedKeys, location_name: "ManagedKeys"))
427
+ GetRateBasedRuleManagedKeysResponse.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
428
+ GetRateBasedRuleManagedKeysResponse.struct_class = Types::GetRateBasedRuleManagedKeysResponse
429
+
430
+ GetRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
431
+ GetRateBasedRuleRequest.struct_class = Types::GetRateBasedRuleRequest
432
+
433
+ GetRateBasedRuleResponse.add_member(:rule, Shapes::ShapeRef.new(shape: RateBasedRule, location_name: "Rule"))
434
+ GetRateBasedRuleResponse.struct_class = Types::GetRateBasedRuleResponse
435
+
385
436
  GetRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
386
437
  GetRuleRequest.struct_class = Types::GetRuleRequest
387
438
 
@@ -482,6 +533,14 @@ module Aws::WAFRegional
482
533
  ListIPSetsResponse.add_member(:ip_sets, Shapes::ShapeRef.new(shape: IPSetSummaries, location_name: "IPSets"))
483
534
  ListIPSetsResponse.struct_class = Types::ListIPSetsResponse
484
535
 
536
+ ListRateBasedRulesRequest.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
537
+ ListRateBasedRulesRequest.add_member(:limit, Shapes::ShapeRef.new(shape: PaginationLimit, location_name: "Limit"))
538
+ ListRateBasedRulesRequest.struct_class = Types::ListRateBasedRulesRequest
539
+
540
+ ListRateBasedRulesResponse.add_member(:next_marker, Shapes::ShapeRef.new(shape: NextMarker, location_name: "NextMarker"))
541
+ ListRateBasedRulesResponse.add_member(:rules, Shapes::ShapeRef.new(shape: RuleSummaries, location_name: "Rules"))
542
+ ListRateBasedRulesResponse.struct_class = Types::ListRateBasedRulesResponse
543
+
485
544
  ListResourcesForWebACLRequest.add_member(:web_acl_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "WebACLId"))
486
545
  ListResourcesForWebACLRequest.struct_class = Types::ListResourcesForWebACLRequest
487
546
 
@@ -528,6 +587,8 @@ module Aws::WAFRegional
528
587
  ListXssMatchSetsResponse.add_member(:xss_match_sets, Shapes::ShapeRef.new(shape: XssMatchSetSummaries, location_name: "XssMatchSets"))
529
588
  ListXssMatchSetsResponse.struct_class = Types::ListXssMatchSetsResponse
530
589
 
590
+ ManagedKeys.member = Shapes::ShapeRef.new(shape: ManagedKey)
591
+
531
592
  Predicate.add_member(:negated, Shapes::ShapeRef.new(shape: Negated, required: true, location_name: "Negated"))
532
593
  Predicate.add_member(:type, Shapes::ShapeRef.new(shape: PredicateType, required: true, location_name: "Type"))
533
594
  Predicate.add_member(:data_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "DataId"))
@@ -535,6 +596,14 @@ module Aws::WAFRegional
535
596
 
536
597
  Predicates.member = Shapes::ShapeRef.new(shape: Predicate)
537
598
 
599
+ RateBasedRule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
600
+ RateBasedRule.add_member(:name, Shapes::ShapeRef.new(shape: ResourceName, location_name: "Name"))
601
+ RateBasedRule.add_member(:metric_name, Shapes::ShapeRef.new(shape: MetricName, location_name: "MetricName"))
602
+ RateBasedRule.add_member(:match_predicates, Shapes::ShapeRef.new(shape: Predicates, required: true, location_name: "MatchPredicates"))
603
+ RateBasedRule.add_member(:rate_key, Shapes::ShapeRef.new(shape: RateKey, required: true, location_name: "RateKey"))
604
+ RateBasedRule.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
605
+ RateBasedRule.struct_class = Types::RateBasedRule
606
+
538
607
  ResourceArns.member = Shapes::ShapeRef.new(shape: ResourceArn)
539
608
 
540
609
  Rule.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
@@ -631,6 +700,15 @@ module Aws::WAFRegional
631
700
  UpdateIPSetResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
632
701
  UpdateIPSetResponse.struct_class = Types::UpdateIPSetResponse
633
702
 
703
+ UpdateRateBasedRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
704
+ UpdateRateBasedRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
705
+ UpdateRateBasedRuleRequest.add_member(:updates, Shapes::ShapeRef.new(shape: RuleUpdates, required: true, location_name: "Updates"))
706
+ UpdateRateBasedRuleRequest.add_member(:rate_limit, Shapes::ShapeRef.new(shape: RateLimit, required: true, location_name: "RateLimit"))
707
+ UpdateRateBasedRuleRequest.struct_class = Types::UpdateRateBasedRuleRequest
708
+
709
+ UpdateRateBasedRuleResponse.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, location_name: "ChangeToken"))
710
+ UpdateRateBasedRuleResponse.struct_class = Types::UpdateRateBasedRuleResponse
711
+
634
712
  UpdateRuleRequest.add_member(:rule_id, Shapes::ShapeRef.new(shape: ResourceId, required: true, location_name: "RuleId"))
635
713
  UpdateRuleRequest.add_member(:change_token, Shapes::ShapeRef.new(shape: ChangeToken, required: true, location_name: "ChangeToken"))
636
714
  UpdateRuleRequest.add_member(:updates, Shapes::ShapeRef.new(shape: RuleUpdates, required: true, location_name: "Updates"))
@@ -773,6 +851,19 @@ module Aws::WAFRegional
773
851
  o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
774
852
  end)
775
853
 
854
+ api.add_operation(:create_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
855
+ o.name = "CreateRateBasedRule"
856
+ o.http_method = "POST"
857
+ o.http_request_uri = "/"
858
+ o.input = Shapes::ShapeRef.new(shape: CreateRateBasedRuleRequest)
859
+ o.output = Shapes::ShapeRef.new(shape: CreateRateBasedRuleResponse)
860
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
861
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
862
+ o.errors << Shapes::ShapeRef.new(shape: WAFDisallowedNameException)
863
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
864
+ o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
865
+ end)
866
+
776
867
  api.add_operation(:create_rule, Seahorse::Model::Operation.new.tap do |o|
777
868
  o.name = "CreateRule"
778
869
  o.http_method = "POST"
@@ -870,6 +961,20 @@ module Aws::WAFRegional
870
961
  o.errors << Shapes::ShapeRef.new(shape: WAFNonEmptyEntityException)
871
962
  end)
872
963
 
964
+ api.add_operation(:delete_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
965
+ o.name = "DeleteRateBasedRule"
966
+ o.http_method = "POST"
967
+ o.http_request_uri = "/"
968
+ o.input = Shapes::ShapeRef.new(shape: DeleteRateBasedRuleRequest)
969
+ o.output = Shapes::ShapeRef.new(shape: DeleteRateBasedRuleResponse)
970
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
971
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
972
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
973
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
974
+ o.errors << Shapes::ShapeRef.new(shape: WAFReferencedItemException)
975
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonEmptyEntityException)
976
+ end)
977
+
873
978
  api.add_operation(:delete_rule, Seahorse::Model::Operation.new.tap do |o|
874
979
  o.name = "DeleteRule"
875
980
  o.http_method = "POST"
@@ -993,6 +1098,29 @@ module Aws::WAFRegional
993
1098
  o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
994
1099
  end)
995
1100
 
1101
+ api.add_operation(:get_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
1102
+ o.name = "GetRateBasedRule"
1103
+ o.http_method = "POST"
1104
+ o.http_request_uri = "/"
1105
+ o.input = Shapes::ShapeRef.new(shape: GetRateBasedRuleRequest)
1106
+ o.output = Shapes::ShapeRef.new(shape: GetRateBasedRuleResponse)
1107
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1108
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1109
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1110
+ end)
1111
+
1112
+ api.add_operation(:get_rate_based_rule_managed_keys, Seahorse::Model::Operation.new.tap do |o|
1113
+ o.name = "GetRateBasedRuleManagedKeys"
1114
+ o.http_method = "POST"
1115
+ o.http_request_uri = "/"
1116
+ o.input = Shapes::ShapeRef.new(shape: GetRateBasedRuleManagedKeysRequest)
1117
+ o.output = Shapes::ShapeRef.new(shape: GetRateBasedRuleManagedKeysResponse)
1118
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1119
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1120
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1121
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
1122
+ end)
1123
+
996
1124
  api.add_operation(:get_rule, Seahorse::Model::Operation.new.tap do |o|
997
1125
  o.name = "GetRule"
998
1126
  o.http_method = "POST"
@@ -1091,6 +1219,16 @@ module Aws::WAFRegional
1091
1219
  o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1092
1220
  end)
1093
1221
 
1222
+ api.add_operation(:list_rate_based_rules, Seahorse::Model::Operation.new.tap do |o|
1223
+ o.name = "ListRateBasedRules"
1224
+ o.http_method = "POST"
1225
+ o.http_request_uri = "/"
1226
+ o.input = Shapes::ShapeRef.new(shape: ListRateBasedRulesRequest)
1227
+ o.output = Shapes::ShapeRef.new(shape: ListRateBasedRulesResponse)
1228
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1229
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1230
+ end)
1231
+
1094
1232
  api.add_operation(:list_resources_for_web_acl, Seahorse::Model::Operation.new.tap do |o|
1095
1233
  o.name = "ListResourcesForWebACL"
1096
1234
  o.http_method = "POST"
@@ -1185,6 +1323,23 @@ module Aws::WAFRegional
1185
1323
  o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
1186
1324
  end)
1187
1325
 
1326
+ api.add_operation(:update_rate_based_rule, Seahorse::Model::Operation.new.tap do |o|
1327
+ o.name = "UpdateRateBasedRule"
1328
+ o.http_method = "POST"
1329
+ o.http_request_uri = "/"
1330
+ o.input = Shapes::ShapeRef.new(shape: UpdateRateBasedRuleRequest)
1331
+ o.output = Shapes::ShapeRef.new(shape: UpdateRateBasedRuleResponse)
1332
+ o.errors << Shapes::ShapeRef.new(shape: WAFStaleDataException)
1333
+ o.errors << Shapes::ShapeRef.new(shape: WAFInternalErrorException)
1334
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidAccountException)
1335
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidOperationException)
1336
+ o.errors << Shapes::ShapeRef.new(shape: WAFInvalidParameterException)
1337
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentContainerException)
1338
+ o.errors << Shapes::ShapeRef.new(shape: WAFNonexistentItemException)
1339
+ o.errors << Shapes::ShapeRef.new(shape: WAFReferencedItemException)
1340
+ o.errors << Shapes::ShapeRef.new(shape: WAFLimitsExceededException)
1341
+ end)
1342
+
1188
1343
  api.add_operation(:update_rule, Seahorse::Model::Operation.new.tap do |o|
1189
1344
  o.name = "UpdateRule"
1190
1345
  o.http_method = "POST"
@@ -25,6 +25,7 @@ module Aws::WAFRegional
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::WAFRegional
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-regional-2016-11-28/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
 
@@ -504,6 +515,81 @@ module Aws::WAFRegional
504
515
  include Aws::Structure
505
516
  end
506
517
 
518
+ # @note When making an API call, you may pass CreateRateBasedRuleRequest
519
+ # data as a hash:
520
+ #
521
+ # {
522
+ # name: "ResourceName", # required
523
+ # metric_name: "MetricName", # required
524
+ # rate_key: "IP", # required, accepts IP
525
+ # rate_limit: 1, # required
526
+ # change_token: "ChangeToken", # required
527
+ # }
528
+ #
529
+ # @!attribute [rw] name
530
+ # A friendly name or description of the RateBasedRule. You can't
531
+ # change the name of a `RateBasedRule` after you create it.
532
+ # @return [String]
533
+ #
534
+ # @!attribute [rw] metric_name
535
+ # A friendly name or description for the metrics for this
536
+ # `RateBasedRule`. The name can contain only alphanumeric characters
537
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't
538
+ # change the name of the metric after you create the `RateBasedRule`.
539
+ # @return [String]
540
+ #
541
+ # @!attribute [rw] rate_key
542
+ # The field that AWS WAF uses to determine if requests are likely
543
+ # arriving from a single source and thus subject to rate monitoring.
544
+ # The only valid value for `RateKey` is `IP`. `IP` indicates that
545
+ # requests that arrive from the same IP address are subject to the
546
+ # `RateLimit` that is specified in the `RateBasedRule`.
547
+ # @return [String]
548
+ #
549
+ # @!attribute [rw] rate_limit
550
+ # The maximum number of requests, which have an identical value in the
551
+ # field that is specified by `RateKey`, allowed in a five-minute
552
+ # period. If the number of requests exceeds the `RateLimit` and the
553
+ # other predicates specified in the rule are also met, AWS WAF
554
+ # triggers the action that is specified for this rule.
555
+ # @return [Integer]
556
+ #
557
+ # @!attribute [rw] change_token
558
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
559
+ # request. You can also use this value to query the status of the
560
+ # request. For more information, see GetChangeTokenStatus.
561
+ # @return [String]
562
+ #
563
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/CreateRateBasedRuleRequest AWS API Documentation
564
+ #
565
+ class CreateRateBasedRuleRequest < Struct.new(
566
+ :name,
567
+ :metric_name,
568
+ :rate_key,
569
+ :rate_limit,
570
+ :change_token)
571
+ include Aws::Structure
572
+ end
573
+
574
+ # @!attribute [rw] rule
575
+ # The RateBasedRule that is returned in the `CreateRateBasedRule`
576
+ # response.
577
+ # @return [Types::RateBasedRule]
578
+ #
579
+ # @!attribute [rw] change_token
580
+ # The `ChangeToken` that you used to submit the `CreateRateBasedRule`
581
+ # request. You can also use this value to query the status of the
582
+ # request. For more information, see GetChangeTokenStatus.
583
+ # @return [String]
584
+ #
585
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/CreateRateBasedRuleResponse AWS API Documentation
586
+ #
587
+ class CreateRateBasedRuleResponse < Struct.new(
588
+ :rule,
589
+ :change_token)
590
+ include Aws::Structure
591
+ end
592
+
507
593
  # @note When making an API call, you may pass CreateRuleRequest
508
594
  # data as a hash:
509
595
  #
@@ -836,6 +922,44 @@ module Aws::WAFRegional
836
922
  include Aws::Structure
837
923
  end
838
924
 
925
+ # @note When making an API call, you may pass DeleteRateBasedRuleRequest
926
+ # data as a hash:
927
+ #
928
+ # {
929
+ # rule_id: "ResourceId", # required
930
+ # change_token: "ChangeToken", # required
931
+ # }
932
+ #
933
+ # @!attribute [rw] rule_id
934
+ # The `RuleId` of the RateBasedRule that you want to delete. `RuleId`
935
+ # is returned by CreateRateBasedRule and by ListRateBasedRules.
936
+ # @return [String]
937
+ #
938
+ # @!attribute [rw] change_token
939
+ # The value returned by the most recent call to GetChangeToken.
940
+ # @return [String]
941
+ #
942
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/DeleteRateBasedRuleRequest AWS API Documentation
943
+ #
944
+ class DeleteRateBasedRuleRequest < Struct.new(
945
+ :rule_id,
946
+ :change_token)
947
+ include Aws::Structure
948
+ end
949
+
950
+ # @!attribute [rw] change_token
951
+ # The `ChangeToken` that you used to submit the `DeleteRateBasedRule`
952
+ # request. You can also use this value to query the status of the
953
+ # request. For more information, see GetChangeTokenStatus.
954
+ # @return [String]
955
+ #
956
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/DeleteRateBasedRuleResponse AWS API Documentation
957
+ #
958
+ class DeleteRateBasedRuleResponse < Struct.new(
959
+ :change_token)
960
+ include Aws::Structure
961
+ end
962
+
839
963
  # @note When making an API call, you may pass DeleteRuleRequest
840
964
  # data as a hash:
841
965
  #
@@ -1246,6 +1370,81 @@ module Aws::WAFRegional
1246
1370
  include Aws::Structure
1247
1371
  end
1248
1372
 
1373
+ # @note When making an API call, you may pass GetRateBasedRuleManagedKeysRequest
1374
+ # data as a hash:
1375
+ #
1376
+ # {
1377
+ # rule_id: "ResourceId", # required
1378
+ # next_marker: "NextMarker",
1379
+ # }
1380
+ #
1381
+ # @!attribute [rw] rule_id
1382
+ # The `RuleId` of the RateBasedRule for which you want to get a list
1383
+ # of `ManagedKeys`. `RuleId` is returned by CreateRateBasedRule and by
1384
+ # ListRateBasedRules.
1385
+ # @return [String]
1386
+ #
1387
+ # @!attribute [rw] next_marker
1388
+ # A null value and not currently used. Do not include this in your
1389
+ # request.
1390
+ # @return [String]
1391
+ #
1392
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRuleManagedKeysRequest AWS API Documentation
1393
+ #
1394
+ class GetRateBasedRuleManagedKeysRequest < Struct.new(
1395
+ :rule_id,
1396
+ :next_marker)
1397
+ include Aws::Structure
1398
+ end
1399
+
1400
+ # @!attribute [rw] managed_keys
1401
+ # An array of IP addresses that currently are blocked by the specified
1402
+ # RateBasedRule.
1403
+ # @return [Array<String>]
1404
+ #
1405
+ # @!attribute [rw] next_marker
1406
+ # A null value and not currently used.
1407
+ # @return [String]
1408
+ #
1409
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRuleManagedKeysResponse AWS API Documentation
1410
+ #
1411
+ class GetRateBasedRuleManagedKeysResponse < Struct.new(
1412
+ :managed_keys,
1413
+ :next_marker)
1414
+ include Aws::Structure
1415
+ end
1416
+
1417
+ # @note When making an API call, you may pass GetRateBasedRuleRequest
1418
+ # data as a hash:
1419
+ #
1420
+ # {
1421
+ # rule_id: "ResourceId", # required
1422
+ # }
1423
+ #
1424
+ # @!attribute [rw] rule_id
1425
+ # The `RuleId` of the RateBasedRule that you want to get. `RuleId` is
1426
+ # returned by CreateRateBasedRule and by ListRateBasedRules.
1427
+ # @return [String]
1428
+ #
1429
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRuleRequest AWS API Documentation
1430
+ #
1431
+ class GetRateBasedRuleRequest < Struct.new(
1432
+ :rule_id)
1433
+ include Aws::Structure
1434
+ end
1435
+
1436
+ # @!attribute [rw] rule
1437
+ # Information about the RateBasedRule that you specified in the
1438
+ # `GetRateBasedRule` request.
1439
+ # @return [Types::RateBasedRule]
1440
+ #
1441
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/GetRateBasedRuleResponse AWS API Documentation
1442
+ #
1443
+ class GetRateBasedRuleResponse < Struct.new(
1444
+ :rule)
1445
+ include Aws::Structure
1446
+ end
1447
+
1249
1448
  # @note When making an API call, you may pass GetRuleRequest
1250
1449
  # data as a hash:
1251
1450
  #
@@ -1688,14 +1887,9 @@ module Aws::WAFRegional
1688
1887
  # @!attribute [rw] ip_set_descriptors
1689
1888
  # The IP address type (`IPV4` or `IPV6`) and the IP address range (in
1690
1889
  # CIDR notation) that web requests originate from. If the `WebACL` is
1691
- # associated with a CloudFront distribution, this is the value of one
1692
- # of the following fields in CloudFront access logs:
1693
- #
1694
- # * `c-ip`, if the viewer did not use an HTTP proxy or a load balancer
1695
- # to send the request
1696
- #
1697
- # * `x-forwarded-for`, if the viewer did use an HTTP proxy or a load
1698
- # balancer to send the request
1890
+ # associated with a CloudFront distribution and the viewer did not use
1891
+ # an HTTP proxy or a load balancer to send the request, this is the
1892
+ # value of the c-ip field in the CloudFront access logs.
1699
1893
  # @return [Array<Types::IPSetDescriptor>]
1700
1894
  #
1701
1895
  # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/IPSet AWS API Documentation
@@ -1919,6 +2113,58 @@ module Aws::WAFRegional
1919
2113
  include Aws::Structure
1920
2114
  end
1921
2115
 
2116
+ # @note When making an API call, you may pass ListRateBasedRulesRequest
2117
+ # data as a hash:
2118
+ #
2119
+ # {
2120
+ # next_marker: "NextMarker",
2121
+ # limit: 1,
2122
+ # }
2123
+ #
2124
+ # @!attribute [rw] next_marker
2125
+ # If you specify a value for `Limit` and you have more `Rules` than
2126
+ # the value of `Limit`, AWS WAF returns a `NextMarker` value in the
2127
+ # response that allows you to list another group of `Rules`. For the
2128
+ # second and subsequent `ListRateBasedRules` requests, specify the
2129
+ # value of `NextMarker` from the previous response to get information
2130
+ # about another batch of `Rules`.
2131
+ # @return [String]
2132
+ #
2133
+ # @!attribute [rw] limit
2134
+ # Specifies the number of `Rules` that you want AWS WAF to return for
2135
+ # this request. If you have more `Rules` than the number that you
2136
+ # specify for `Limit`, the response includes a `NextMarker` value that
2137
+ # you can use to get another batch of `Rules`.
2138
+ # @return [Integer]
2139
+ #
2140
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/ListRateBasedRulesRequest AWS API Documentation
2141
+ #
2142
+ class ListRateBasedRulesRequest < Struct.new(
2143
+ :next_marker,
2144
+ :limit)
2145
+ include Aws::Structure
2146
+ end
2147
+
2148
+ # @!attribute [rw] next_marker
2149
+ # If you have more `Rules` than the number that you specified for
2150
+ # `Limit` in the request, the response includes a `NextMarker` value.
2151
+ # To list more `Rules`, submit another `ListRateBasedRules` request,
2152
+ # and specify the `NextMarker` value from the response in the
2153
+ # `NextMarker` value in the next request.
2154
+ # @return [String]
2155
+ #
2156
+ # @!attribute [rw] rules
2157
+ # An array of RuleSummary objects.
2158
+ # @return [Array<Types::RuleSummary>]
2159
+ #
2160
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/ListRateBasedRulesResponse AWS API Documentation
2161
+ #
2162
+ class ListRateBasedRulesResponse < Struct.new(
2163
+ :next_marker,
2164
+ :rules)
2165
+ include Aws::Structure
2166
+ end
2167
+
1922
2168
  # @note When making an API call, you may pass ListResourcesForWebACLRequest
1923
2169
  # data as a hash:
1924
2170
  #
@@ -2280,6 +2526,77 @@ module Aws::WAFRegional
2280
2526
  include Aws::Structure
2281
2527
  end
2282
2528
 
2529
+ # A `RateBasedRule` is identical to a regular Rule, with one addition: a
2530
+ # `RateBasedRule` counts the number of requests that arrive from a
2531
+ # specified IP address every five minutes. For example, based on recent
2532
+ # requests that you've seen from an attacker, you might create a
2533
+ # `RateBasedRule` that includes the following conditions:
2534
+ #
2535
+ # * The requests come from 192.0.2.44.
2536
+ #
2537
+ # * They contain the value `BadBot` in the `User-Agent` header.
2538
+ #
2539
+ # In the rule, you also define the rate limit as 15,000.
2540
+ #
2541
+ # Requests that meet both of these conditions and exceed 15,000 requests
2542
+ # every five minutes trigger the rule's action (block or count), which
2543
+ # is defined in the web ACL.
2544
+ #
2545
+ # @!attribute [rw] rule_id
2546
+ # A unique identifier for a `RateBasedRule`. You use `RuleId` to get
2547
+ # more information about a `RateBasedRule` (see GetRateBasedRule),
2548
+ # update a `RateBasedRule` (see UpdateRateBasedRule), insert a
2549
+ # `RateBasedRule` into a `WebACL` or delete one from a `WebACL` (see
2550
+ # UpdateWebACL), or delete a `RateBasedRule` from AWS WAF (see
2551
+ # DeleteRateBasedRule).
2552
+ # @return [String]
2553
+ #
2554
+ # @!attribute [rw] name
2555
+ # A friendly name or description for a `RateBasedRule`. You can't
2556
+ # change the name of a `RateBasedRule` after you create it.
2557
+ # @return [String]
2558
+ #
2559
+ # @!attribute [rw] metric_name
2560
+ # A friendly name or description for the metrics for a
2561
+ # `RateBasedRule`. The name can contain only alphanumeric characters
2562
+ # (A-Z, a-z, 0-9); the name can't contain whitespace. You can't
2563
+ # change the name of the metric after you create the `RateBasedRule`.
2564
+ # @return [String]
2565
+ #
2566
+ # @!attribute [rw] match_predicates
2567
+ # The `Predicates` object contains one `Predicate` element for each
2568
+ # ByteMatchSet, IPSet, or SqlInjectionMatchSet object that you want to
2569
+ # include in a `RateBasedRule`.
2570
+ # @return [Array<Types::Predicate>]
2571
+ #
2572
+ # @!attribute [rw] rate_key
2573
+ # The field that AWS WAF uses to determine if requests are likely
2574
+ # arriving from single source and thus subject to rate monitoring. The
2575
+ # only valid value for `RateKey` is `IP`. `IP` indicates that requests
2576
+ # arriving from the same IP address are subject to the `RateLimit`
2577
+ # that is specified in the `RateBasedRule`.
2578
+ # @return [String]
2579
+ #
2580
+ # @!attribute [rw] rate_limit
2581
+ # The maximum number of requests, which have an identical value in the
2582
+ # field specified by the `RateKey`, allowed in a five-minute period.
2583
+ # If the number of requests exceeds the `RateLimit` and the other
2584
+ # predicates specified in the rule are also met, AWS WAF triggers the
2585
+ # action that is specified for this rule.
2586
+ # @return [Integer]
2587
+ #
2588
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/RateBasedRule AWS API Documentation
2589
+ #
2590
+ class RateBasedRule < Struct.new(
2591
+ :rule_id,
2592
+ :name,
2593
+ :metric_name,
2594
+ :match_predicates,
2595
+ :rate_key,
2596
+ :rate_limit)
2597
+ include Aws::Structure
2598
+ end
2599
+
2283
2600
  # A combination of ByteMatchSet, IPSet, and/or SqlInjectionMatchSet
2284
2601
  # objects that identify the web requests that you want to allow, block,
2285
2602
  # or count. For example, you might create a `Rule` that includes the
@@ -3066,6 +3383,71 @@ module Aws::WAFRegional
3066
3383
  include Aws::Structure
3067
3384
  end
3068
3385
 
3386
+ # @note When making an API call, you may pass UpdateRateBasedRuleRequest
3387
+ # data as a hash:
3388
+ #
3389
+ # {
3390
+ # rule_id: "ResourceId", # required
3391
+ # change_token: "ChangeToken", # required
3392
+ # updates: [ # required
3393
+ # {
3394
+ # action: "INSERT", # required, accepts INSERT, DELETE
3395
+ # predicate: { # required
3396
+ # negated: false, # required
3397
+ # type: "IPMatch", # required, accepts IPMatch, ByteMatch, SqlInjectionMatch, SizeConstraint, XssMatch
3398
+ # data_id: "ResourceId", # required
3399
+ # },
3400
+ # },
3401
+ # ],
3402
+ # rate_limit: 1, # required
3403
+ # }
3404
+ #
3405
+ # @!attribute [rw] rule_id
3406
+ # The `RuleId` of the `RateBasedRule` that you want to update.
3407
+ # `RuleId` is returned by `CreateRateBasedRule` and by
3408
+ # ListRateBasedRules.
3409
+ # @return [String]
3410
+ #
3411
+ # @!attribute [rw] change_token
3412
+ # The value returned by the most recent call to GetChangeToken.
3413
+ # @return [String]
3414
+ #
3415
+ # @!attribute [rw] updates
3416
+ # An array of `RuleUpdate` objects that you want to insert into or
3417
+ # delete from a RateBasedRule.
3418
+ # @return [Array<Types::RuleUpdate>]
3419
+ #
3420
+ # @!attribute [rw] rate_limit
3421
+ # The maximum number of requests, which have an identical value in the
3422
+ # field specified by the `RateKey`, allowed in a five-minute period.
3423
+ # If the number of requests exceeds the `RateLimit` and the other
3424
+ # predicates specified in the rule are also met, AWS WAF triggers the
3425
+ # action that is specified for this rule.
3426
+ # @return [Integer]
3427
+ #
3428
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/UpdateRateBasedRuleRequest AWS API Documentation
3429
+ #
3430
+ class UpdateRateBasedRuleRequest < Struct.new(
3431
+ :rule_id,
3432
+ :change_token,
3433
+ :updates,
3434
+ :rate_limit)
3435
+ include Aws::Structure
3436
+ end
3437
+
3438
+ # @!attribute [rw] change_token
3439
+ # The `ChangeToken` that you used to submit the `UpdateRateBasedRule`
3440
+ # request. You can also use this value to query the status of the
3441
+ # request. For more information, see GetChangeTokenStatus.
3442
+ # @return [String]
3443
+ #
3444
+ # @see http://docs.aws.amazon.com/goto/WebAPI/waf-regional-2016-11-28/UpdateRateBasedRuleResponse AWS API Documentation
3445
+ #
3446
+ class UpdateRateBasedRuleResponse < Struct.new(
3447
+ :change_token)
3448
+ include Aws::Structure
3449
+ end
3450
+
3069
3451
  # @note When making an API call, you may pass UpdateRuleRequest
3070
3452
  # data as a hash:
3071
3453
  #
@@ -3281,6 +3663,7 @@ module Aws::WAFRegional
3281
3663
  # action: { # required
3282
3664
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
3283
3665
  # },
3666
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
3284
3667
  # },
3285
3668
  # },
3286
3669
  # ],
@@ -3307,7 +3690,7 @@ module Aws::WAFRegional
3307
3690
  #
3308
3691
  # * WebACLUpdate: Contains `Action` and `ActivatedRule`
3309
3692
  #
3310
- # * ActivatedRule: Contains `Action`, `Priority`, and `RuleId`
3693
+ # * ActivatedRule: Contains `Action`, `Priority`, `RuleId`, and `Type`
3311
3694
  #
3312
3695
  # * WafAction: Contains `Type`
3313
3696
  # @return [Array<Types::WebACLUpdate>]
@@ -3536,6 +3919,7 @@ module Aws::WAFRegional
3536
3919
  # action: { # required
3537
3920
  # type: "BLOCK", # required, accepts BLOCK, ALLOW, COUNT
3538
3921
  # },
3922
+ # type: "REGULAR", # accepts REGULAR, RATE_BASED
3539
3923
  # },
3540
3924
  # }
3541
3925
  #
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-sdk-wafregional
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