/**
* Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
* SPDX-License-Identifier: Apache-2.0.
*/
#pragma once
#include 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
* 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
* When you
* successfully enable logging using a For additional information about web ACL logging, see Logging
* web ACL traffic information in the WAF Developer Guide.
aws-waf-logs-
. Depending on the type of destination, you might need
* to configure additional settings or permissions. PutLoggingConfiguration
request.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.See
* Also:
AWS
* API Reference
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The Amazon Resource Name (ARN) of the web ACL that you want to associate with
* LogDestinationConfigs
.
The logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline const Aws::VectorThe logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline bool LogDestinationConfigsHasBeenSet() const { return m_logDestinationConfigsHasBeenSet; } /** *The logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline void SetLogDestinationConfigs(const Aws::VectorThe logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline void SetLogDestinationConfigs(Aws::VectorThe logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline LoggingConfiguration& WithLogDestinationConfigs(const Aws::VectorThe logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline LoggingConfiguration& WithLogDestinationConfigs(Aws::VectorThe logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline LoggingConfiguration& AddLogDestinationConfigs(const Aws::String& value) { m_logDestinationConfigsHasBeenSet = true; m_logDestinationConfigs.push_back(value); return *this; } /** *The logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline LoggingConfiguration& AddLogDestinationConfigs(Aws::String&& value) { m_logDestinationConfigsHasBeenSet = true; m_logDestinationConfigs.push_back(std::move(value)); return *this; } /** *The logging destination configuration that you want to associate with the web * ACL.
You can associate one logging destination to a web ACL.
* */ inline LoggingConfiguration& AddLogDestinationConfigs(const char* value) { m_logDestinationConfigsHasBeenSet = true; m_logDestinationConfigs.push_back(value); return *this; } /** *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
.
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
.
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
.
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
.
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
.
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
.
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
.
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
.
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.
*/ inline bool GetManagedByFirewallManager() const{ return m_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.
*/ inline bool ManagedByFirewallManagerHasBeenSet() const { return m_managedByFirewallManagerHasBeenSet; } /** *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.
*/ inline void SetManagedByFirewallManager(bool value) { m_managedByFirewallManagerHasBeenSet = true; m_managedByFirewallManager = value; } /** *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.
*/ inline LoggingConfiguration& WithManagedByFirewallManager(bool value) { SetManagedByFirewallManager(value); return *this;} /** *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.
*/ inline const LoggingFilter& GetLoggingFilter() const{ return m_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.
*/ inline bool LoggingFilterHasBeenSet() const { return m_loggingFilterHasBeenSet; } /** *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.
*/ inline void SetLoggingFilter(const LoggingFilter& value) { m_loggingFilterHasBeenSet = true; m_loggingFilter = value; } /** *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.
*/ inline void SetLoggingFilter(LoggingFilter&& value) { m_loggingFilterHasBeenSet = true; m_loggingFilter = std::move(value); } /** *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.
*/ inline LoggingConfiguration& WithLoggingFilter(const LoggingFilter& value) { SetLoggingFilter(value); return *this;} /** *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.
*/ inline LoggingConfiguration& WithLoggingFilter(LoggingFilter&& value) { SetLoggingFilter(std::move(value)); return *this;} private: Aws::String m_resourceArn; bool m_resourceArnHasBeenSet = false; Aws::Vector