/** * 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 NetworkFirewall { /** *

This is the API Reference for Network Firewall. This guide is for developers * who need detailed information about the Network Firewall API actions, data * types, and errors.

  • The REST API requires you to handle * connection details, such as calculating signatures, handling request retries, * and error handling. For general information about using the Amazon Web Services * REST APIs, see Amazon Web * Services APIs.

    To access Network Firewall using the REST API * endpoint: https://network-firewall.<region>.amazonaws.com *

  • Alternatively, you can use one of the Amazon Web Services * SDKs to access an API that's tailored to the programming language or platform * that you're using. For more information, see Amazon Web Services SDKs.

  • *
  • For descriptions of Network Firewall features, including and * step-by-step instructions on how to use them through the Network Firewall * console, see the Network * Firewall Developer Guide.

Network Firewall is a stateful, * managed, network firewall and intrusion detection and prevention service for * Amazon Virtual Private Cloud (Amazon VPC). With Network Firewall, you can filter * traffic at the perimeter of your VPC. This includes filtering traffic going to * and coming from an internet gateway, NAT gateway, or over VPN or Direct Connect. * Network Firewall uses rules that are compatible with Suricata, a free, open * source network analysis and threat detection engine. Network Firewall supports * Suricata version 6.0.9. For information about Suricata, see the Suricata website.

You can use Network * Firewall to monitor and protect your VPC traffic in a number of ways. The * following are just a few examples:

  • Allow domains or IP * addresses for known Amazon Web Services service endpoints, such as Amazon S3, * and block all other forms of traffic.

  • Use custom lists of * known bad domains to limit the types of domain names that your applications can * access.

  • Perform deep packet inspection on traffic entering or * leaving your VPC.

  • Use stateful protocol detection to filter * protocols like HTTPS, regardless of the port used.

To enable * Network Firewall for your VPCs, you perform steps in both Amazon VPC and in * Network Firewall. For information about using Amazon VPC, see Amazon VPC User * Guide.

To start using Network Firewall, do the following:

    *
  1. (Optional) If you don't already have a VPC that you want to protect, * create it in Amazon VPC.

  2. In Amazon VPC, in each Availability * Zone where you want to have a firewall endpoint, create a subnet for the sole * use of Network Firewall.

  3. In Network Firewall, create * stateless and stateful rule groups, to define the components of the network * traffic filtering behavior that you want your firewall to have.

  4. *

    In Network Firewall, create a firewall policy that uses your rule groups and * specifies additional default traffic filtering behavior.

  5. In * Network Firewall, create a firewall and specify your new firewall policy and VPC * subnets. Network Firewall creates a firewall endpoint in each subnet that you * specify, with the behavior that's defined in the firewall policy.

  6. *

    In Amazon VPC, use ingress routing enhancements to route traffic through the * new firewall endpoints.

*/ class AWS_NETWORKFIREWALL_API NetworkFirewallClient : public Aws::Client::AWSJsonClient, public Aws::Client::ClientWithAsyncTemplateMethods { public: typedef Aws::Client::AWSJsonClient BASECLASS; static const char* SERVICE_NAME; static const char* ALLOCATION_TAG; typedef NetworkFirewallClientConfiguration ClientConfigurationType; typedef NetworkFirewallEndpointProvider EndpointProviderType; /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ NetworkFirewallClient(const Aws::NetworkFirewall::NetworkFirewallClientConfiguration& clientConfiguration = Aws::NetworkFirewall::NetworkFirewallClientConfiguration(), std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG)); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ NetworkFirewallClient(const Aws::Auth::AWSCredentials& credentials, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::NetworkFirewall::NetworkFirewallClientConfiguration& clientConfiguration = Aws::NetworkFirewall::NetworkFirewallClientConfiguration()); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ NetworkFirewallClient(const std::shared_ptr& credentialsProvider, std::shared_ptr endpointProvider = Aws::MakeShared(ALLOCATION_TAG), const Aws::NetworkFirewall::NetworkFirewallClientConfiguration& clientConfiguration = Aws::NetworkFirewall::NetworkFirewallClientConfiguration()); /* Legacy constructors due deprecation */ /** * Initializes client to use DefaultCredentialProviderChain, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ NetworkFirewallClient(const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use SimpleAWSCredentialsProvider, with default http client factory, and optional client config. If client config * is not specified, it will be initialized to default values. */ NetworkFirewallClient(const Aws::Auth::AWSCredentials& credentials, const Aws::Client::ClientConfiguration& clientConfiguration); /** * Initializes client to use specified credentials provider with specified client config. If http client factory is not supplied, * the default http client factory will be used */ NetworkFirewallClient(const std::shared_ptr& credentialsProvider, const Aws::Client::ClientConfiguration& clientConfiguration); /* End of legacy constructors due deprecation */ virtual ~NetworkFirewallClient(); /** *

Associates a FirewallPolicy to a Firewall.

A firewall * policy defines how to monitor and manage your VPC network traffic, using a * collection of inspection rule groups and other settings. Each firewall requires * one firewall policy association, and you can use the same firewall policy for * multiple firewalls.

See Also:

AWS * API Reference

*/ virtual Model::AssociateFirewallPolicyOutcome AssociateFirewallPolicy(const Model::AssociateFirewallPolicyRequest& request) const; /** * A Callable wrapper for AssociateFirewallPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AssociateFirewallPolicyOutcomeCallable AssociateFirewallPolicyCallable(const AssociateFirewallPolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::AssociateFirewallPolicy, request); } /** * An Async wrapper for AssociateFirewallPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AssociateFirewallPolicyAsync(const AssociateFirewallPolicyRequestT& request, const AssociateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::AssociateFirewallPolicy, request, handler, context); } /** *

Associates the specified subnets in the Amazon VPC to the firewall. You can * specify one subnet for each of the Availability Zones that the VPC spans.

*

This request creates an Network Firewall firewall endpoint in each of the * subnets. To enable the firewall's protections, you must also modify the VPC's * route tables for each subnet's Availability Zone, to redirect the traffic that's * coming into and going out of the zone through the firewall endpoint. *

See Also:

AWS * API Reference

*/ virtual Model::AssociateSubnetsOutcome AssociateSubnets(const Model::AssociateSubnetsRequest& request) const; /** * A Callable wrapper for AssociateSubnets that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::AssociateSubnetsOutcomeCallable AssociateSubnetsCallable(const AssociateSubnetsRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::AssociateSubnets, request); } /** * An Async wrapper for AssociateSubnets that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void AssociateSubnetsAsync(const AssociateSubnetsRequestT& request, const AssociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::AssociateSubnets, request, handler, context); } /** *

Creates an Network Firewall Firewall and accompanying * FirewallStatus for a VPC.

The firewall defines the configuration * settings for an Network Firewall firewall. The settings that you can define at * creation include the firewall policy, the subnets in your VPC to use for the * firewall endpoints, and any tags that are attached to the firewall Amazon Web * Services resource.

After you create a firewall, you can provide * additional settings, like the logging configuration.

To update the * settings for a firewall, you use the operations that apply to the settings * themselves, for example UpdateLoggingConfiguration, * AssociateSubnets, and UpdateFirewallDeleteProtection.

To * manage a firewall's tags, use the standard Amazon Web Services resource tagging * operations, ListTagsForResource, TagResource, and * UntagResource.

To retrieve information about firewalls, use * ListFirewalls and DescribeFirewall.

See Also:

AWS * API Reference

*/ virtual Model::CreateFirewallOutcome CreateFirewall(const Model::CreateFirewallRequest& request) const; /** * A Callable wrapper for CreateFirewall that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateFirewallOutcomeCallable CreateFirewallCallable(const CreateFirewallRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::CreateFirewall, request); } /** * An Async wrapper for CreateFirewall that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateFirewallAsync(const CreateFirewallRequestT& request, const CreateFirewallResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::CreateFirewall, request, handler, context); } /** *

Creates the firewall policy for the firewall according to the specifications. *

An Network Firewall firewall policy defines the behavior of a firewall, * in a collection of stateless and stateful rule groups and other settings. You * can use one firewall policy for multiple firewalls.

See Also:

* AWS * API Reference

*/ virtual Model::CreateFirewallPolicyOutcome CreateFirewallPolicy(const Model::CreateFirewallPolicyRequest& request) const; /** * A Callable wrapper for CreateFirewallPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateFirewallPolicyOutcomeCallable CreateFirewallPolicyCallable(const CreateFirewallPolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::CreateFirewallPolicy, request); } /** * An Async wrapper for CreateFirewallPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateFirewallPolicyAsync(const CreateFirewallPolicyRequestT& request, const CreateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::CreateFirewallPolicy, request, handler, context); } /** *

Creates the specified stateless or stateful rule group, which includes the * rules for network traffic inspection, a capacity setting, and tags.

You * provide your rule group specification in your request using either * RuleGroup or Rules.

See Also:

AWS * API Reference

*/ virtual Model::CreateRuleGroupOutcome CreateRuleGroup(const Model::CreateRuleGroupRequest& request) const; /** * A Callable wrapper for CreateRuleGroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateRuleGroupOutcomeCallable CreateRuleGroupCallable(const CreateRuleGroupRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::CreateRuleGroup, request); } /** * An Async wrapper for CreateRuleGroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateRuleGroupAsync(const CreateRuleGroupRequestT& request, const CreateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::CreateRuleGroup, request, handler, context); } /** *

Creates an Network Firewall TLS inspection configuration. A TLS inspection * configuration contains the Certificate Manager certificate references that * Network Firewall uses to decrypt and re-encrypt inbound traffic.

After * you create a TLS inspection configuration, you associate it with a firewall * policy.

To update the settings for a TLS inspection configuration, use * UpdateTLSInspectionConfiguration.

To manage a TLS inspection * configuration's tags, use the standard Amazon Web Services resource tagging * operations, ListTagsForResource, TagResource, and * UntagResource.

To retrieve information about TLS inspection * configurations, use ListTLSInspectionConfigurations and * DescribeTLSInspectionConfiguration.

For more information about * TLS inspection configurations, see Decrypting * SSL/TLS traffic with TLS inspection configurations in the Network * Firewall Developer Guide.

See Also:

AWS * API Reference

*/ virtual Model::CreateTLSInspectionConfigurationOutcome CreateTLSInspectionConfiguration(const Model::CreateTLSInspectionConfigurationRequest& request) const; /** * A Callable wrapper for CreateTLSInspectionConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::CreateTLSInspectionConfigurationOutcomeCallable CreateTLSInspectionConfigurationCallable(const CreateTLSInspectionConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::CreateTLSInspectionConfiguration, request); } /** * An Async wrapper for CreateTLSInspectionConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void CreateTLSInspectionConfigurationAsync(const CreateTLSInspectionConfigurationRequestT& request, const CreateTLSInspectionConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::CreateTLSInspectionConfiguration, request, handler, context); } /** *

Deletes the specified Firewall and its FirewallStatus. This * operation requires the firewall's DeleteProtection flag to be * FALSE. You can't revert this operation.

You can check * whether a firewall is in use by reviewing the route tables for the Availability * Zones where you have firewall subnet mappings. Retrieve the subnet mappings by * calling DescribeFirewall. You define and update the route tables through * Amazon VPC. As needed, update the route tables for the zones to remove the * firewall endpoints. When the route tables no longer use the firewall endpoints, * you can remove the firewall safely.

To delete a firewall, remove the * delete protection if you need to using UpdateFirewallDeleteProtection, * then delete the firewall by calling DeleteFirewall.

See * Also:

AWS * API Reference

*/ virtual Model::DeleteFirewallOutcome DeleteFirewall(const Model::DeleteFirewallRequest& request) const; /** * A Callable wrapper for DeleteFirewall that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteFirewallOutcomeCallable DeleteFirewallCallable(const DeleteFirewallRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DeleteFirewall, request); } /** * An Async wrapper for DeleteFirewall that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteFirewallAsync(const DeleteFirewallRequestT& request, const DeleteFirewallResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DeleteFirewall, request, handler, context); } /** *

Deletes the specified FirewallPolicy.

See Also:

AWS * API Reference

*/ virtual Model::DeleteFirewallPolicyOutcome DeleteFirewallPolicy(const Model::DeleteFirewallPolicyRequest& request) const; /** * A Callable wrapper for DeleteFirewallPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteFirewallPolicyOutcomeCallable DeleteFirewallPolicyCallable(const DeleteFirewallPolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DeleteFirewallPolicy, request); } /** * An Async wrapper for DeleteFirewallPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteFirewallPolicyAsync(const DeleteFirewallPolicyRequestT& request, const DeleteFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DeleteFirewallPolicy, request, handler, context); } /** *

Deletes a resource policy that you created in a PutResourcePolicy * request.

See Also:

AWS * API Reference

*/ virtual Model::DeleteResourcePolicyOutcome DeleteResourcePolicy(const Model::DeleteResourcePolicyRequest& request) const; /** * A Callable wrapper for DeleteResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteResourcePolicyOutcomeCallable DeleteResourcePolicyCallable(const DeleteResourcePolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DeleteResourcePolicy, request); } /** * An Async wrapper for DeleteResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteResourcePolicyAsync(const DeleteResourcePolicyRequestT& request, const DeleteResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DeleteResourcePolicy, request, handler, context); } /** *

Deletes the specified RuleGroup.

See Also:

AWS * API Reference

*/ virtual Model::DeleteRuleGroupOutcome DeleteRuleGroup(const Model::DeleteRuleGroupRequest& request) const; /** * A Callable wrapper for DeleteRuleGroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteRuleGroupOutcomeCallable DeleteRuleGroupCallable(const DeleteRuleGroupRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DeleteRuleGroup, request); } /** * An Async wrapper for DeleteRuleGroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteRuleGroupAsync(const DeleteRuleGroupRequestT& request, const DeleteRuleGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DeleteRuleGroup, request, handler, context); } /** *

Deletes the specified TLSInspectionConfiguration.

See * Also:

AWS * API Reference

*/ virtual Model::DeleteTLSInspectionConfigurationOutcome DeleteTLSInspectionConfiguration(const Model::DeleteTLSInspectionConfigurationRequest& request) const; /** * A Callable wrapper for DeleteTLSInspectionConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DeleteTLSInspectionConfigurationOutcomeCallable DeleteTLSInspectionConfigurationCallable(const DeleteTLSInspectionConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DeleteTLSInspectionConfiguration, request); } /** * An Async wrapper for DeleteTLSInspectionConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DeleteTLSInspectionConfigurationAsync(const DeleteTLSInspectionConfigurationRequestT& request, const DeleteTLSInspectionConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DeleteTLSInspectionConfiguration, request, handler, context); } /** *

Returns the data objects for the specified firewall.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeFirewallOutcome DescribeFirewall(const Model::DescribeFirewallRequest& request) const; /** * A Callable wrapper for DescribeFirewall that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeFirewallOutcomeCallable DescribeFirewallCallable(const DescribeFirewallRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeFirewall, request); } /** * An Async wrapper for DescribeFirewall that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeFirewallAsync(const DescribeFirewallRequestT& request, const DescribeFirewallResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeFirewall, request, handler, context); } /** *

Returns the data objects for the specified firewall policy.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeFirewallPolicyOutcome DescribeFirewallPolicy(const Model::DescribeFirewallPolicyRequest& request) const; /** * A Callable wrapper for DescribeFirewallPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeFirewallPolicyOutcomeCallable DescribeFirewallPolicyCallable(const DescribeFirewallPolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeFirewallPolicy, request); } /** * An Async wrapper for DescribeFirewallPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeFirewallPolicyAsync(const DescribeFirewallPolicyRequestT& request, const DescribeFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeFirewallPolicy, request, handler, context); } /** *

Returns the logging configuration for the specified firewall.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeLoggingConfigurationOutcome DescribeLoggingConfiguration(const Model::DescribeLoggingConfigurationRequest& request) const; /** * A Callable wrapper for DescribeLoggingConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeLoggingConfigurationOutcomeCallable DescribeLoggingConfigurationCallable(const DescribeLoggingConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeLoggingConfiguration, request); } /** * An Async wrapper for DescribeLoggingConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeLoggingConfigurationAsync(const DescribeLoggingConfigurationRequestT& request, const DescribeLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeLoggingConfiguration, request, handler, context); } /** *

Retrieves a resource policy that you created in a PutResourcePolicy * request.

See Also:

AWS * API Reference

*/ virtual Model::DescribeResourcePolicyOutcome DescribeResourcePolicy(const Model::DescribeResourcePolicyRequest& request) const; /** * A Callable wrapper for DescribeResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeResourcePolicyOutcomeCallable DescribeResourcePolicyCallable(const DescribeResourcePolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeResourcePolicy, request); } /** * An Async wrapper for DescribeResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeResourcePolicyAsync(const DescribeResourcePolicyRequestT& request, const DescribeResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeResourcePolicy, request, handler, context); } /** *

Returns the data objects for the specified rule group.

See * Also:

AWS * API Reference

*/ virtual Model::DescribeRuleGroupOutcome DescribeRuleGroup(const Model::DescribeRuleGroupRequest& request) const; /** * A Callable wrapper for DescribeRuleGroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeRuleGroupOutcomeCallable DescribeRuleGroupCallable(const DescribeRuleGroupRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeRuleGroup, request); } /** * An Async wrapper for DescribeRuleGroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeRuleGroupAsync(const DescribeRuleGroupRequestT& request, const DescribeRuleGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeRuleGroup, request, handler, context); } /** *

High-level information about a rule group, returned by operations like create * and describe. You can use the information provided in the metadata to retrieve * and manage a rule group. You can retrieve all objects for a rule group by * calling DescribeRuleGroup.

See Also:

AWS * API Reference

*/ virtual Model::DescribeRuleGroupMetadataOutcome DescribeRuleGroupMetadata(const Model::DescribeRuleGroupMetadataRequest& request) const; /** * A Callable wrapper for DescribeRuleGroupMetadata that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeRuleGroupMetadataOutcomeCallable DescribeRuleGroupMetadataCallable(const DescribeRuleGroupMetadataRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeRuleGroupMetadata, request); } /** * An Async wrapper for DescribeRuleGroupMetadata that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeRuleGroupMetadataAsync(const DescribeRuleGroupMetadataRequestT& request, const DescribeRuleGroupMetadataResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeRuleGroupMetadata, request, handler, context); } /** *

Returns the data objects for the specified TLS inspection * configuration.

See Also:

AWS * API Reference

*/ virtual Model::DescribeTLSInspectionConfigurationOutcome DescribeTLSInspectionConfiguration(const Model::DescribeTLSInspectionConfigurationRequest& request) const; /** * A Callable wrapper for DescribeTLSInspectionConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DescribeTLSInspectionConfigurationOutcomeCallable DescribeTLSInspectionConfigurationCallable(const DescribeTLSInspectionConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DescribeTLSInspectionConfiguration, request); } /** * An Async wrapper for DescribeTLSInspectionConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DescribeTLSInspectionConfigurationAsync(const DescribeTLSInspectionConfigurationRequestT& request, const DescribeTLSInspectionConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DescribeTLSInspectionConfiguration, request, handler, context); } /** *

Removes the specified subnet associations from the firewall. This removes the * firewall endpoints from the subnets and removes any network filtering * protections that the endpoints were providing.

See Also:

AWS * API Reference

*/ virtual Model::DisassociateSubnetsOutcome DisassociateSubnets(const Model::DisassociateSubnetsRequest& request) const; /** * A Callable wrapper for DisassociateSubnets that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::DisassociateSubnetsOutcomeCallable DisassociateSubnetsCallable(const DisassociateSubnetsRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::DisassociateSubnets, request); } /** * An Async wrapper for DisassociateSubnets that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void DisassociateSubnetsAsync(const DisassociateSubnetsRequestT& request, const DisassociateSubnetsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::DisassociateSubnets, request, handler, context); } /** *

Retrieves the metadata for the firewall policies that you have defined. * Depending on your setting for max results and the number of firewall policies, a * single call might not return the full list.

See Also:

AWS * API Reference

*/ virtual Model::ListFirewallPoliciesOutcome ListFirewallPolicies(const Model::ListFirewallPoliciesRequest& request) const; /** * A Callable wrapper for ListFirewallPolicies that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListFirewallPoliciesOutcomeCallable ListFirewallPoliciesCallable(const ListFirewallPoliciesRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::ListFirewallPolicies, request); } /** * An Async wrapper for ListFirewallPolicies that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListFirewallPoliciesAsync(const ListFirewallPoliciesRequestT& request, const ListFirewallPoliciesResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::ListFirewallPolicies, request, handler, context); } /** *

Retrieves the metadata for the firewalls that you have defined. If you * provide VPC identifiers in your request, this returns only the firewalls for * those VPCs.

Depending on your setting for max results and the number of * firewalls, a single call might not return the full list.

See * Also:

AWS * API Reference

*/ virtual Model::ListFirewallsOutcome ListFirewalls(const Model::ListFirewallsRequest& request) const; /** * A Callable wrapper for ListFirewalls that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListFirewallsOutcomeCallable ListFirewallsCallable(const ListFirewallsRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::ListFirewalls, request); } /** * An Async wrapper for ListFirewalls that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListFirewallsAsync(const ListFirewallsRequestT& request, const ListFirewallsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::ListFirewalls, request, handler, context); } /** *

Retrieves the metadata for the rule groups that you have defined. Depending * on your setting for max results and the number of rule groups, a single call * might not return the full list.

See Also:

AWS * API Reference

*/ virtual Model::ListRuleGroupsOutcome ListRuleGroups(const Model::ListRuleGroupsRequest& request) const; /** * A Callable wrapper for ListRuleGroups that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListRuleGroupsOutcomeCallable ListRuleGroupsCallable(const ListRuleGroupsRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::ListRuleGroups, request); } /** * An Async wrapper for ListRuleGroups that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListRuleGroupsAsync(const ListRuleGroupsRequestT& request, const ListRuleGroupsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::ListRuleGroups, request, handler, context); } /** *

Retrieves the metadata for the TLS inspection configurations that you have * defined. Depending on your setting for max results and the number of TLS * inspection configurations, a single call might not return the full * list.

See Also:

AWS * API Reference

*/ virtual Model::ListTLSInspectionConfigurationsOutcome ListTLSInspectionConfigurations(const Model::ListTLSInspectionConfigurationsRequest& request) const; /** * A Callable wrapper for ListTLSInspectionConfigurations that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTLSInspectionConfigurationsOutcomeCallable ListTLSInspectionConfigurationsCallable(const ListTLSInspectionConfigurationsRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::ListTLSInspectionConfigurations, request); } /** * An Async wrapper for ListTLSInspectionConfigurations that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTLSInspectionConfigurationsAsync(const ListTLSInspectionConfigurationsRequestT& request, const ListTLSInspectionConfigurationsResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::ListTLSInspectionConfigurations, request, handler, context); } /** *

Retrieves the tags associated with the specified resource. Tags are key:value * pairs that you can use to categorize and manage your resources, for purposes * like billing. For example, you might set the tag key to "customer" and the value * to the customer name or ID. You can specify one or more tags to add to each * Amazon Web Services resource, up to 50 tags for a resource.

You can tag * the Amazon Web Services resources that you manage through Network Firewall: * firewalls, firewall policies, and rule groups.

See Also:

AWS * API Reference

*/ virtual Model::ListTagsForResourceOutcome ListTagsForResource(const Model::ListTagsForResourceRequest& request) const; /** * A Callable wrapper for ListTagsForResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::ListTagsForResourceOutcomeCallable ListTagsForResourceCallable(const ListTagsForResourceRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::ListTagsForResource, request); } /** * An Async wrapper for ListTagsForResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void ListTagsForResourceAsync(const ListTagsForResourceRequestT& request, const ListTagsForResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::ListTagsForResource, request, handler, context); } /** *

Creates or updates an IAM policy for your rule group or firewall policy. Use * this to share rule groups and firewall policies between accounts. This operation * works in conjunction with the Amazon Web Services Resource Access Manager (RAM) * service to manage resource sharing for Network Firewall.

Use this * operation to create or update a resource policy for your rule group or firewall * policy. In the policy, you specify the accounts that you want to share the * resource with and the operations that you want the accounts to be able to * perform.

When you add an account in the resource policy, you then run * the following Resource Access Manager (RAM) operations to access and accept the * shared rule group or firewall policy.

*

For additional information about resource sharing using RAM, see Resource * Access Manager User Guide.

See Also:

AWS * API Reference

*/ virtual Model::PutResourcePolicyOutcome PutResourcePolicy(const Model::PutResourcePolicyRequest& request) const; /** * A Callable wrapper for PutResourcePolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::PutResourcePolicyOutcomeCallable PutResourcePolicyCallable(const PutResourcePolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::PutResourcePolicy, request); } /** * An Async wrapper for PutResourcePolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void PutResourcePolicyAsync(const PutResourcePolicyRequestT& request, const PutResourcePolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::PutResourcePolicy, request, handler, context); } /** *

Adds the specified tags to the specified resource. Tags are key:value pairs * that you can use to categorize and manage your resources, for purposes like * billing. For example, you might set the tag key to "customer" and the value to * the customer name or ID. You can specify one or more tags to add to each Amazon * Web Services resource, up to 50 tags for a resource.

You can tag the * Amazon Web Services resources that you manage through Network Firewall: * firewalls, firewall policies, and rule groups.

See Also:

AWS * API Reference

*/ virtual Model::TagResourceOutcome TagResource(const Model::TagResourceRequest& request) const; /** * A Callable wrapper for TagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::TagResourceOutcomeCallable TagResourceCallable(const TagResourceRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::TagResource, request); } /** * An Async wrapper for TagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void TagResourceAsync(const TagResourceRequestT& request, const TagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::TagResource, request, handler, context); } /** *

Removes the tags with the specified keys from the specified resource. Tags * are key:value pairs that you can use to categorize and manage your resources, * for purposes like billing. For example, you might set the tag key to "customer" * and the value to the customer name or ID. You can specify one or more tags to * add to each Amazon Web Services resource, up to 50 tags for a resource.

*

You can manage tags for the Amazon Web Services resources that you manage * through Network Firewall: firewalls, firewall policies, and rule groups. *

See Also:

AWS * API Reference

*/ virtual Model::UntagResourceOutcome UntagResource(const Model::UntagResourceRequest& request) const; /** * A Callable wrapper for UntagResource that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UntagResourceOutcomeCallable UntagResourceCallable(const UntagResourceRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UntagResource, request); } /** * An Async wrapper for UntagResource that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UntagResourceAsync(const UntagResourceRequestT& request, const UntagResourceResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UntagResource, request, handler, context); } /** *

Modifies the flag, DeleteProtection, which indicates whether it * is possible to delete the firewall. If the flag is set to TRUE, the * firewall is protected against deletion. This setting helps protect against * accidentally deleting a firewall that's in use.

See Also:

AWS * API Reference

*/ virtual Model::UpdateFirewallDeleteProtectionOutcome UpdateFirewallDeleteProtection(const Model::UpdateFirewallDeleteProtectionRequest& request) const; /** * A Callable wrapper for UpdateFirewallDeleteProtection that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFirewallDeleteProtectionOutcomeCallable UpdateFirewallDeleteProtectionCallable(const UpdateFirewallDeleteProtectionRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateFirewallDeleteProtection, request); } /** * An Async wrapper for UpdateFirewallDeleteProtection that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFirewallDeleteProtectionAsync(const UpdateFirewallDeleteProtectionRequestT& request, const UpdateFirewallDeleteProtectionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateFirewallDeleteProtection, request, handler, context); } /** *

Modifies the description for the specified firewall. Use the description to * help you identify the firewall when you're working with it.

See * Also:

AWS * API Reference

*/ virtual Model::UpdateFirewallDescriptionOutcome UpdateFirewallDescription(const Model::UpdateFirewallDescriptionRequest& request) const; /** * A Callable wrapper for UpdateFirewallDescription that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFirewallDescriptionOutcomeCallable UpdateFirewallDescriptionCallable(const UpdateFirewallDescriptionRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateFirewallDescription, request); } /** * An Async wrapper for UpdateFirewallDescription that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFirewallDescriptionAsync(const UpdateFirewallDescriptionRequestT& request, const UpdateFirewallDescriptionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateFirewallDescription, request, handler, context); } /** *

A complex type that contains settings for encryption of your firewall * resources.

See Also:

AWS * API Reference

*/ virtual Model::UpdateFirewallEncryptionConfigurationOutcome UpdateFirewallEncryptionConfiguration(const Model::UpdateFirewallEncryptionConfigurationRequest& request) const; /** * A Callable wrapper for UpdateFirewallEncryptionConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFirewallEncryptionConfigurationOutcomeCallable UpdateFirewallEncryptionConfigurationCallable(const UpdateFirewallEncryptionConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateFirewallEncryptionConfiguration, request); } /** * An Async wrapper for UpdateFirewallEncryptionConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFirewallEncryptionConfigurationAsync(const UpdateFirewallEncryptionConfigurationRequestT& request, const UpdateFirewallEncryptionConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateFirewallEncryptionConfiguration, request, handler, context); } /** *

Updates the properties of the specified firewall policy.

See * Also:

AWS * API Reference

*/ virtual Model::UpdateFirewallPolicyOutcome UpdateFirewallPolicy(const Model::UpdateFirewallPolicyRequest& request) const; /** * A Callable wrapper for UpdateFirewallPolicy that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFirewallPolicyOutcomeCallable UpdateFirewallPolicyCallable(const UpdateFirewallPolicyRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateFirewallPolicy, request); } /** * An Async wrapper for UpdateFirewallPolicy that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFirewallPolicyAsync(const UpdateFirewallPolicyRequestT& request, const UpdateFirewallPolicyResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateFirewallPolicy, request, handler, context); } /** *

Modifies the flag, ChangeProtection, which indicates whether it * is possible to change the firewall. If the flag is set to TRUE, the * firewall is protected from changes. This setting helps protect against * accidentally changing a firewall that's in use.

See Also:

AWS * API Reference

*/ virtual Model::UpdateFirewallPolicyChangeProtectionOutcome UpdateFirewallPolicyChangeProtection(const Model::UpdateFirewallPolicyChangeProtectionRequest& request) const; /** * A Callable wrapper for UpdateFirewallPolicyChangeProtection that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateFirewallPolicyChangeProtectionOutcomeCallable UpdateFirewallPolicyChangeProtectionCallable(const UpdateFirewallPolicyChangeProtectionRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateFirewallPolicyChangeProtection, request); } /** * An Async wrapper for UpdateFirewallPolicyChangeProtection that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateFirewallPolicyChangeProtectionAsync(const UpdateFirewallPolicyChangeProtectionRequestT& request, const UpdateFirewallPolicyChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateFirewallPolicyChangeProtection, request, handler, context); } /** *

Sets the logging configuration for the specified firewall.

To change * the logging configuration, retrieve the LoggingConfiguration by calling * DescribeLoggingConfiguration, then change it and provide the modified * object to this update call. You must change the logging configuration one * LogDestinationConfig at a time inside the retrieved * LoggingConfiguration object.

You can perform only one of the * following actions in any call to UpdateLoggingConfiguration:

*
  • Create a new log destination object by adding a single * LogDestinationConfig array element to * LogDestinationConfigs.

  • Delete a log destination * object by removing a single LogDestinationConfig array element from * LogDestinationConfigs.

  • Change the * LogDestination setting in a single * LogDestinationConfig array element.

You can't * change the LogDestinationType or LogType in a * LogDestinationConfig. To change these settings, delete the existing * LogDestinationConfig object and create a new one, using two * separate calls to this update operation.

See Also:

AWS * API Reference

*/ virtual Model::UpdateLoggingConfigurationOutcome UpdateLoggingConfiguration(const Model::UpdateLoggingConfigurationRequest& request) const; /** * A Callable wrapper for UpdateLoggingConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateLoggingConfigurationOutcomeCallable UpdateLoggingConfigurationCallable(const UpdateLoggingConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateLoggingConfiguration, request); } /** * An Async wrapper for UpdateLoggingConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateLoggingConfigurationAsync(const UpdateLoggingConfigurationRequestT& request, const UpdateLoggingConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateLoggingConfiguration, request, handler, context); } /** *

Updates the rule settings for the specified rule group. You use a rule group * by reference in one or more firewall policies. When you modify a rule group, you * modify all firewall policies that use the rule group.

To update a rule * group, first call DescribeRuleGroup to retrieve the current * RuleGroup object, update the object as needed, and then provide the * updated object to this call.

See Also:

AWS * API Reference

*/ virtual Model::UpdateRuleGroupOutcome UpdateRuleGroup(const Model::UpdateRuleGroupRequest& request) const; /** * A Callable wrapper for UpdateRuleGroup that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateRuleGroupOutcomeCallable UpdateRuleGroupCallable(const UpdateRuleGroupRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateRuleGroup, request); } /** * An Async wrapper for UpdateRuleGroup that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateRuleGroupAsync(const UpdateRuleGroupRequestT& request, const UpdateRuleGroupResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateRuleGroup, request, handler, context); } /** *

See Also:

AWS * API Reference

*/ virtual Model::UpdateSubnetChangeProtectionOutcome UpdateSubnetChangeProtection(const Model::UpdateSubnetChangeProtectionRequest& request) const; /** * A Callable wrapper for UpdateSubnetChangeProtection that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateSubnetChangeProtectionOutcomeCallable UpdateSubnetChangeProtectionCallable(const UpdateSubnetChangeProtectionRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateSubnetChangeProtection, request); } /** * An Async wrapper for UpdateSubnetChangeProtection that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateSubnetChangeProtectionAsync(const UpdateSubnetChangeProtectionRequestT& request, const UpdateSubnetChangeProtectionResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateSubnetChangeProtection, request, handler, context); } /** *

Updates the TLS inspection configuration settings for the specified TLS * inspection configuration. You use a TLS inspection configuration by reference in * one or more firewall policies. When you modify a TLS inspection configuration, * you modify all firewall policies that use the TLS inspection configuration.

*

To update a TLS inspection configuration, first call * DescribeTLSInspectionConfiguration to retrieve the current * TLSInspectionConfiguration object, update the object as needed, and then * provide the updated object to this call.

See Also:

AWS * API Reference

*/ virtual Model::UpdateTLSInspectionConfigurationOutcome UpdateTLSInspectionConfiguration(const Model::UpdateTLSInspectionConfigurationRequest& request) const; /** * A Callable wrapper for UpdateTLSInspectionConfiguration that returns a future to the operation so that it can be executed in parallel to other requests. */ template Model::UpdateTLSInspectionConfigurationOutcomeCallable UpdateTLSInspectionConfigurationCallable(const UpdateTLSInspectionConfigurationRequestT& request) const { return SubmitCallable(&NetworkFirewallClient::UpdateTLSInspectionConfiguration, request); } /** * An Async wrapper for UpdateTLSInspectionConfiguration that queues the request into a thread executor and triggers associated callback when operation has finished. */ template void UpdateTLSInspectionConfigurationAsync(const UpdateTLSInspectionConfigurationRequestT& request, const UpdateTLSInspectionConfigurationResponseReceivedHandler& handler, const std::shared_ptr& context = nullptr) const { return SubmitAsync(&NetworkFirewallClient::UpdateTLSInspectionConfiguration, request, handler, context); } void OverrideEndpoint(const Aws::String& endpoint); std::shared_ptr& accessEndpointProvider(); private: friend class Aws::Client::ClientWithAsyncTemplateMethods; void init(const NetworkFirewallClientConfiguration& clientConfiguration); NetworkFirewallClientConfiguration m_clientConfiguration; std::shared_ptr m_executor; std::shared_ptr m_endpointProvider; }; } // namespace NetworkFirewall } // namespace Aws