/* * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file is distributed * on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either * express or implied. See the License for the specific language governing * permissions and limitations under the License. */ /* * Do not modify this file. This file is generated from the waf-2015-08-24.normal.json service model. */ using System; using System.Collections.Generic; using System.Xml.Serialization; using System.Text; using System.IO; using System.Net; using Amazon.Runtime; using Amazon.Runtime.Internal; namespace Amazon.WAF.Model { /// /// Container for the parameters to the CreateRateBasedRule operation. /// /// /// This is AWS WAF Classic documentation. For more information, see AWS /// WAF Classic in the developer guide. /// /// /// /// For the latest version of AWS WAF, use the AWS WAFV2 API and see the AWS /// WAF Developer Guide. With the latest version, AWS WAF has a single set of endpoints /// for regional and global use. /// /// /// /// Creates a RateBasedRule. The RateBasedRule contains a RateLimit, /// which specifies the maximum number of requests that AWS WAF allows from a specified /// IP address in a five-minute period. The RateBasedRule also contains the /// IPSet objects, ByteMatchSet objects, and other predicates /// that identify the requests that you want to count or block if these requests exceed /// the RateLimit. /// /// /// /// If you add more than one predicate to a RateBasedRule, a request not /// only must exceed the RateLimit, but it also must match all the conditions /// to be counted or blocked. For example, suppose you add the following to a RateBasedRule: /// /// /// /// Further, you specify a RateLimit of 1,000. /// /// /// /// You then add the RateBasedRule to a WebACL and specify that /// you want to block requests that meet the conditions in the rule. For a request to /// be blocked, it must come from the IP address 192.0.2.44 and the User-Agent /// header in the request must contain the value BadBot. Further, requests /// that match these two conditions must be received at a rate of more than 1,000 requests /// every five minutes. If both conditions are met and the rate is exceeded, AWS WAF blocks /// the requests. If the rate drops below 1,000 for a five-minute period, AWS WAF no longer /// blocks the requests. /// /// /// /// As a second example, suppose you want to limit requests to a particular page on your /// site. To do this, you could add the following to a RateBasedRule: /// /// /// /// Further, you specify a RateLimit of 1,000. /// /// /// /// By adding this RateBasedRule to a WebACL, you could limit /// requests to your login page without affecting the rest of your site. /// /// /// /// To create and configure a RateBasedRule, perform the following steps: /// ///
  1. /// /// Create and update the predicates that you want to include in the rule. For more information, /// see CreateByteMatchSet, CreateIPSet, and CreateSqlInjectionMatchSet. /// ///
  2. /// /// Use GetChangeToken to get the change token that you provide in the ChangeToken /// parameter of a CreateRule request. /// ///
  3. /// /// Submit a CreateRateBasedRule request. /// ///
  4. /// /// Use GetChangeToken to get the change token that you provide in the ChangeToken /// parameter of an UpdateRule request. /// ///
  5. /// /// Submit an UpdateRateBasedRule request to specify the predicates that /// you want to include in the rule. /// ///
  6. /// /// Create and update a WebACL that contains the RateBasedRule. /// For more information, see CreateWebACL. /// ///
/// /// For more information about how to use the AWS WAF API to allow or block HTTP requests, /// see the AWS WAF Developer /// Guide. /// ///
public partial class CreateRateBasedRuleRequest : AmazonWAFRequest { private string _changeToken; private string _metricName; private string _name; private RateKey _rateKey; private long? _rateLimit; private List _tags = new List(); /// /// Gets and sets the property ChangeToken. /// /// The ChangeToken that you used to submit the CreateRateBasedRule /// request. You can also use this value to query the status of the request. For more /// information, see GetChangeTokenStatus. /// /// [AWSProperty(Required=true, Min=1, Max=128)] public string ChangeToken { get { return this._changeToken; } set { this._changeToken = value; } } // Check to see if ChangeToken property is set internal bool IsSetChangeToken() { return this._changeToken != null; } /// /// Gets and sets the property MetricName. /// /// A friendly name or description for the metrics for this RateBasedRule. /// The name can contain only alphanumeric characters (A-Z, a-z, 0-9), with maximum length /// 128 and minimum length one. It can't contain whitespace or metric names reserved for /// AWS WAF, including "All" and "Default_Action." You can't change the name of the metric /// after you create the RateBasedRule. /// /// [AWSProperty(Required=true, Min=1, Max=128)] public string MetricName { get { return this._metricName; } set { this._metricName = value; } } // Check to see if MetricName property is set internal bool IsSetMetricName() { return this._metricName != null; } /// /// Gets and sets the property Name. /// /// A friendly name or description of the RateBasedRule. You can't change the name /// of a RateBasedRule after you create it. /// /// [AWSProperty(Required=true, Min=1, Max=128)] public string Name { get { return this._name; } set { this._name = value; } } // Check to see if Name property is set internal bool IsSetName() { return this._name != null; } /// /// Gets and sets the property RateKey. /// /// The field that AWS WAF uses to determine if requests are likely arriving from a single /// source and thus subject to rate monitoring. The only valid value for RateKey /// is IP. IP indicates that requests that arrive from the same /// IP address are subject to the RateLimit that is specified in the RateBasedRule. /// /// [AWSProperty(Required=true)] public RateKey RateKey { get { return this._rateKey; } set { this._rateKey = value; } } // Check to see if RateKey property is set internal bool IsSetRateKey() { return this._rateKey != null; } /// /// Gets and sets the property RateLimit. /// /// The maximum number of requests, which have an identical value in the field that is /// specified by RateKey, allowed in a five-minute period. If the number /// of requests exceeds the RateLimit and the other predicates specified /// in the rule are also met, AWS WAF triggers the action that is specified for this rule. /// /// [AWSProperty(Required=true, Min=100, Max=2000000000)] public long RateLimit { get { return this._rateLimit.GetValueOrDefault(); } set { this._rateLimit = value; } } // Check to see if RateLimit property is set internal bool IsSetRateLimit() { return this._rateLimit.HasValue; } /// /// Gets and sets the property Tags. /// [AWSProperty(Min=1)] public List Tags { get { return this._tags; } set { this._tags = value; } } // Check to see if Tags property is set internal bool IsSetTags() { return this._tags != null && this._tags.Count > 0; } } }