/*
* 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 wafv2-2019-07-29.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.WAFV2.Model
{
///
/// Defines an association between logging destinations and a web ACL resource, for logging
/// from WAF. As part of the association, you can specify parts of the standard logging
/// fields to keep out of the logs and you can specify filters so that you log only a
/// subset of the logging records.
///
///
///
/// You can define one logging destination per web ACL.
///
///
///
/// You can access information about the traffic that WAF inspects using the following
/// steps:
///
/// -
///
/// Create your logging destination. You can use an Amazon CloudWatch Logs log group,
/// an Amazon Simple Storage Service (Amazon S3) bucket, or an Amazon Kinesis Data Firehose.
///
///
///
///
/// The name that you give the destination must start with
aws-waf-logs-
.
/// Depending on the type of destination, you might need to configure additional settings
/// or permissions.
///
///
///
/// For configuration requirements and pricing information for each destination type,
/// see Logging
/// web ACL traffic in the WAF Developer Guide.
///
/// -
///
/// Associate your logging destination to your web ACL using a
PutLoggingConfiguration
/// request.
///
///
///
/// When you successfully enable logging using a PutLoggingConfiguration
/// request, WAF creates an additional role or policy that is required to write logs to
/// the logging destination. For an Amazon CloudWatch Logs log group, WAF creates a resource
/// policy on the log group. For an Amazon S3 bucket, WAF creates a bucket policy. For
/// an Amazon Kinesis Data Firehose, WAF creates a service-linked role.
///
///
///
/// For additional information about web ACL logging, see Logging
/// web ACL traffic information in the WAF Developer Guide.
///
///
public partial class LoggingConfiguration
{
private List _logDestinationConfigs = new List();
private LoggingFilter _loggingFilter;
private bool? _managedByFirewallManager;
private List _redactedFields = new List();
private string _resourceArn;
///
/// Gets and sets the property LogDestinationConfigs.
///
/// The logging destination configuration that you want to associate with the web ACL.
///
///
///
/// You can associate one logging destination to a web ACL.
///
///
///
[AWSProperty(Required=true, Min=1, Max=100)]
public List LogDestinationConfigs
{
get { return this._logDestinationConfigs; }
set { this._logDestinationConfigs = value; }
}
// Check to see if LogDestinationConfigs property is set
internal bool IsSetLogDestinationConfigs()
{
return this._logDestinationConfigs != null && this._logDestinationConfigs.Count > 0;
}
///
/// Gets and sets the property LoggingFilter.
///
/// Filtering that specifies which web requests are kept in the logs and which are dropped.
/// You can filter on the rule action and on the web request labels that were applied
/// by matching rules during web ACL evaluation.
///
///
public LoggingFilter LoggingFilter
{
get { return this._loggingFilter; }
set { this._loggingFilter = value; }
}
// Check to see if LoggingFilter property is set
internal bool IsSetLoggingFilter()
{
return this._loggingFilter != null;
}
///
/// Gets and sets the property ManagedByFirewallManager.
///
/// Indicates whether the logging configuration was created by Firewall Manager, as part
/// of an WAF policy configuration. If true, only Firewall Manager can modify or delete
/// the configuration.
///
///
public bool ManagedByFirewallManager
{
get { return this._managedByFirewallManager.GetValueOrDefault(); }
set { this._managedByFirewallManager = value; }
}
// Check to see if ManagedByFirewallManager property is set
internal bool IsSetManagedByFirewallManager()
{
return this._managedByFirewallManager.HasValue;
}
///
/// Gets and sets the property RedactedFields.
///
/// The parts of the request that you want to keep out of the logs.
///
///
///
/// For example, if you redact the SingleHeader
field, the HEADER
/// field in the logs will be REDACTED
for all rules that use the SingleHeader
/// FieldToMatch
setting.
///
///
///
/// Redaction applies only to the component that's specified in the rule's FieldToMatch
/// setting, so the SingleHeader
redaction doesn't apply to rules that use
/// the Headers
FieldToMatch
.
///
///
///
/// You can specify only the following fields for redaction: UriPath
, QueryString
,
/// SingleHeader
, and Method
.
///
///
///
[AWSProperty(Max=100)]
public List RedactedFields
{
get { return this._redactedFields; }
set { this._redactedFields = value; }
}
// Check to see if RedactedFields property is set
internal bool IsSetRedactedFields()
{
return this._redactedFields != null && this._redactedFields.Count > 0;
}
///
/// Gets and sets the property ResourceArn.
///
/// The Amazon Resource Name (ARN) of the web ACL that you want to associate with LogDestinationConfigs
.
///
///
[AWSProperty(Required=true, Min=20, Max=2048)]
public string ResourceArn
{
get { return this._resourceArn; }
set { this._resourceArn = value; }
}
// Check to see if ResourceArn property is set
internal bool IsSetResourceArn()
{
return this._resourceArn != null;
}
}
}