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 +4 -4
- data/lib/aws-sdk-waf.rb +1 -1
- data/lib/aws-sdk-waf/client.rb +415 -2
- data/lib/aws-sdk-waf/client_api.rb +155 -0
- data/lib/aws-sdk-waf/types.rb +394 -10
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 663905a7b3208929449c414eb0e1e983a772e1e4
|
4
|
+
data.tar.gz: 8edaf15d950ba9089938d286c197277dbf614a8f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cfdd0d1f5e06053b2a9711b223194fa266fb8cd735ce32b2a5652fdf6ddb53321c6055ceee08991afc0f428fa9cc9c39a1c3c62992f209ada54d9ff86ae2378b
|
7
|
+
data.tar.gz: dab98399f11222f93162bdd7ccda2faa9ca6c34e337bcd4c8cc10cba2767f98276458002e05ccaaeb5f052b03e0a153e995f1e64a84f7dc283b0721568867ed7
|
data/lib/aws-sdk-waf.rb
CHANGED
data/lib/aws-sdk-waf/client.rb
CHANGED
@@ -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 `
|
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.
|
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"
|
data/lib/aws-sdk-waf/types.rb
CHANGED
@@ -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
|
1609
|
-
#
|
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 `
|
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.
|
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-
|
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.
|
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.
|
26
|
+
version: 3.0.0.rc13
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: aws-sigv4
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|