/** * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved. * SPDX-License-Identifier: Apache-2.0. */ #pragma once #include #include #include #include #include #include #include #include #include #include namespace Aws { namespace EC2 { namespace Model { /** */ class CreateFlowLogsRequest : public EC2Request { public: AWS_EC2_API CreateFlowLogsRequest(); // Service request name is the Operation name which will send this request out, // each operation should has unique request name, so that we can get operation's name from this request. // Note: this is not true for response, multiple operations may have the same response name, // so we can not get operation's name from response. inline virtual const char* GetServiceRequestName() const override { return "CreateFlowLogs"; } AWS_EC2_API Aws::String SerializePayload() const override; protected: AWS_EC2_API void DumpBodyToUrl(Aws::Http::URI& uri ) const override; public: /** *

Checks whether you have the required permissions for the action, without * actually making the request, and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline bool GetDryRun() const{ return m_dryRun; } /** *

Checks whether you have the required permissions for the action, without * actually making the request, and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline bool DryRunHasBeenSet() const { return m_dryRunHasBeenSet; } /** *

Checks whether you have the required permissions for the action, without * actually making the request, and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline void SetDryRun(bool value) { m_dryRunHasBeenSet = true; m_dryRun = value; } /** *

Checks whether you have the required permissions for the action, without * actually making the request, and provides an error response. If you have the * required permissions, the error response is DryRunOperation. * Otherwise, it is UnauthorizedOperation.

*/ inline CreateFlowLogsRequest& WithDryRun(bool value) { SetDryRun(value); return *this;} /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline const Aws::String& GetClientToken() const{ return m_clientToken; } /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline bool ClientTokenHasBeenSet() const { return m_clientTokenHasBeenSet; } /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline void SetClientToken(const Aws::String& value) { m_clientTokenHasBeenSet = true; m_clientToken = value; } /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline void SetClientToken(Aws::String&& value) { m_clientTokenHasBeenSet = true; m_clientToken = std::move(value); } /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline void SetClientToken(const char* value) { m_clientTokenHasBeenSet = true; m_clientToken.assign(value); } /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline CreateFlowLogsRequest& WithClientToken(const Aws::String& value) { SetClientToken(value); return *this;} /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline CreateFlowLogsRequest& WithClientToken(Aws::String&& value) { SetClientToken(std::move(value)); return *this;} /** *

Unique, case-sensitive identifier that you provide to ensure the idempotency * of the request. For more information, see How * to ensure idempotency.

*/ inline CreateFlowLogsRequest& WithClientToken(const char* value) { SetClientToken(value); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline const Aws::String& GetDeliverLogsPermissionArn() const{ return m_deliverLogsPermissionArn; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline bool DeliverLogsPermissionArnHasBeenSet() const { return m_deliverLogsPermissionArnHasBeenSet; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline void SetDeliverLogsPermissionArn(const Aws::String& value) { m_deliverLogsPermissionArnHasBeenSet = true; m_deliverLogsPermissionArn = value; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline void SetDeliverLogsPermissionArn(Aws::String&& value) { m_deliverLogsPermissionArnHasBeenSet = true; m_deliverLogsPermissionArn = std::move(value); } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline void SetDeliverLogsPermissionArn(const char* value) { m_deliverLogsPermissionArnHasBeenSet = true; m_deliverLogsPermissionArn.assign(value); } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline CreateFlowLogsRequest& WithDeliverLogsPermissionArn(const Aws::String& value) { SetDeliverLogsPermissionArn(value); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline CreateFlowLogsRequest& WithDeliverLogsPermissionArn(Aws::String&& value) { SetDeliverLogsPermissionArn(std::move(value)); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs to a * CloudWatch Logs log group in your account.

This parameter is required if * the destination type is cloud-watch-logs and unsupported * otherwise.

*/ inline CreateFlowLogsRequest& WithDeliverLogsPermissionArn(const char* value) { SetDeliverLogsPermissionArn(value); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline const Aws::String& GetDeliverCrossAccountRole() const{ return m_deliverCrossAccountRole; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline bool DeliverCrossAccountRoleHasBeenSet() const { return m_deliverCrossAccountRoleHasBeenSet; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline void SetDeliverCrossAccountRole(const Aws::String& value) { m_deliverCrossAccountRoleHasBeenSet = true; m_deliverCrossAccountRole = value; } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline void SetDeliverCrossAccountRole(Aws::String&& value) { m_deliverCrossAccountRoleHasBeenSet = true; m_deliverCrossAccountRole = std::move(value); } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline void SetDeliverCrossAccountRole(const char* value) { m_deliverCrossAccountRoleHasBeenSet = true; m_deliverCrossAccountRole.assign(value); } /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline CreateFlowLogsRequest& WithDeliverCrossAccountRole(const Aws::String& value) { SetDeliverCrossAccountRole(value); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline CreateFlowLogsRequest& WithDeliverCrossAccountRole(Aws::String&& value) { SetDeliverCrossAccountRole(std::move(value)); return *this;} /** *

The ARN of the IAM role that allows Amazon EC2 to publish flow logs across * accounts.

*/ inline CreateFlowLogsRequest& WithDeliverCrossAccountRole(const char* value) { SetDeliverCrossAccountRole(value); return *this;} /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline const Aws::String& GetLogGroupName() const{ return m_logGroupName; } /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline bool LogGroupNameHasBeenSet() const { return m_logGroupNameHasBeenSet; } /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline void SetLogGroupName(const Aws::String& value) { m_logGroupNameHasBeenSet = true; m_logGroupName = value; } /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline void SetLogGroupName(Aws::String&& value) { m_logGroupNameHasBeenSet = true; m_logGroupName = std::move(value); } /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline void SetLogGroupName(const char* value) { m_logGroupNameHasBeenSet = true; m_logGroupName.assign(value); } /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline CreateFlowLogsRequest& WithLogGroupName(const Aws::String& value) { SetLogGroupName(value); return *this;} /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline CreateFlowLogsRequest& WithLogGroupName(Aws::String&& value) { SetLogGroupName(std::move(value)); return *this;} /** *

The name of a new or existing CloudWatch Logs log group where Amazon EC2 * publishes your flow logs.

This parameter is valid only if the destination * type is cloud-watch-logs.

*/ inline CreateFlowLogsRequest& WithLogGroupName(const char* value) { SetLogGroupName(value); return *this;} /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline const Aws::Vector& GetResourceIds() const{ return m_resourceIds; } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline bool ResourceIdsHasBeenSet() const { return m_resourceIdsHasBeenSet; } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline void SetResourceIds(const Aws::Vector& value) { m_resourceIdsHasBeenSet = true; m_resourceIds = value; } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline void SetResourceIds(Aws::Vector&& value) { m_resourceIdsHasBeenSet = true; m_resourceIds = std::move(value); } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline CreateFlowLogsRequest& WithResourceIds(const Aws::Vector& value) { SetResourceIds(value); return *this;} /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline CreateFlowLogsRequest& WithResourceIds(Aws::Vector&& value) { SetResourceIds(std::move(value)); return *this;} /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline CreateFlowLogsRequest& AddResourceIds(const Aws::String& value) { m_resourceIdsHasBeenSet = true; m_resourceIds.push_back(value); return *this; } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline CreateFlowLogsRequest& AddResourceIds(Aws::String&& value) { m_resourceIdsHasBeenSet = true; m_resourceIds.push_back(std::move(value)); return *this; } /** *

The IDs of the resources to monitor. For example, if the resource type is * VPC, specify the IDs of the VPCs.

Constraints: Maximum of 25 * for transit gateway resource types. Maximum of 1000 for the other resource * types.

*/ inline CreateFlowLogsRequest& AddResourceIds(const char* value) { m_resourceIdsHasBeenSet = true; m_resourceIds.push_back(value); return *this; } /** *

The type of resource to monitor.

*/ inline const FlowLogsResourceType& GetResourceType() const{ return m_resourceType; } /** *

The type of resource to monitor.

*/ inline bool ResourceTypeHasBeenSet() const { return m_resourceTypeHasBeenSet; } /** *

The type of resource to monitor.

*/ inline void SetResourceType(const FlowLogsResourceType& value) { m_resourceTypeHasBeenSet = true; m_resourceType = value; } /** *

The type of resource to monitor.

*/ inline void SetResourceType(FlowLogsResourceType&& value) { m_resourceTypeHasBeenSet = true; m_resourceType = std::move(value); } /** *

The type of resource to monitor.

*/ inline CreateFlowLogsRequest& WithResourceType(const FlowLogsResourceType& value) { SetResourceType(value); return *this;} /** *

The type of resource to monitor.

*/ inline CreateFlowLogsRequest& WithResourceType(FlowLogsResourceType&& value) { SetResourceType(std::move(value)); return *this;} /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline const TrafficType& GetTrafficType() const{ return m_trafficType; } /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline bool TrafficTypeHasBeenSet() const { return m_trafficTypeHasBeenSet; } /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline void SetTrafficType(const TrafficType& value) { m_trafficTypeHasBeenSet = true; m_trafficType = value; } /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline void SetTrafficType(TrafficType&& value) { m_trafficTypeHasBeenSet = true; m_trafficType = std::move(value); } /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline CreateFlowLogsRequest& WithTrafficType(const TrafficType& value) { SetTrafficType(value); return *this;} /** *

The type of traffic to monitor (accepted traffic, rejected traffic, or all * traffic). This parameter is not supported for transit gateway resource types. It * is required for the other resource types.

*/ inline CreateFlowLogsRequest& WithTrafficType(TrafficType&& value) { SetTrafficType(std::move(value)); return *this;} /** *

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The type of destination for the flow log data.

Default: * cloud-watch-logs

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

*/ inline void SetLogDestination(const char* value) { m_logDestinationHasBeenSet = true; m_logDestination.assign(value); } /** *

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

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

The destination for the flow log data. The meaning of this parameter depends * on the destination type.

  • If the destination type is * cloud-watch-logs, specify the ARN of a CloudWatch Logs log group. * For example:

    *

    arn:aws:logs:region:account_id:log-group:my_group

    *

    Alternatively, use the LogGroupName parameter.

  • *

    If the destination type is s3, specify the ARN of an S3 bucket. * For example:

    arn:aws:s3:::my_bucket/my_subfolder/

    *

    The subfolder is optional. Note that you can't use AWSLogs as a * subfolder name.

  • If the destination type is * kinesis-data-firehose, specify the ARN of a Kinesis Data Firehose * delivery stream. For example:

    *

    arn:aws:firehose:region:account_id:deliverystream:my_stream *

*/ inline CreateFlowLogsRequest& WithLogDestination(const char* value) { SetLogDestination(value); return *this;} /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline const Aws::String& GetLogFormat() const{ return m_logFormat; } /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline bool LogFormatHasBeenSet() const { return m_logFormatHasBeenSet; } /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline void SetLogFormat(const Aws::String& value) { m_logFormatHasBeenSet = true; m_logFormat = value; } /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline void SetLogFormat(Aws::String&& value) { m_logFormatHasBeenSet = true; m_logFormat = std::move(value); } /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline void SetLogFormat(const char* value) { m_logFormatHasBeenSet = true; m_logFormat.assign(value); } /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline CreateFlowLogsRequest& WithLogFormat(const Aws::String& value) { SetLogFormat(value); return *this;} /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline CreateFlowLogsRequest& WithLogFormat(Aws::String&& value) { SetLogFormat(std::move(value)); return *this;} /** *

The fields to include in the flow log record. List the fields in the order in * which they should appear. If you omit this parameter, the flow log is created * using the default format. If you specify this parameter, you must include at * least one field. For more information about the available fields, see Flow * log records in the Amazon VPC User Guide or Transit * Gateway Flow Log records in the Amazon Web Services Transit Gateway * Guide.

Specify the fields using the ${field-id} format, * separated by spaces. For the CLI, surround this parameter value with single * quotes on Linux or double quotes on Windows.

*/ inline CreateFlowLogsRequest& WithLogFormat(const char* value) { SetLogFormat(value); return *this;} /** *

The tags to apply to the flow logs.

*/ inline const Aws::Vector& GetTagSpecifications() const{ return m_tagSpecifications; } /** *

The tags to apply to the flow logs.

*/ inline bool TagSpecificationsHasBeenSet() const { return m_tagSpecificationsHasBeenSet; } /** *

The tags to apply to the flow logs.

*/ inline void SetTagSpecifications(const Aws::Vector& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = value; } /** *

The tags to apply to the flow logs.

*/ inline void SetTagSpecifications(Aws::Vector&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications = std::move(value); } /** *

The tags to apply to the flow logs.

*/ inline CreateFlowLogsRequest& WithTagSpecifications(const Aws::Vector& value) { SetTagSpecifications(value); return *this;} /** *

The tags to apply to the flow logs.

*/ inline CreateFlowLogsRequest& WithTagSpecifications(Aws::Vector&& value) { SetTagSpecifications(std::move(value)); return *this;} /** *

The tags to apply to the flow logs.

*/ inline CreateFlowLogsRequest& AddTagSpecifications(const TagSpecification& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(value); return *this; } /** *

The tags to apply to the flow logs.

*/ inline CreateFlowLogsRequest& AddTagSpecifications(TagSpecification&& value) { m_tagSpecificationsHasBeenSet = true; m_tagSpecifications.push_back(std::move(value)); return *this; } /** *

The maximum interval of time during which a flow of packets is captured and * aggregated into a flow log record. The possible values are 60 seconds (1 minute) * or 600 seconds (10 minutes). This parameter must be 60 seconds for transit * gateway resource types.

When a network interface is attached to a Nitro-based * instance, the aggregation interval is always 60 seconds or less, regardless * of the value that you specify.

Default: 600

*/ inline int GetMaxAggregationInterval() const{ return m_maxAggregationInterval; } /** *

The maximum interval of time during which a flow of packets is captured and * aggregated into a flow log record. The possible values are 60 seconds (1 minute) * or 600 seconds (10 minutes). This parameter must be 60 seconds for transit * gateway resource types.

When a network interface is attached to a Nitro-based * instance, the aggregation interval is always 60 seconds or less, regardless * of the value that you specify.

Default: 600

*/ inline bool MaxAggregationIntervalHasBeenSet() const { return m_maxAggregationIntervalHasBeenSet; } /** *

The maximum interval of time during which a flow of packets is captured and * aggregated into a flow log record. The possible values are 60 seconds (1 minute) * or 600 seconds (10 minutes). This parameter must be 60 seconds for transit * gateway resource types.

When a network interface is attached to a Nitro-based * instance, the aggregation interval is always 60 seconds or less, regardless * of the value that you specify.

Default: 600

*/ inline void SetMaxAggregationInterval(int value) { m_maxAggregationIntervalHasBeenSet = true; m_maxAggregationInterval = value; } /** *

The maximum interval of time during which a flow of packets is captured and * aggregated into a flow log record. The possible values are 60 seconds (1 minute) * or 600 seconds (10 minutes). This parameter must be 60 seconds for transit * gateway resource types.

When a network interface is attached to a Nitro-based * instance, the aggregation interval is always 60 seconds or less, regardless * of the value that you specify.

Default: 600

*/ inline CreateFlowLogsRequest& WithMaxAggregationInterval(int value) { SetMaxAggregationInterval(value); return *this;} /** *

The destination options.

*/ inline const DestinationOptionsRequest& GetDestinationOptions() const{ return m_destinationOptions; } /** *

The destination options.

*/ inline bool DestinationOptionsHasBeenSet() const { return m_destinationOptionsHasBeenSet; } /** *

The destination options.

*/ inline void SetDestinationOptions(const DestinationOptionsRequest& value) { m_destinationOptionsHasBeenSet = true; m_destinationOptions = value; } /** *

The destination options.

*/ inline void SetDestinationOptions(DestinationOptionsRequest&& value) { m_destinationOptionsHasBeenSet = true; m_destinationOptions = std::move(value); } /** *

The destination options.

*/ inline CreateFlowLogsRequest& WithDestinationOptions(const DestinationOptionsRequest& value) { SetDestinationOptions(value); return *this;} /** *

The destination options.

*/ inline CreateFlowLogsRequest& WithDestinationOptions(DestinationOptionsRequest&& value) { SetDestinationOptions(std::move(value)); return *this;} private: bool m_dryRun; bool m_dryRunHasBeenSet = false; Aws::String m_clientToken; bool m_clientTokenHasBeenSet = false; Aws::String m_deliverLogsPermissionArn; bool m_deliverLogsPermissionArnHasBeenSet = false; Aws::String m_deliverCrossAccountRole; bool m_deliverCrossAccountRoleHasBeenSet = false; Aws::String m_logGroupName; bool m_logGroupNameHasBeenSet = false; Aws::Vector m_resourceIds; bool m_resourceIdsHasBeenSet = false; FlowLogsResourceType m_resourceType; bool m_resourceTypeHasBeenSet = false; TrafficType m_trafficType; bool m_trafficTypeHasBeenSet = false; LogDestinationType m_logDestinationType; bool m_logDestinationTypeHasBeenSet = false; Aws::String m_logDestination; bool m_logDestinationHasBeenSet = false; Aws::String m_logFormat; bool m_logFormatHasBeenSet = false; Aws::Vector m_tagSpecifications; bool m_tagSpecificationsHasBeenSet = false; int m_maxAggregationInterval; bool m_maxAggregationIntervalHasBeenSet = false; DestinationOptionsRequest m_destinationOptions; bool m_destinationOptionsHasBeenSet = false; }; } // namespace Model } // namespace EC2 } // namespace Aws