aws-sdk-waf 1.0.0.rc7 → 1.0.0.rc8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|