/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include namespace Aws { namespace Utils { namespace Json { class JsonValue; class JsonView; } // namespace Json } // namespace Utils namespace NetworkFirewall { namespace Model { /** *

Defines where Network Firewall sends logs for the firewall for one log type. * This is used in LoggingConfiguration. You can send each type of log to an * Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

Network Firewall generates logs for stateful rule groups. You can * save alert and flow log types. The stateful rules engine records flow logs for * all network traffic that it receives. It records alert logs for traffic that * matches stateful rules that have the rule action set to DROP or * ALERT.

See Also:

AWS * API Reference

*/ class LogDestinationConfig { public: AWS_NETWORKFIREWALL_API LogDestinationConfig(); AWS_NETWORKFIREWALL_API LogDestinationConfig(Aws::Utils::Json::JsonView jsonValue); AWS_NETWORKFIREWALL_API LogDestinationConfig& operator=(Aws::Utils::Json::JsonView jsonValue); AWS_NETWORKFIREWALL_API Aws::Utils::Json::JsonValue Jsonize() const; /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline const LogType& GetLogType() const{ return m_logType; } /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline bool LogTypeHasBeenSet() const { return m_logTypeHasBeenSet; } /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline void SetLogType(const LogType& value) { m_logTypeHasBeenSet = true; m_logType = value; } /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline void SetLogType(LogType&& value) { m_logTypeHasBeenSet = true; m_logType = std::move(value); } /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline LogDestinationConfig& WithLogType(const LogType& value) { SetLogType(value); return *this;} /** *

The type of log to send. Alert logs report traffic that matches a * StatefulRule with an action setting that sends an alert log message. Flow * logs are standard network traffic flow logs.

*/ inline LogDestinationConfig& WithLogType(LogType&& value) { SetLogType(std::move(value)); return *this;} /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline const LogDestinationType& GetLogDestinationType() const{ return m_logDestinationType; } /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline bool LogDestinationTypeHasBeenSet() const { return m_logDestinationTypeHasBeenSet; } /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline void SetLogDestinationType(const LogDestinationType& value) { m_logDestinationTypeHasBeenSet = true; m_logDestinationType = value; } /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline void SetLogDestinationType(LogDestinationType&& value) { m_logDestinationTypeHasBeenSet = true; m_logDestinationType = std::move(value); } /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline LogDestinationConfig& WithLogDestinationType(const LogDestinationType& value) { SetLogDestinationType(value); return *this;} /** *

The type of storage destination to send these logs to. You can send logs to * an Amazon S3 bucket, a CloudWatch log group, or a Kinesis Data Firehose delivery * stream.

*/ inline LogDestinationConfig& WithLogDestinationType(LogDestinationType&& value) { SetLogDestinationType(std::move(value)); return *this;} /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline const Aws::Map& GetLogDestination() const{ return m_logDestination; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline bool LogDestinationHasBeenSet() const { return m_logDestinationHasBeenSet; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline void SetLogDestination(const Aws::Map& value) { m_logDestinationHasBeenSet = true; m_logDestination = value; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline void SetLogDestination(Aws::Map&& value) { m_logDestinationHasBeenSet = true; m_logDestination = std::move(value); } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& WithLogDestination(const Aws::Map& value) { SetLogDestination(value); return *this;} /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& WithLogDestination(Aws::Map&& value) { SetLogDestination(std::move(value)); return *this;} /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(const Aws::String& key, const Aws::String& value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(key, value); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(Aws::String&& key, const Aws::String& value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(std::move(key), value); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(const Aws::String& key, Aws::String&& value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(key, std::move(value)); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(Aws::String&& key, Aws::String&& value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(std::move(key), std::move(value)); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(const char* key, Aws::String&& value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(key, std::move(value)); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(Aws::String&& key, const char* value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(std::move(key), value); return *this; } /** *

The named location for the logs, provided in a key:value mapping that is * specific to the chosen destination type.

  • For an Amazon S3 * bucket, provide the name of the bucket, with key bucketName, and * optionally provide a prefix, with key prefix. The following example * specifies an Amazon S3 bucket named DOC-EXAMPLE-BUCKET and the * prefix alerts:

    "LogDestination": { "bucketName": * "DOC-EXAMPLE-BUCKET", "prefix": "alerts" }

  • For a * CloudWatch log group, provide the name of the CloudWatch log group, with key * logGroup. The following example specifies a log group named * alert-log-group:

    "LogDestination": { "logGroup": * "alert-log-group" }

  • For a Kinesis Data Firehose * delivery stream, provide the name of the delivery stream, with key * deliveryStream. The following example specifies a delivery stream * named alert-delivery-stream:

    "LogDestination": { * "deliveryStream": "alert-delivery-stream" }

*/ inline LogDestinationConfig& AddLogDestination(const char* key, const char* value) { m_logDestinationHasBeenSet = true; m_logDestination.emplace(key, value); return *this; } private: LogType m_logType; bool m_logTypeHasBeenSet = false; LogDestinationType m_logDestinationType; bool m_logDestinationTypeHasBeenSet = false; Aws::Map m_logDestination; bool m_logDestinationHasBeenSet = false; }; } // namespace Model } // namespace NetworkFirewall } // namespace Aws