aws-sdk-networkfirewall 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 10d0c844d46790bd9ce44a92d866beca5a6047a1792eae2bdb472951c8bc89f3
4
+ data.tar.gz: 1871ff8f9ba16e9599235f719aa7849f0e0a3c10b72cede7768cae2916367cf8
5
+ SHA512:
6
+ metadata.gz: cd52d3567211669fe65b0f37d61ecabb5a5f168ff2a2765e90848ee25ca8c21d3118ee4d957e3e86512973422b0e9c04f015fa06765ffc8a8f3589c484ac0a90
7
+ data.tar.gz: 3892d7f77ef73e88990f6fdb3b80990c28f88f1cf278801afee9ffebe68f707644185b5184225fe966ef668428bbec0a1422a2e978d4e4227ea8fc4b049bfd3f
@@ -0,0 +1,53 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+
11
+ require 'aws-sdk-core'
12
+ require 'aws-sigv4'
13
+
14
+ require_relative 'aws-sdk-networkfirewall/types'
15
+ require_relative 'aws-sdk-networkfirewall/client_api'
16
+ require_relative 'aws-sdk-networkfirewall/client'
17
+ require_relative 'aws-sdk-networkfirewall/errors'
18
+ require_relative 'aws-sdk-networkfirewall/resource'
19
+ require_relative 'aws-sdk-networkfirewall/customizations'
20
+
21
+ # This module provides support for AWS Network Firewall. This module is available in the
22
+ # `aws-sdk-networkfirewall` gem.
23
+ #
24
+ # # Client
25
+ #
26
+ # The {Client} class provides one method for each API operation. Operation
27
+ # methods each accept a hash of request parameters and return a response
28
+ # structure.
29
+ #
30
+ # network_firewall = Aws::NetworkFirewall::Client.new
31
+ # resp = network_firewall.associate_firewall_policy(params)
32
+ #
33
+ # See {Client} for more information.
34
+ #
35
+ # # Errors
36
+ #
37
+ # Errors returned from AWS Network Firewall are defined in the
38
+ # {Errors} module and all extend {Errors::ServiceError}.
39
+ #
40
+ # begin
41
+ # # do stuff
42
+ # rescue Aws::NetworkFirewall::Errors::ServiceError
43
+ # # rescues all AWS Network Firewall API errors
44
+ # end
45
+ #
46
+ # See {Errors} for more information.
47
+ #
48
+ # @!group service
49
+ module Aws::NetworkFirewall
50
+
51
+ GEM_VERSION = '1.0.0'
52
+
53
+ end
@@ -0,0 +1,2647 @@
1
+ # frozen_string_literal: true
2
+
3
+ # WARNING ABOUT GENERATED CODE
4
+ #
5
+ # This file is generated. See the contributing guide for more information:
6
+ # https://github.com/aws/aws-sdk-ruby/blob/master/CONTRIBUTING.md
7
+ #
8
+ # WARNING ABOUT GENERATED CODE
9
+
10
+ require 'seahorse/client/plugins/content_length.rb'
11
+ require 'aws-sdk-core/plugins/credentials_configuration.rb'
12
+ require 'aws-sdk-core/plugins/logging.rb'
13
+ require 'aws-sdk-core/plugins/param_converter.rb'
14
+ require 'aws-sdk-core/plugins/param_validator.rb'
15
+ require 'aws-sdk-core/plugins/user_agent.rb'
16
+ require 'aws-sdk-core/plugins/helpful_socket_errors.rb'
17
+ require 'aws-sdk-core/plugins/retry_errors.rb'
18
+ require 'aws-sdk-core/plugins/global_configuration.rb'
19
+ require 'aws-sdk-core/plugins/regional_endpoint.rb'
20
+ require 'aws-sdk-core/plugins/endpoint_discovery.rb'
21
+ require 'aws-sdk-core/plugins/endpoint_pattern.rb'
22
+ require 'aws-sdk-core/plugins/response_paging.rb'
23
+ require 'aws-sdk-core/plugins/stub_responses.rb'
24
+ require 'aws-sdk-core/plugins/idempotency_token.rb'
25
+ require 'aws-sdk-core/plugins/jsonvalue_converter.rb'
26
+ require 'aws-sdk-core/plugins/client_metrics_plugin.rb'
27
+ require 'aws-sdk-core/plugins/client_metrics_send_plugin.rb'
28
+ require 'aws-sdk-core/plugins/transfer_encoding.rb'
29
+ require 'aws-sdk-core/plugins/http_checksum.rb'
30
+ require 'aws-sdk-core/plugins/signature_v4.rb'
31
+ require 'aws-sdk-core/plugins/protocols/json_rpc.rb'
32
+
33
+ Aws::Plugins::GlobalConfiguration.add_identifier(:networkfirewall)
34
+
35
+ module Aws::NetworkFirewall
36
+ # An API client for NetworkFirewall. To construct a client, you need to configure a `:region` and `:credentials`.
37
+ #
38
+ # client = Aws::NetworkFirewall::Client.new(
39
+ # region: region_name,
40
+ # credentials: credentials,
41
+ # # ...
42
+ # )
43
+ #
44
+ # For details on configuring region and credentials see
45
+ # the [developer guide](/sdk-for-ruby/v3/developer-guide/setup-config.html).
46
+ #
47
+ # See {#initialize} for a full list of supported configuration options.
48
+ class Client < Seahorse::Client::Base
49
+
50
+ include Aws::ClientStubs
51
+
52
+ @identifier = :networkfirewall
53
+
54
+ set_api(ClientApi::API)
55
+
56
+ add_plugin(Seahorse::Client::Plugins::ContentLength)
57
+ add_plugin(Aws::Plugins::CredentialsConfiguration)
58
+ add_plugin(Aws::Plugins::Logging)
59
+ add_plugin(Aws::Plugins::ParamConverter)
60
+ add_plugin(Aws::Plugins::ParamValidator)
61
+ add_plugin(Aws::Plugins::UserAgent)
62
+ add_plugin(Aws::Plugins::HelpfulSocketErrors)
63
+ add_plugin(Aws::Plugins::RetryErrors)
64
+ add_plugin(Aws::Plugins::GlobalConfiguration)
65
+ add_plugin(Aws::Plugins::RegionalEndpoint)
66
+ add_plugin(Aws::Plugins::EndpointDiscovery)
67
+ add_plugin(Aws::Plugins::EndpointPattern)
68
+ add_plugin(Aws::Plugins::ResponsePaging)
69
+ add_plugin(Aws::Plugins::StubResponses)
70
+ add_plugin(Aws::Plugins::IdempotencyToken)
71
+ add_plugin(Aws::Plugins::JsonvalueConverter)
72
+ add_plugin(Aws::Plugins::ClientMetricsPlugin)
73
+ add_plugin(Aws::Plugins::ClientMetricsSendPlugin)
74
+ add_plugin(Aws::Plugins::TransferEncoding)
75
+ add_plugin(Aws::Plugins::HttpChecksum)
76
+ add_plugin(Aws::Plugins::SignatureV4)
77
+ add_plugin(Aws::Plugins::Protocols::JsonRpc)
78
+
79
+ # @overload initialize(options)
80
+ # @param [Hash] options
81
+ # @option options [required, Aws::CredentialProvider] :credentials
82
+ # Your AWS credentials. This can be an instance of any one of the
83
+ # following classes:
84
+ #
85
+ # * `Aws::Credentials` - Used for configuring static, non-refreshing
86
+ # credentials.
87
+ #
88
+ # * `Aws::SharedCredentials` - Used for loading static credentials from a
89
+ # shared file, such as `~/.aws/config`.
90
+ #
91
+ # * `Aws::AssumeRoleCredentials` - Used when you need to assume a role.
92
+ #
93
+ # * `Aws::AssumeRoleWebIdentityCredentials` - Used when you need to
94
+ # assume a role after providing credentials via the web.
95
+ #
96
+ # * `Aws::SSOCredentials` - Used for loading credentials from AWS SSO using an
97
+ # access token generated from `aws login`.
98
+ #
99
+ # * `Aws::ProcessCredentials` - Used for loading credentials from a
100
+ # process that outputs to stdout.
101
+ #
102
+ # * `Aws::InstanceProfileCredentials` - Used for loading credentials
103
+ # from an EC2 IMDS on an EC2 instance.
104
+ #
105
+ # * `Aws::ECSCredentials` - Used for loading credentials from
106
+ # instances running in ECS.
107
+ #
108
+ # * `Aws::CognitoIdentityCredentials` - Used for loading credentials
109
+ # from the Cognito Identity service.
110
+ #
111
+ # When `:credentials` are not configured directly, the following
112
+ # locations will be searched for credentials:
113
+ #
114
+ # * `Aws.config[:credentials]`
115
+ # * The `:access_key_id`, `:secret_access_key`, and `:session_token` options.
116
+ # * ENV['AWS_ACCESS_KEY_ID'], ENV['AWS_SECRET_ACCESS_KEY']
117
+ # * `~/.aws/credentials`
118
+ # * `~/.aws/config`
119
+ # * EC2/ECS IMDS instance profile - When used by default, the timeouts
120
+ # are very aggressive. Construct and pass an instance of
121
+ # `Aws::InstanceProfileCredentails` or `Aws::ECSCredentials` to
122
+ # enable retries and extended timeouts.
123
+ #
124
+ # @option options [required, String] :region
125
+ # The AWS region to connect to. The configured `:region` is
126
+ # used to determine the service `:endpoint`. When not passed,
127
+ # a default `:region` is searched for in the following locations:
128
+ #
129
+ # * `Aws.config[:region]`
130
+ # * `ENV['AWS_REGION']`
131
+ # * `ENV['AMAZON_REGION']`
132
+ # * `ENV['AWS_DEFAULT_REGION']`
133
+ # * `~/.aws/credentials`
134
+ # * `~/.aws/config`
135
+ #
136
+ # @option options [String] :access_key_id
137
+ #
138
+ # @option options [Boolean] :active_endpoint_cache (false)
139
+ # When set to `true`, a thread polling for endpoints will be running in
140
+ # the background every 60 secs (default). Defaults to `false`.
141
+ #
142
+ # @option options [Boolean] :adaptive_retry_wait_to_fill (true)
143
+ # Used only in `adaptive` retry mode. When true, the request will sleep
144
+ # until there is sufficent client side capacity to retry the request.
145
+ # When false, the request will raise a `RetryCapacityNotAvailableError` and will
146
+ # not retry instead of sleeping.
147
+ #
148
+ # @option options [Boolean] :client_side_monitoring (false)
149
+ # When `true`, client-side metrics will be collected for all API requests from
150
+ # this client.
151
+ #
152
+ # @option options [String] :client_side_monitoring_client_id ("")
153
+ # Allows you to provide an identifier for this client which will be attached to
154
+ # all generated client side metrics. Defaults to an empty string.
155
+ #
156
+ # @option options [String] :client_side_monitoring_host ("127.0.0.1")
157
+ # Allows you to specify the DNS hostname or IPv4 or IPv6 address that the client
158
+ # side monitoring agent is running on, where client metrics will be published via UDP.
159
+ #
160
+ # @option options [Integer] :client_side_monitoring_port (31000)
161
+ # Required for publishing client metrics. The port that the client side monitoring
162
+ # agent is running on, where client metrics will be published via UDP.
163
+ #
164
+ # @option options [Aws::ClientSideMonitoring::Publisher] :client_side_monitoring_publisher (Aws::ClientSideMonitoring::Publisher)
165
+ # Allows you to provide a custom client-side monitoring publisher class. By default,
166
+ # will use the Client Side Monitoring Agent Publisher.
167
+ #
168
+ # @option options [Boolean] :convert_params (true)
169
+ # When `true`, an attempt is made to coerce request parameters into
170
+ # the required types.
171
+ #
172
+ # @option options [Boolean] :correct_clock_skew (true)
173
+ # Used only in `standard` and adaptive retry modes. Specifies whether to apply
174
+ # a clock skew correction and retry requests with skewed client clocks.
175
+ #
176
+ # @option options [Boolean] :disable_host_prefix_injection (false)
177
+ # Set to true to disable SDK automatically adding host prefix
178
+ # to default service endpoint when available.
179
+ #
180
+ # @option options [String] :endpoint
181
+ # The client endpoint is normally constructed from the `:region`
182
+ # option. You should only configure an `:endpoint` when connecting
183
+ # to test or custom endpoints. This should be a valid HTTP(S) URI.
184
+ #
185
+ # @option options [Integer] :endpoint_cache_max_entries (1000)
186
+ # Used for the maximum size limit of the LRU cache storing endpoints data
187
+ # for endpoint discovery enabled operations. Defaults to 1000.
188
+ #
189
+ # @option options [Integer] :endpoint_cache_max_threads (10)
190
+ # Used for the maximum threads in use for polling endpoints to be cached, defaults to 10.
191
+ #
192
+ # @option options [Integer] :endpoint_cache_poll_interval (60)
193
+ # When :endpoint_discovery and :active_endpoint_cache is enabled,
194
+ # Use this option to config the time interval in seconds for making
195
+ # requests fetching endpoints information. Defaults to 60 sec.
196
+ #
197
+ # @option options [Boolean] :endpoint_discovery (false)
198
+ # When set to `true`, endpoint discovery will be enabled for operations when available.
199
+ #
200
+ # @option options [Aws::Log::Formatter] :log_formatter (Aws::Log::Formatter.default)
201
+ # The log formatter.
202
+ #
203
+ # @option options [Symbol] :log_level (:info)
204
+ # The log level to send messages to the `:logger` at.
205
+ #
206
+ # @option options [Logger] :logger
207
+ # The Logger instance to send log messages to. If this option
208
+ # is not set, logging will be disabled.
209
+ #
210
+ # @option options [Integer] :max_attempts (3)
211
+ # An integer representing the maximum number attempts that will be made for
212
+ # a single request, including the initial attempt. For example,
213
+ # setting this value to 5 will result in a request being retried up to
214
+ # 4 times. Used in `standard` and `adaptive` retry modes.
215
+ #
216
+ # @option options [String] :profile ("default")
217
+ # Used when loading credentials from the shared credentials file
218
+ # at HOME/.aws/credentials. When not specified, 'default' is used.
219
+ #
220
+ # @option options [Proc] :retry_backoff
221
+ # A proc or lambda used for backoff. Defaults to 2**retries * retry_base_delay.
222
+ # This option is only used in the `legacy` retry mode.
223
+ #
224
+ # @option options [Float] :retry_base_delay (0.3)
225
+ # The base delay in seconds used by the default backoff function. This option
226
+ # is only used in the `legacy` retry mode.
227
+ #
228
+ # @option options [Symbol] :retry_jitter (:none)
229
+ # A delay randomiser function used by the default backoff function.
230
+ # Some predefined functions can be referenced by name - :none, :equal, :full,
231
+ # otherwise a Proc that takes and returns a number. This option is only used
232
+ # in the `legacy` retry mode.
233
+ #
234
+ # @see https://www.awsarchitectureblog.com/2015/03/backoff.html
235
+ #
236
+ # @option options [Integer] :retry_limit (3)
237
+ # The maximum number of times to retry failed requests. Only
238
+ # ~ 500 level server errors and certain ~ 400 level client errors
239
+ # are retried. Generally, these are throttling errors, data
240
+ # checksum errors, networking errors, timeout errors, auth errors,
241
+ # endpoint discovery, and errors from expired credentials.
242
+ # This option is only used in the `legacy` retry mode.
243
+ #
244
+ # @option options [Integer] :retry_max_delay (0)
245
+ # The maximum number of seconds to delay between retries (0 for no limit)
246
+ # used by the default backoff function. This option is only used in the
247
+ # `legacy` retry mode.
248
+ #
249
+ # @option options [String] :retry_mode ("legacy")
250
+ # Specifies which retry algorithm to use. Values are:
251
+ #
252
+ # * `legacy` - The pre-existing retry behavior. This is default value if
253
+ # no retry mode is provided.
254
+ #
255
+ # * `standard` - A standardized set of retry rules across the AWS SDKs.
256
+ # This includes support for retry quotas, which limit the number of
257
+ # unsuccessful retries a client can make.
258
+ #
259
+ # * `adaptive` - An experimental retry mode that includes all the
260
+ # functionality of `standard` mode along with automatic client side
261
+ # throttling. This is a provisional mode that may change behavior
262
+ # in the future.
263
+ #
264
+ #
265
+ # @option options [String] :secret_access_key
266
+ #
267
+ # @option options [String] :session_token
268
+ #
269
+ # @option options [Boolean] :simple_json (false)
270
+ # Disables request parameter conversion, validation, and formatting.
271
+ # Also disable response data type conversions. This option is useful
272
+ # when you want to ensure the highest level of performance by
273
+ # avoiding overhead of walking request parameters and response data
274
+ # structures.
275
+ #
276
+ # When `:simple_json` is enabled, the request parameters hash must
277
+ # be formatted exactly as the DynamoDB API expects.
278
+ #
279
+ # @option options [Boolean] :stub_responses (false)
280
+ # Causes the client to return stubbed responses. By default
281
+ # fake responses are generated and returned. You can specify
282
+ # the response data to return or errors to raise by calling
283
+ # {ClientStubs#stub_responses}. See {ClientStubs} for more information.
284
+ #
285
+ # ** Please note ** When response stubbing is enabled, no HTTP
286
+ # requests are made, and retries are disabled.
287
+ #
288
+ # @option options [Boolean] :validate_params (true)
289
+ # When `true`, request parameters are validated before
290
+ # sending the request.
291
+ #
292
+ # @option options [URI::HTTP,String] :http_proxy A proxy to send
293
+ # requests through. Formatted like 'http://proxy.com:123'.
294
+ #
295
+ # @option options [Float] :http_open_timeout (15) The number of
296
+ # seconds to wait when opening a HTTP session before raising a
297
+ # `Timeout::Error`.
298
+ #
299
+ # @option options [Integer] :http_read_timeout (60) The default
300
+ # number of seconds to wait for response data. This value can
301
+ # safely be set per-request on the session.
302
+ #
303
+ # @option options [Float] :http_idle_timeout (5) The number of
304
+ # seconds a connection is allowed to sit idle before it is
305
+ # considered stale. Stale connections are closed and removed
306
+ # from the pool before making a request.
307
+ #
308
+ # @option options [Float] :http_continue_timeout (1) The number of
309
+ # seconds to wait for a 100-continue response before sending the
310
+ # request body. This option has no effect unless the request has
311
+ # "Expect" header set to "100-continue". Defaults to `nil` which
312
+ # disables this behaviour. This value can safely be set per
313
+ # request on the session.
314
+ #
315
+ # @option options [Boolean] :http_wire_trace (false) When `true`,
316
+ # HTTP debug output will be sent to the `:logger`.
317
+ #
318
+ # @option options [Boolean] :ssl_verify_peer (true) When `true`,
319
+ # SSL peer certificates are verified when establishing a
320
+ # connection.
321
+ #
322
+ # @option options [String] :ssl_ca_bundle Full path to the SSL
323
+ # certificate authority bundle file that should be used when
324
+ # verifying peer certificates. If you do not pass
325
+ # `:ssl_ca_bundle` or `:ssl_ca_directory` the the system default
326
+ # will be used if available.
327
+ #
328
+ # @option options [String] :ssl_ca_directory Full path of the
329
+ # directory that contains the unbundled SSL certificate
330
+ # authority files for verifying peer certificates. If you do
331
+ # not pass `:ssl_ca_bundle` or `:ssl_ca_directory` the the
332
+ # system default will be used if available.
333
+ #
334
+ def initialize(*args)
335
+ super
336
+ end
337
+
338
+ # @!group API Operations
339
+
340
+ # Associates a FirewallPolicy to a Firewall.
341
+ #
342
+ # A firewall policy defines how to monitor and manage your VPC network
343
+ # traffic, using a collection of inspection rule groups and other
344
+ # settings. Each firewall requires one firewall policy association, and
345
+ # you can use the same firewall policy for multiple firewalls.
346
+ #
347
+ # @option params [String] :update_token
348
+ # An optional token that you can use for optimistic locking. Network
349
+ # Firewall returns a token to your requests that access the firewall.
350
+ # The token marks the state of the firewall resource at the time of the
351
+ # request.
352
+ #
353
+ # To make an unconditional change to the firewall, omit the token in
354
+ # your update request. Without the token, Network Firewall performs your
355
+ # updates regardless of whether the firewall has changed since you last
356
+ # retrieved it.
357
+ #
358
+ # To make a conditional change to the firewall, provide the token in
359
+ # your update request. Network Firewall uses the token to ensure that
360
+ # the firewall hasn't changed since you last retrieved it. If it has
361
+ # changed, the operation fails with an `InvalidTokenException`. If this
362
+ # happens, retrieve the firewall again to get a current copy of it with
363
+ # a new token. Reapply your changes as needed, then try the operation
364
+ # again using the new token.
365
+ #
366
+ # @option params [String] :firewall_arn
367
+ # The Amazon Resource Name (ARN) of the firewall.
368
+ #
369
+ # You must specify the ARN or the name, and you can specify both.
370
+ #
371
+ # @option params [String] :firewall_name
372
+ # The descriptive name of the firewall. You can't change the name of a
373
+ # firewall after you create it.
374
+ #
375
+ # You must specify the ARN or the name, and you can specify both.
376
+ #
377
+ # @option params [required, String] :firewall_policy_arn
378
+ # The Amazon Resource Name (ARN) of the firewall policy.
379
+ #
380
+ # @return [Types::AssociateFirewallPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
381
+ #
382
+ # * {Types::AssociateFirewallPolicyResponse#firewall_arn #firewall_arn} => String
383
+ # * {Types::AssociateFirewallPolicyResponse#firewall_name #firewall_name} => String
384
+ # * {Types::AssociateFirewallPolicyResponse#firewall_policy_arn #firewall_policy_arn} => String
385
+ # * {Types::AssociateFirewallPolicyResponse#update_token #update_token} => String
386
+ #
387
+ # @example Request syntax with placeholder values
388
+ #
389
+ # resp = client.associate_firewall_policy({
390
+ # update_token: "UpdateToken",
391
+ # firewall_arn: "ResourceArn",
392
+ # firewall_name: "ResourceName",
393
+ # firewall_policy_arn: "ResourceArn", # required
394
+ # })
395
+ #
396
+ # @example Response structure
397
+ #
398
+ # resp.firewall_arn #=> String
399
+ # resp.firewall_name #=> String
400
+ # resp.firewall_policy_arn #=> String
401
+ # resp.update_token #=> String
402
+ #
403
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateFirewallPolicy AWS API Documentation
404
+ #
405
+ # @overload associate_firewall_policy(params = {})
406
+ # @param [Hash] params ({})
407
+ def associate_firewall_policy(params = {}, options = {})
408
+ req = build_request(:associate_firewall_policy, params)
409
+ req.send_request(options)
410
+ end
411
+
412
+ # Associates the specified subnets in the Amazon VPC to the firewall.
413
+ # You can specify one subnet for each of the Availability Zones that the
414
+ # VPC spans.
415
+ #
416
+ # This request creates an AWS Network Firewall firewall endpoint in each
417
+ # of the subnets. To enable the firewall's protections, you must also
418
+ # modify the VPC's route tables for each subnet's Availability Zone,
419
+ # to redirect the traffic that's coming into and going out of the zone
420
+ # through the firewall endpoint.
421
+ #
422
+ # @option params [String] :update_token
423
+ # An optional token that you can use for optimistic locking. Network
424
+ # Firewall returns a token to your requests that access the firewall.
425
+ # The token marks the state of the firewall resource at the time of the
426
+ # request.
427
+ #
428
+ # To make an unconditional change to the firewall, omit the token in
429
+ # your update request. Without the token, Network Firewall performs your
430
+ # updates regardless of whether the firewall has changed since you last
431
+ # retrieved it.
432
+ #
433
+ # To make a conditional change to the firewall, provide the token in
434
+ # your update request. Network Firewall uses the token to ensure that
435
+ # the firewall hasn't changed since you last retrieved it. If it has
436
+ # changed, the operation fails with an `InvalidTokenException`. If this
437
+ # happens, retrieve the firewall again to get a current copy of it with
438
+ # a new token. Reapply your changes as needed, then try the operation
439
+ # again using the new token.
440
+ #
441
+ # @option params [String] :firewall_arn
442
+ # The Amazon Resource Name (ARN) of the firewall.
443
+ #
444
+ # You must specify the ARN or the name, and you can specify both.
445
+ #
446
+ # @option params [String] :firewall_name
447
+ # The descriptive name of the firewall. You can't change the name of a
448
+ # firewall after you create it.
449
+ #
450
+ # You must specify the ARN or the name, and you can specify both.
451
+ #
452
+ # @option params [required, Array<Types::SubnetMapping>] :subnet_mappings
453
+ # The IDs of the subnets that you want to associate with the firewall.
454
+ #
455
+ # @return [Types::AssociateSubnetsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
456
+ #
457
+ # * {Types::AssociateSubnetsResponse#firewall_arn #firewall_arn} => String
458
+ # * {Types::AssociateSubnetsResponse#firewall_name #firewall_name} => String
459
+ # * {Types::AssociateSubnetsResponse#subnet_mappings #subnet_mappings} => Array&lt;Types::SubnetMapping&gt;
460
+ # * {Types::AssociateSubnetsResponse#update_token #update_token} => String
461
+ #
462
+ # @example Request syntax with placeholder values
463
+ #
464
+ # resp = client.associate_subnets({
465
+ # update_token: "UpdateToken",
466
+ # firewall_arn: "ResourceArn",
467
+ # firewall_name: "ResourceName",
468
+ # subnet_mappings: [ # required
469
+ # {
470
+ # subnet_id: "CollectionMember_String", # required
471
+ # },
472
+ # ],
473
+ # })
474
+ #
475
+ # @example Response structure
476
+ #
477
+ # resp.firewall_arn #=> String
478
+ # resp.firewall_name #=> String
479
+ # resp.subnet_mappings #=> Array
480
+ # resp.subnet_mappings[0].subnet_id #=> String
481
+ # resp.update_token #=> String
482
+ #
483
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/AssociateSubnets AWS API Documentation
484
+ #
485
+ # @overload associate_subnets(params = {})
486
+ # @param [Hash] params ({})
487
+ def associate_subnets(params = {}, options = {})
488
+ req = build_request(:associate_subnets, params)
489
+ req.send_request(options)
490
+ end
491
+
492
+ # Creates an AWS Network Firewall Firewall and accompanying
493
+ # FirewallStatus for a VPC.
494
+ #
495
+ # The firewall defines the configuration settings for an AWS Network
496
+ # Firewall firewall. The settings that you can define at creation
497
+ # include the firewall policy, the subnets in your VPC to use for the
498
+ # firewall endpoints, and any tags that are attached to the firewall AWS
499
+ # resource.
500
+ #
501
+ # After you create a firewall, you can provide additional settings, like
502
+ # the logging configuration.
503
+ #
504
+ # To update the settings for a firewall, you use the operations that
505
+ # apply to the settings themselves, for example
506
+ # UpdateLoggingConfiguration, AssociateSubnets, and
507
+ # UpdateFirewallDeleteProtection.
508
+ #
509
+ # To manage a firewall's tags, use the standard AWS resource tagging
510
+ # operations, ListTagsForResource, TagResource, and UntagResource.
511
+ #
512
+ # To retrieve information about firewalls, use ListFirewalls and
513
+ # DescribeFirewall.
514
+ #
515
+ # @option params [required, String] :firewall_name
516
+ # The descriptive name of the firewall. You can't change the name of a
517
+ # firewall after you create it.
518
+ #
519
+ # @option params [required, String] :firewall_policy_arn
520
+ # The Amazon Resource Name (ARN) of the FirewallPolicy that you want to
521
+ # use for the firewall.
522
+ #
523
+ # @option params [required, String] :vpc_id
524
+ # The unique identifier of the VPC where Network Firewall should create
525
+ # the firewall.
526
+ #
527
+ # You can't change this setting after you create the firewall.
528
+ #
529
+ # @option params [required, Array<Types::SubnetMapping>] :subnet_mappings
530
+ # The public subnets to use for your Network Firewall firewalls. Each
531
+ # subnet must belong to a different Availability Zone in the VPC.
532
+ # Network Firewall creates a firewall endpoint in each subnet.
533
+ #
534
+ # @option params [Boolean] :delete_protection
535
+ # A flag indicating whether it is possible to delete the firewall. A
536
+ # setting of `TRUE` indicates that the firewall is protected against
537
+ # deletion. Use this setting to protect against accidentally deleting a
538
+ # firewall that is in use. When you create a firewall, the operation
539
+ # initializes this flag to `TRUE`.
540
+ #
541
+ # @option params [Boolean] :subnet_change_protection
542
+ # A setting indicating whether the firewall is protected against changes
543
+ # to the subnet associations. Use this setting to protect against
544
+ # accidentally modifying the subnet associations for a firewall that is
545
+ # in use. When you create a firewall, the operation initializes this
546
+ # setting to `TRUE`.
547
+ #
548
+ # @option params [Boolean] :firewall_policy_change_protection
549
+ # A setting indicating whether the firewall is protected against a
550
+ # change to the firewall policy association. Use this setting to protect
551
+ # against accidentally modifying the firewall policy for a firewall that
552
+ # is in use. When you create a firewall, the operation initializes this
553
+ # setting to `TRUE`.
554
+ #
555
+ # @option params [String] :description
556
+ # A description of the firewall.
557
+ #
558
+ # @option params [Array<Types::Tag>] :tags
559
+ # The key:value pairs to associate with the resource.
560
+ #
561
+ # @return [Types::CreateFirewallResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
562
+ #
563
+ # * {Types::CreateFirewallResponse#firewall #firewall} => Types::Firewall
564
+ # * {Types::CreateFirewallResponse#firewall_status #firewall_status} => Types::FirewallStatus
565
+ #
566
+ # @example Request syntax with placeholder values
567
+ #
568
+ # resp = client.create_firewall({
569
+ # firewall_name: "ResourceName", # required
570
+ # firewall_policy_arn: "ResourceArn", # required
571
+ # vpc_id: "VpcId", # required
572
+ # subnet_mappings: [ # required
573
+ # {
574
+ # subnet_id: "CollectionMember_String", # required
575
+ # },
576
+ # ],
577
+ # delete_protection: false,
578
+ # subnet_change_protection: false,
579
+ # firewall_policy_change_protection: false,
580
+ # description: "Description",
581
+ # tags: [
582
+ # {
583
+ # key: "TagKey", # required
584
+ # value: "TagValue", # required
585
+ # },
586
+ # ],
587
+ # })
588
+ #
589
+ # @example Response structure
590
+ #
591
+ # resp.firewall.firewall_name #=> String
592
+ # resp.firewall.firewall_arn #=> String
593
+ # resp.firewall.firewall_policy_arn #=> String
594
+ # resp.firewall.vpc_id #=> String
595
+ # resp.firewall.subnet_mappings #=> Array
596
+ # resp.firewall.subnet_mappings[0].subnet_id #=> String
597
+ # resp.firewall.delete_protection #=> Boolean
598
+ # resp.firewall.subnet_change_protection #=> Boolean
599
+ # resp.firewall.firewall_policy_change_protection #=> Boolean
600
+ # resp.firewall.description #=> String
601
+ # resp.firewall.firewall_id #=> String
602
+ # resp.firewall.tags #=> Array
603
+ # resp.firewall.tags[0].key #=> String
604
+ # resp.firewall.tags[0].value #=> String
605
+ # resp.firewall_status.status #=> String, one of "PROVISIONING", "DELETING", "READY"
606
+ # resp.firewall_status.configuration_sync_state_summary #=> String, one of "PENDING", "IN_SYNC"
607
+ # resp.firewall_status.sync_states #=> Hash
608
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.subnet_id #=> String
609
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.endpoint_id #=> String
610
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.status #=> String, one of "CREATING", "DELETING", "SCALING", "READY"
611
+ # resp.firewall_status.sync_states["AvailabilityZone"].config #=> Hash
612
+ # resp.firewall_status.sync_states["AvailabilityZone"].config["ResourceName"].sync_status #=> String, one of "PENDING", "IN_SYNC"
613
+ #
614
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewall AWS API Documentation
615
+ #
616
+ # @overload create_firewall(params = {})
617
+ # @param [Hash] params ({})
618
+ def create_firewall(params = {}, options = {})
619
+ req = build_request(:create_firewall, params)
620
+ req.send_request(options)
621
+ end
622
+
623
+ # Creates the firewall policy for the firewall according to the
624
+ # specifications.
625
+ #
626
+ # An AWS Network Firewall firewall policy defines the behavior of a
627
+ # firewall, in a collection of stateless and stateful rule groups and
628
+ # other settings. You can use one firewall policy for multiple
629
+ # firewalls.
630
+ #
631
+ # @option params [required, String] :firewall_policy_name
632
+ # The descriptive name of the firewall policy. You can't change the
633
+ # name of a firewall policy after you create it.
634
+ #
635
+ # @option params [required, Types::FirewallPolicy] :firewall_policy
636
+ # The rule groups and policy actions to use in the firewall policy.
637
+ #
638
+ # @option params [String] :description
639
+ # A description of the firewall policy.
640
+ #
641
+ # @option params [Array<Types::Tag>] :tags
642
+ # The key:value pairs to associate with the resource.
643
+ #
644
+ # @option params [Boolean] :dry_run
645
+ # Indicates whether you want Network Firewall to just check the validity
646
+ # of the request, rather than run the request.
647
+ #
648
+ # If set to `TRUE`, Network Firewall checks whether the request can run
649
+ # successfully, but doesn't actually make the requested changes. The
650
+ # call returns the value that the request would return if you ran it
651
+ # with dry run set to `FALSE`, but doesn't make additions or changes to
652
+ # your resources. This option allows you to make sure that you have the
653
+ # required permissions to run the request and that your request
654
+ # parameters are valid.
655
+ #
656
+ # If set to `FALSE`, Network Firewall makes the requested changes to
657
+ # your resources.
658
+ #
659
+ # @return [Types::CreateFirewallPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
660
+ #
661
+ # * {Types::CreateFirewallPolicyResponse#update_token #update_token} => String
662
+ # * {Types::CreateFirewallPolicyResponse#firewall_policy_response #firewall_policy_response} => Types::FirewallPolicyResponse
663
+ #
664
+ # @example Request syntax with placeholder values
665
+ #
666
+ # resp = client.create_firewall_policy({
667
+ # firewall_policy_name: "ResourceName", # required
668
+ # firewall_policy: { # required
669
+ # stateless_rule_group_references: [
670
+ # {
671
+ # resource_arn: "ResourceArn", # required
672
+ # priority: 1, # required
673
+ # },
674
+ # ],
675
+ # stateless_default_actions: ["CollectionMember_String"], # required
676
+ # stateless_fragment_default_actions: ["CollectionMember_String"], # required
677
+ # stateless_custom_actions: [
678
+ # {
679
+ # action_name: "ActionName", # required
680
+ # action_definition: { # required
681
+ # publish_metric_action: {
682
+ # dimensions: [ # required
683
+ # {
684
+ # value: "DimensionValue", # required
685
+ # },
686
+ # ],
687
+ # },
688
+ # },
689
+ # },
690
+ # ],
691
+ # stateful_rule_group_references: [
692
+ # {
693
+ # resource_arn: "ResourceArn", # required
694
+ # },
695
+ # ],
696
+ # },
697
+ # description: "Description",
698
+ # tags: [
699
+ # {
700
+ # key: "TagKey", # required
701
+ # value: "TagValue", # required
702
+ # },
703
+ # ],
704
+ # dry_run: false,
705
+ # })
706
+ #
707
+ # @example Response structure
708
+ #
709
+ # resp.update_token #=> String
710
+ # resp.firewall_policy_response.firewall_policy_name #=> String
711
+ # resp.firewall_policy_response.firewall_policy_arn #=> String
712
+ # resp.firewall_policy_response.firewall_policy_id #=> String
713
+ # resp.firewall_policy_response.description #=> String
714
+ # resp.firewall_policy_response.firewall_policy_status #=> String, one of "ACTIVE", "DELETING"
715
+ # resp.firewall_policy_response.tags #=> Array
716
+ # resp.firewall_policy_response.tags[0].key #=> String
717
+ # resp.firewall_policy_response.tags[0].value #=> String
718
+ #
719
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateFirewallPolicy AWS API Documentation
720
+ #
721
+ # @overload create_firewall_policy(params = {})
722
+ # @param [Hash] params ({})
723
+ def create_firewall_policy(params = {}, options = {})
724
+ req = build_request(:create_firewall_policy, params)
725
+ req.send_request(options)
726
+ end
727
+
728
+ # Creates the specified stateless or stateful rule group, which includes
729
+ # the rules for network traffic inspection, a capacity setting, and
730
+ # tags.
731
+ #
732
+ # You provide your rule group specification in your request using either
733
+ # `RuleGroup` or `Rules`.
734
+ #
735
+ # @option params [required, String] :rule_group_name
736
+ # The descriptive name of the rule group. You can't change the name of
737
+ # a rule group after you create it.
738
+ #
739
+ # @option params [Types::RuleGroup] :rule_group
740
+ # An object that defines the rule group rules.
741
+ #
742
+ # <note markdown="1"> You must provide either this rule group setting or a `Rules` setting,
743
+ # but not both.
744
+ #
745
+ # </note>
746
+ #
747
+ # @option params [String] :rules
748
+ # The name of a file containing stateful rule group rules specifications
749
+ # in Suricata flat format, with one rule per line. Use this to import
750
+ # your existing Suricata compatible rule groups.
751
+ #
752
+ # <note markdown="1"> You must provide either this rules setting or a populated `RuleGroup`
753
+ # setting, but not both.
754
+ #
755
+ # </note>
756
+ #
757
+ # You can provide your rule group specification in a file through this
758
+ # setting when you create or update your rule group. The call response
759
+ # returns a RuleGroup object that Network Firewall has populated from
760
+ # your file. Network Firewall uses the file contents to populate the
761
+ # rule group rules, but does not maintain a reference to the file or use
762
+ # the file in any way after performing the create or update. If you call
763
+ # DescribeRuleGroup to retrieve the rule group, Network Firewall returns
764
+ # rules settings inside a RuleGroup object.
765
+ #
766
+ # @option params [required, String] :type
767
+ # Indicates whether the rule group is stateless or stateful. If the rule
768
+ # group is stateless, it contains stateless rules. If it is stateful, it
769
+ # contains stateful rules.
770
+ #
771
+ # @option params [String] :description
772
+ # A description of the rule group.
773
+ #
774
+ # @option params [required, Integer] :capacity
775
+ # The maximum operating resources that this rule group can use. Rule
776
+ # group capacity is fixed at creation. When you update a rule group, you
777
+ # are limited to this capacity. When you reference a rule group from a
778
+ # firewall policy, Network Firewall reserves this capacity for the rule
779
+ # group.
780
+ #
781
+ # You can retrieve the capacity that would be required for a rule group
782
+ # before you create the rule group by calling CreateRuleGroup with
783
+ # `DryRun` set to `TRUE`.
784
+ #
785
+ # <note markdown="1"> You can't change or exceed this capacity when you update the rule
786
+ # group, so leave room for your rule group to grow.
787
+ #
788
+ # </note>
789
+ #
790
+ # **Capacity for a stateless rule group**
791
+ #
792
+ # For a stateless rule group, the capacity required is the sum of the
793
+ # capacity requirements of the individual rules that you expect to have
794
+ # in the rule group.
795
+ #
796
+ # To calculate the capacity requirement of a single rule, multiply the
797
+ # capacity requirement values of each of the rule's match settings:
798
+ #
799
+ # * A match setting with no criteria specified has a value of 1.
800
+ #
801
+ # * A match setting with `Any` specified has a value of 1.
802
+ #
803
+ # * All other match settings have a value equal to the number of
804
+ # elements provided in the setting. For example, a protocol setting
805
+ # \["UDP"\] and a source setting \["10.0.0.0/24"\] each have a
806
+ # value of 1. A protocol setting \["UDP","TCP"\] has a value of 2.
807
+ # A source setting \["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"\]
808
+ # has a value of 3.
809
+ #
810
+ # A rule with no criteria specified in any of its match settings has a
811
+ # capacity requirement of 1. A rule with protocol setting
812
+ # \["UDP","TCP"\], source setting
813
+ # \["10.0.0.0/24","10.0.0.1/24","10.0.0.2/24"\], and a single
814
+ # specification or no specification for each of the other match settings
815
+ # has a capacity requirement of 6.
816
+ #
817
+ # **Capacity for a stateful rule group**
818
+ #
819
+ # For a stateful rule group, the minimum capacity required is the number
820
+ # of individual rules that you expect to have in the rule group.
821
+ #
822
+ # @option params [Array<Types::Tag>] :tags
823
+ # The key:value pairs to associate with the resource.
824
+ #
825
+ # @option params [Boolean] :dry_run
826
+ # Indicates whether you want Network Firewall to just check the validity
827
+ # of the request, rather than run the request.
828
+ #
829
+ # If set to `TRUE`, Network Firewall checks whether the request can run
830
+ # successfully, but doesn't actually make the requested changes. The
831
+ # call returns the value that the request would return if you ran it
832
+ # with dry run set to `FALSE`, but doesn't make additions or changes to
833
+ # your resources. This option allows you to make sure that you have the
834
+ # required permissions to run the request and that your request
835
+ # parameters are valid.
836
+ #
837
+ # If set to `FALSE`, Network Firewall makes the requested changes to
838
+ # your resources.
839
+ #
840
+ # @return [Types::CreateRuleGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
841
+ #
842
+ # * {Types::CreateRuleGroupResponse#update_token #update_token} => String
843
+ # * {Types::CreateRuleGroupResponse#rule_group_response #rule_group_response} => Types::RuleGroupResponse
844
+ #
845
+ # @example Request syntax with placeholder values
846
+ #
847
+ # resp = client.create_rule_group({
848
+ # rule_group_name: "ResourceName", # required
849
+ # rule_group: {
850
+ # rule_variables: {
851
+ # ip_sets: {
852
+ # "RuleVariableName" => {
853
+ # definition: ["VariableDefinition"], # required
854
+ # },
855
+ # },
856
+ # port_sets: {
857
+ # "RuleVariableName" => {
858
+ # definition: ["VariableDefinition"],
859
+ # },
860
+ # },
861
+ # },
862
+ # rules_source: { # required
863
+ # rules_string: "RulesString",
864
+ # rules_source_list: {
865
+ # targets: ["CollectionMember_String"], # required
866
+ # target_types: ["TLS_SNI"], # required, accepts TLS_SNI, HTTP_HOST
867
+ # generated_rules_type: "ALLOWLIST", # required, accepts ALLOWLIST, DENYLIST
868
+ # },
869
+ # stateful_rules: [
870
+ # {
871
+ # action: "PASS", # required, accepts PASS, DROP, ALERT
872
+ # header: { # required
873
+ # protocol: "IP", # required, accepts IP, TCP, UDP, ICMP, HTTP, FTP, TLS, SMB, DNS, DCERPC, SSH, SMTP, IMAP, MSN, KRB5, IKEV2, TFTP, NTP, DHCP
874
+ # source: "Source", # required
875
+ # source_port: "Port", # required
876
+ # direction: "FORWARD", # required, accepts FORWARD, ANY
877
+ # destination: "Destination", # required
878
+ # destination_port: "Port", # required
879
+ # },
880
+ # rule_options: [ # required
881
+ # {
882
+ # keyword: "Keyword", # required
883
+ # settings: ["Setting"],
884
+ # },
885
+ # ],
886
+ # },
887
+ # ],
888
+ # stateless_rules_and_custom_actions: {
889
+ # stateless_rules: [ # required
890
+ # {
891
+ # rule_definition: { # required
892
+ # match_attributes: { # required
893
+ # sources: [
894
+ # {
895
+ # address_definition: "AddressDefinition", # required
896
+ # },
897
+ # ],
898
+ # destinations: [
899
+ # {
900
+ # address_definition: "AddressDefinition", # required
901
+ # },
902
+ # ],
903
+ # source_ports: [
904
+ # {
905
+ # from_port: 1, # required
906
+ # to_port: 1, # required
907
+ # },
908
+ # ],
909
+ # destination_ports: [
910
+ # {
911
+ # from_port: 1, # required
912
+ # to_port: 1, # required
913
+ # },
914
+ # ],
915
+ # protocols: [1],
916
+ # tcp_flags: [
917
+ # {
918
+ # flags: ["FIN"], # required, accepts FIN, SYN, RST, PSH, ACK, URG, ECE, CWR
919
+ # masks: ["FIN"], # accepts FIN, SYN, RST, PSH, ACK, URG, ECE, CWR
920
+ # },
921
+ # ],
922
+ # },
923
+ # actions: ["CollectionMember_String"], # required
924
+ # },
925
+ # priority: 1, # required
926
+ # },
927
+ # ],
928
+ # custom_actions: [
929
+ # {
930
+ # action_name: "ActionName", # required
931
+ # action_definition: { # required
932
+ # publish_metric_action: {
933
+ # dimensions: [ # required
934
+ # {
935
+ # value: "DimensionValue", # required
936
+ # },
937
+ # ],
938
+ # },
939
+ # },
940
+ # },
941
+ # ],
942
+ # },
943
+ # },
944
+ # },
945
+ # rules: "RulesString",
946
+ # type: "STATELESS", # required, accepts STATELESS, STATEFUL
947
+ # description: "Description",
948
+ # capacity: 1, # required
949
+ # tags: [
950
+ # {
951
+ # key: "TagKey", # required
952
+ # value: "TagValue", # required
953
+ # },
954
+ # ],
955
+ # dry_run: false,
956
+ # })
957
+ #
958
+ # @example Response structure
959
+ #
960
+ # resp.update_token #=> String
961
+ # resp.rule_group_response.rule_group_arn #=> String
962
+ # resp.rule_group_response.rule_group_name #=> String
963
+ # resp.rule_group_response.rule_group_id #=> String
964
+ # resp.rule_group_response.description #=> String
965
+ # resp.rule_group_response.type #=> String, one of "STATELESS", "STATEFUL"
966
+ # resp.rule_group_response.capacity #=> Integer
967
+ # resp.rule_group_response.rule_group_status #=> String, one of "ACTIVE", "DELETING"
968
+ # resp.rule_group_response.tags #=> Array
969
+ # resp.rule_group_response.tags[0].key #=> String
970
+ # resp.rule_group_response.tags[0].value #=> String
971
+ #
972
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/CreateRuleGroup AWS API Documentation
973
+ #
974
+ # @overload create_rule_group(params = {})
975
+ # @param [Hash] params ({})
976
+ def create_rule_group(params = {}, options = {})
977
+ req = build_request(:create_rule_group, params)
978
+ req.send_request(options)
979
+ end
980
+
981
+ # Deletes the specified Firewall and its FirewallStatus. This operation
982
+ # requires the firewall's `DeleteProtection` flag to be `FALSE`. You
983
+ # can't revert this operation.
984
+ #
985
+ # You can check whether a firewall is in use by reviewing the route
986
+ # tables for the Availability Zones where you have firewall subnet
987
+ # mappings. Retrieve the subnet mappings by calling DescribeFirewall.
988
+ # You define and update the route tables through Amazon VPC. As needed,
989
+ # update the route tables for the zones to remove the firewall
990
+ # endpoints. When the route tables no longer use the firewall endpoints,
991
+ # you can remove the firewall safely.
992
+ #
993
+ # To delete a firewall, remove the delete protection if you need to
994
+ # using UpdateFirewallDeleteProtection, then delete the firewall by
995
+ # calling DeleteFirewall.
996
+ #
997
+ # @option params [String] :firewall_name
998
+ # The descriptive name of the firewall. You can't change the name of a
999
+ # firewall after you create it.
1000
+ #
1001
+ # You must specify the ARN or the name, and you can specify both.
1002
+ #
1003
+ # @option params [String] :firewall_arn
1004
+ # The Amazon Resource Name (ARN) of the firewall.
1005
+ #
1006
+ # You must specify the ARN or the name, and you can specify both.
1007
+ #
1008
+ # @return [Types::DeleteFirewallResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1009
+ #
1010
+ # * {Types::DeleteFirewallResponse#firewall #firewall} => Types::Firewall
1011
+ # * {Types::DeleteFirewallResponse#firewall_status #firewall_status} => Types::FirewallStatus
1012
+ #
1013
+ # @example Request syntax with placeholder values
1014
+ #
1015
+ # resp = client.delete_firewall({
1016
+ # firewall_name: "ResourceName",
1017
+ # firewall_arn: "ResourceArn",
1018
+ # })
1019
+ #
1020
+ # @example Response structure
1021
+ #
1022
+ # resp.firewall.firewall_name #=> String
1023
+ # resp.firewall.firewall_arn #=> String
1024
+ # resp.firewall.firewall_policy_arn #=> String
1025
+ # resp.firewall.vpc_id #=> String
1026
+ # resp.firewall.subnet_mappings #=> Array
1027
+ # resp.firewall.subnet_mappings[0].subnet_id #=> String
1028
+ # resp.firewall.delete_protection #=> Boolean
1029
+ # resp.firewall.subnet_change_protection #=> Boolean
1030
+ # resp.firewall.firewall_policy_change_protection #=> Boolean
1031
+ # resp.firewall.description #=> String
1032
+ # resp.firewall.firewall_id #=> String
1033
+ # resp.firewall.tags #=> Array
1034
+ # resp.firewall.tags[0].key #=> String
1035
+ # resp.firewall.tags[0].value #=> String
1036
+ # resp.firewall_status.status #=> String, one of "PROVISIONING", "DELETING", "READY"
1037
+ # resp.firewall_status.configuration_sync_state_summary #=> String, one of "PENDING", "IN_SYNC"
1038
+ # resp.firewall_status.sync_states #=> Hash
1039
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.subnet_id #=> String
1040
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.endpoint_id #=> String
1041
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.status #=> String, one of "CREATING", "DELETING", "SCALING", "READY"
1042
+ # resp.firewall_status.sync_states["AvailabilityZone"].config #=> Hash
1043
+ # resp.firewall_status.sync_states["AvailabilityZone"].config["ResourceName"].sync_status #=> String, one of "PENDING", "IN_SYNC"
1044
+ #
1045
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewall AWS API Documentation
1046
+ #
1047
+ # @overload delete_firewall(params = {})
1048
+ # @param [Hash] params ({})
1049
+ def delete_firewall(params = {}, options = {})
1050
+ req = build_request(:delete_firewall, params)
1051
+ req.send_request(options)
1052
+ end
1053
+
1054
+ # Deletes the specified FirewallPolicy.
1055
+ #
1056
+ # @option params [String] :firewall_policy_name
1057
+ # The descriptive name of the firewall policy. You can't change the
1058
+ # name of a firewall policy after you create it.
1059
+ #
1060
+ # You must specify the ARN or the name, and you can specify both.
1061
+ #
1062
+ # @option params [String] :firewall_policy_arn
1063
+ # The Amazon Resource Name (ARN) of the firewall policy.
1064
+ #
1065
+ # You must specify the ARN or the name, and you can specify both.
1066
+ #
1067
+ # @return [Types::DeleteFirewallPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1068
+ #
1069
+ # * {Types::DeleteFirewallPolicyResponse#firewall_policy_response #firewall_policy_response} => Types::FirewallPolicyResponse
1070
+ #
1071
+ # @example Request syntax with placeholder values
1072
+ #
1073
+ # resp = client.delete_firewall_policy({
1074
+ # firewall_policy_name: "ResourceName",
1075
+ # firewall_policy_arn: "ResourceArn",
1076
+ # })
1077
+ #
1078
+ # @example Response structure
1079
+ #
1080
+ # resp.firewall_policy_response.firewall_policy_name #=> String
1081
+ # resp.firewall_policy_response.firewall_policy_arn #=> String
1082
+ # resp.firewall_policy_response.firewall_policy_id #=> String
1083
+ # resp.firewall_policy_response.description #=> String
1084
+ # resp.firewall_policy_response.firewall_policy_status #=> String, one of "ACTIVE", "DELETING"
1085
+ # resp.firewall_policy_response.tags #=> Array
1086
+ # resp.firewall_policy_response.tags[0].key #=> String
1087
+ # resp.firewall_policy_response.tags[0].value #=> String
1088
+ #
1089
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteFirewallPolicy AWS API Documentation
1090
+ #
1091
+ # @overload delete_firewall_policy(params = {})
1092
+ # @param [Hash] params ({})
1093
+ def delete_firewall_policy(params = {}, options = {})
1094
+ req = build_request(:delete_firewall_policy, params)
1095
+ req.send_request(options)
1096
+ end
1097
+
1098
+ # Deletes a resource policy that you created in a PutResourcePolicy
1099
+ # request.
1100
+ #
1101
+ # @option params [required, String] :resource_arn
1102
+ # The Amazon Resource Name (ARN) of the rule group or firewall policy
1103
+ # whose resource policy you want to delete.
1104
+ #
1105
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1106
+ #
1107
+ # @example Request syntax with placeholder values
1108
+ #
1109
+ # resp = client.delete_resource_policy({
1110
+ # resource_arn: "ResourceArn", # required
1111
+ # })
1112
+ #
1113
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteResourcePolicy AWS API Documentation
1114
+ #
1115
+ # @overload delete_resource_policy(params = {})
1116
+ # @param [Hash] params ({})
1117
+ def delete_resource_policy(params = {}, options = {})
1118
+ req = build_request(:delete_resource_policy, params)
1119
+ req.send_request(options)
1120
+ end
1121
+
1122
+ # Deletes the specified RuleGroup.
1123
+ #
1124
+ # @option params [String] :rule_group_name
1125
+ # The descriptive name of the rule group. You can't change the name of
1126
+ # a rule group after you create it.
1127
+ #
1128
+ # You must specify the ARN or the name, and you can specify both.
1129
+ #
1130
+ # @option params [String] :rule_group_arn
1131
+ # The Amazon Resource Name (ARN) of the rule group.
1132
+ #
1133
+ # You must specify the ARN or the name, and you can specify both.
1134
+ #
1135
+ # @option params [String] :type
1136
+ # Indicates whether the rule group is stateless or stateful. If the rule
1137
+ # group is stateless, it contains stateless rules. If it is stateful, it
1138
+ # contains stateful rules.
1139
+ #
1140
+ # <note markdown="1"> This setting is required for requests that do not include the
1141
+ # `RuleGroupARN`.
1142
+ #
1143
+ # </note>
1144
+ #
1145
+ # @return [Types::DeleteRuleGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1146
+ #
1147
+ # * {Types::DeleteRuleGroupResponse#rule_group_response #rule_group_response} => Types::RuleGroupResponse
1148
+ #
1149
+ # @example Request syntax with placeholder values
1150
+ #
1151
+ # resp = client.delete_rule_group({
1152
+ # rule_group_name: "ResourceName",
1153
+ # rule_group_arn: "ResourceArn",
1154
+ # type: "STATELESS", # accepts STATELESS, STATEFUL
1155
+ # })
1156
+ #
1157
+ # @example Response structure
1158
+ #
1159
+ # resp.rule_group_response.rule_group_arn #=> String
1160
+ # resp.rule_group_response.rule_group_name #=> String
1161
+ # resp.rule_group_response.rule_group_id #=> String
1162
+ # resp.rule_group_response.description #=> String
1163
+ # resp.rule_group_response.type #=> String, one of "STATELESS", "STATEFUL"
1164
+ # resp.rule_group_response.capacity #=> Integer
1165
+ # resp.rule_group_response.rule_group_status #=> String, one of "ACTIVE", "DELETING"
1166
+ # resp.rule_group_response.tags #=> Array
1167
+ # resp.rule_group_response.tags[0].key #=> String
1168
+ # resp.rule_group_response.tags[0].value #=> String
1169
+ #
1170
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DeleteRuleGroup AWS API Documentation
1171
+ #
1172
+ # @overload delete_rule_group(params = {})
1173
+ # @param [Hash] params ({})
1174
+ def delete_rule_group(params = {}, options = {})
1175
+ req = build_request(:delete_rule_group, params)
1176
+ req.send_request(options)
1177
+ end
1178
+
1179
+ # Returns the data objects for the specified firewall.
1180
+ #
1181
+ # @option params [String] :firewall_name
1182
+ # The descriptive name of the firewall. You can't change the name of a
1183
+ # firewall after you create it.
1184
+ #
1185
+ # You must specify the ARN or the name, and you can specify both.
1186
+ #
1187
+ # @option params [String] :firewall_arn
1188
+ # The Amazon Resource Name (ARN) of the firewall.
1189
+ #
1190
+ # You must specify the ARN or the name, and you can specify both.
1191
+ #
1192
+ # @return [Types::DescribeFirewallResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1193
+ #
1194
+ # * {Types::DescribeFirewallResponse#update_token #update_token} => String
1195
+ # * {Types::DescribeFirewallResponse#firewall #firewall} => Types::Firewall
1196
+ # * {Types::DescribeFirewallResponse#firewall_status #firewall_status} => Types::FirewallStatus
1197
+ #
1198
+ # @example Request syntax with placeholder values
1199
+ #
1200
+ # resp = client.describe_firewall({
1201
+ # firewall_name: "ResourceName",
1202
+ # firewall_arn: "ResourceArn",
1203
+ # })
1204
+ #
1205
+ # @example Response structure
1206
+ #
1207
+ # resp.update_token #=> String
1208
+ # resp.firewall.firewall_name #=> String
1209
+ # resp.firewall.firewall_arn #=> String
1210
+ # resp.firewall.firewall_policy_arn #=> String
1211
+ # resp.firewall.vpc_id #=> String
1212
+ # resp.firewall.subnet_mappings #=> Array
1213
+ # resp.firewall.subnet_mappings[0].subnet_id #=> String
1214
+ # resp.firewall.delete_protection #=> Boolean
1215
+ # resp.firewall.subnet_change_protection #=> Boolean
1216
+ # resp.firewall.firewall_policy_change_protection #=> Boolean
1217
+ # resp.firewall.description #=> String
1218
+ # resp.firewall.firewall_id #=> String
1219
+ # resp.firewall.tags #=> Array
1220
+ # resp.firewall.tags[0].key #=> String
1221
+ # resp.firewall.tags[0].value #=> String
1222
+ # resp.firewall_status.status #=> String, one of "PROVISIONING", "DELETING", "READY"
1223
+ # resp.firewall_status.configuration_sync_state_summary #=> String, one of "PENDING", "IN_SYNC"
1224
+ # resp.firewall_status.sync_states #=> Hash
1225
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.subnet_id #=> String
1226
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.endpoint_id #=> String
1227
+ # resp.firewall_status.sync_states["AvailabilityZone"].attachment.status #=> String, one of "CREATING", "DELETING", "SCALING", "READY"
1228
+ # resp.firewall_status.sync_states["AvailabilityZone"].config #=> Hash
1229
+ # resp.firewall_status.sync_states["AvailabilityZone"].config["ResourceName"].sync_status #=> String, one of "PENDING", "IN_SYNC"
1230
+ #
1231
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewall AWS API Documentation
1232
+ #
1233
+ # @overload describe_firewall(params = {})
1234
+ # @param [Hash] params ({})
1235
+ def describe_firewall(params = {}, options = {})
1236
+ req = build_request(:describe_firewall, params)
1237
+ req.send_request(options)
1238
+ end
1239
+
1240
+ # Returns the data objects for the specified firewall policy.
1241
+ #
1242
+ # @option params [String] :firewall_policy_name
1243
+ # The descriptive name of the firewall policy. You can't change the
1244
+ # name of a firewall policy after you create it.
1245
+ #
1246
+ # You must specify the ARN or the name, and you can specify both.
1247
+ #
1248
+ # @option params [String] :firewall_policy_arn
1249
+ # The Amazon Resource Name (ARN) of the firewall policy.
1250
+ #
1251
+ # You must specify the ARN or the name, and you can specify both.
1252
+ #
1253
+ # @return [Types::DescribeFirewallPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1254
+ #
1255
+ # * {Types::DescribeFirewallPolicyResponse#update_token #update_token} => String
1256
+ # * {Types::DescribeFirewallPolicyResponse#firewall_policy_response #firewall_policy_response} => Types::FirewallPolicyResponse
1257
+ # * {Types::DescribeFirewallPolicyResponse#firewall_policy #firewall_policy} => Types::FirewallPolicy
1258
+ #
1259
+ # @example Request syntax with placeholder values
1260
+ #
1261
+ # resp = client.describe_firewall_policy({
1262
+ # firewall_policy_name: "ResourceName",
1263
+ # firewall_policy_arn: "ResourceArn",
1264
+ # })
1265
+ #
1266
+ # @example Response structure
1267
+ #
1268
+ # resp.update_token #=> String
1269
+ # resp.firewall_policy_response.firewall_policy_name #=> String
1270
+ # resp.firewall_policy_response.firewall_policy_arn #=> String
1271
+ # resp.firewall_policy_response.firewall_policy_id #=> String
1272
+ # resp.firewall_policy_response.description #=> String
1273
+ # resp.firewall_policy_response.firewall_policy_status #=> String, one of "ACTIVE", "DELETING"
1274
+ # resp.firewall_policy_response.tags #=> Array
1275
+ # resp.firewall_policy_response.tags[0].key #=> String
1276
+ # resp.firewall_policy_response.tags[0].value #=> String
1277
+ # resp.firewall_policy.stateless_rule_group_references #=> Array
1278
+ # resp.firewall_policy.stateless_rule_group_references[0].resource_arn #=> String
1279
+ # resp.firewall_policy.stateless_rule_group_references[0].priority #=> Integer
1280
+ # resp.firewall_policy.stateless_default_actions #=> Array
1281
+ # resp.firewall_policy.stateless_default_actions[0] #=> String
1282
+ # resp.firewall_policy.stateless_fragment_default_actions #=> Array
1283
+ # resp.firewall_policy.stateless_fragment_default_actions[0] #=> String
1284
+ # resp.firewall_policy.stateless_custom_actions #=> Array
1285
+ # resp.firewall_policy.stateless_custom_actions[0].action_name #=> String
1286
+ # resp.firewall_policy.stateless_custom_actions[0].action_definition.publish_metric_action.dimensions #=> Array
1287
+ # resp.firewall_policy.stateless_custom_actions[0].action_definition.publish_metric_action.dimensions[0].value #=> String
1288
+ # resp.firewall_policy.stateful_rule_group_references #=> Array
1289
+ # resp.firewall_policy.stateful_rule_group_references[0].resource_arn #=> String
1290
+ #
1291
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeFirewallPolicy AWS API Documentation
1292
+ #
1293
+ # @overload describe_firewall_policy(params = {})
1294
+ # @param [Hash] params ({})
1295
+ def describe_firewall_policy(params = {}, options = {})
1296
+ req = build_request(:describe_firewall_policy, params)
1297
+ req.send_request(options)
1298
+ end
1299
+
1300
+ # Returns the logging configuration for the specified firewall.
1301
+ #
1302
+ # @option params [String] :firewall_arn
1303
+ # The Amazon Resource Name (ARN) of the firewall.
1304
+ #
1305
+ # You must specify the ARN or the name, and you can specify both.
1306
+ #
1307
+ # @option params [String] :firewall_name
1308
+ # The descriptive name of the firewall. You can't change the name of a
1309
+ # firewall after you create it.
1310
+ #
1311
+ # You must specify the ARN or the name, and you can specify both.
1312
+ #
1313
+ # @return [Types::DescribeLoggingConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1314
+ #
1315
+ # * {Types::DescribeLoggingConfigurationResponse#firewall_arn #firewall_arn} => String
1316
+ # * {Types::DescribeLoggingConfigurationResponse#logging_configuration #logging_configuration} => Types::LoggingConfiguration
1317
+ #
1318
+ # @example Request syntax with placeholder values
1319
+ #
1320
+ # resp = client.describe_logging_configuration({
1321
+ # firewall_arn: "ResourceArn",
1322
+ # firewall_name: "ResourceName",
1323
+ # })
1324
+ #
1325
+ # @example Response structure
1326
+ #
1327
+ # resp.firewall_arn #=> String
1328
+ # resp.logging_configuration.log_destination_configs #=> Array
1329
+ # resp.logging_configuration.log_destination_configs[0].log_type #=> String, one of "ALERT", "FLOW"
1330
+ # resp.logging_configuration.log_destination_configs[0].log_destination_type #=> String, one of "S3", "CloudWatchLogs", "KinesisDataFirehose"
1331
+ # resp.logging_configuration.log_destination_configs[0].log_destination #=> Hash
1332
+ # resp.logging_configuration.log_destination_configs[0].log_destination["HashMapKey"] #=> String
1333
+ #
1334
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeLoggingConfiguration AWS API Documentation
1335
+ #
1336
+ # @overload describe_logging_configuration(params = {})
1337
+ # @param [Hash] params ({})
1338
+ def describe_logging_configuration(params = {}, options = {})
1339
+ req = build_request(:describe_logging_configuration, params)
1340
+ req.send_request(options)
1341
+ end
1342
+
1343
+ # Retrieves a resource policy that you created in a PutResourcePolicy
1344
+ # request.
1345
+ #
1346
+ # @option params [required, String] :resource_arn
1347
+ # The Amazon Resource Name (ARN) of the rule group or firewall policy
1348
+ # whose resource policy you want to retrieve.
1349
+ #
1350
+ # @return [Types::DescribeResourcePolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1351
+ #
1352
+ # * {Types::DescribeResourcePolicyResponse#policy #policy} => String
1353
+ #
1354
+ # @example Request syntax with placeholder values
1355
+ #
1356
+ # resp = client.describe_resource_policy({
1357
+ # resource_arn: "ResourceArn", # required
1358
+ # })
1359
+ #
1360
+ # @example Response structure
1361
+ #
1362
+ # resp.policy #=> String
1363
+ #
1364
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeResourcePolicy AWS API Documentation
1365
+ #
1366
+ # @overload describe_resource_policy(params = {})
1367
+ # @param [Hash] params ({})
1368
+ def describe_resource_policy(params = {}, options = {})
1369
+ req = build_request(:describe_resource_policy, params)
1370
+ req.send_request(options)
1371
+ end
1372
+
1373
+ # Returns the data objects for the specified rule group.
1374
+ #
1375
+ # @option params [String] :rule_group_name
1376
+ # The descriptive name of the rule group. You can't change the name of
1377
+ # a rule group after you create it.
1378
+ #
1379
+ # You must specify the ARN or the name, and you can specify both.
1380
+ #
1381
+ # @option params [String] :rule_group_arn
1382
+ # The Amazon Resource Name (ARN) of the rule group.
1383
+ #
1384
+ # You must specify the ARN or the name, and you can specify both.
1385
+ #
1386
+ # @option params [String] :type
1387
+ # Indicates whether the rule group is stateless or stateful. If the rule
1388
+ # group is stateless, it contains stateless rules. If it is stateful, it
1389
+ # contains stateful rules.
1390
+ #
1391
+ # <note markdown="1"> This setting is required for requests that do not include the
1392
+ # `RuleGroupARN`.
1393
+ #
1394
+ # </note>
1395
+ #
1396
+ # @return [Types::DescribeRuleGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1397
+ #
1398
+ # * {Types::DescribeRuleGroupResponse#update_token #update_token} => String
1399
+ # * {Types::DescribeRuleGroupResponse#rule_group #rule_group} => Types::RuleGroup
1400
+ # * {Types::DescribeRuleGroupResponse#rule_group_response #rule_group_response} => Types::RuleGroupResponse
1401
+ #
1402
+ # @example Request syntax with placeholder values
1403
+ #
1404
+ # resp = client.describe_rule_group({
1405
+ # rule_group_name: "ResourceName",
1406
+ # rule_group_arn: "ResourceArn",
1407
+ # type: "STATELESS", # accepts STATELESS, STATEFUL
1408
+ # })
1409
+ #
1410
+ # @example Response structure
1411
+ #
1412
+ # resp.update_token #=> String
1413
+ # resp.rule_group.rule_variables.ip_sets #=> Hash
1414
+ # resp.rule_group.rule_variables.ip_sets["RuleVariableName"].definition #=> Array
1415
+ # resp.rule_group.rule_variables.ip_sets["RuleVariableName"].definition[0] #=> String
1416
+ # resp.rule_group.rule_variables.port_sets #=> Hash
1417
+ # resp.rule_group.rule_variables.port_sets["RuleVariableName"].definition #=> Array
1418
+ # resp.rule_group.rule_variables.port_sets["RuleVariableName"].definition[0] #=> String
1419
+ # resp.rule_group.rules_source.rules_string #=> String
1420
+ # resp.rule_group.rules_source.rules_source_list.targets #=> Array
1421
+ # resp.rule_group.rules_source.rules_source_list.targets[0] #=> String
1422
+ # resp.rule_group.rules_source.rules_source_list.target_types #=> Array
1423
+ # resp.rule_group.rules_source.rules_source_list.target_types[0] #=> String, one of "TLS_SNI", "HTTP_HOST"
1424
+ # resp.rule_group.rules_source.rules_source_list.generated_rules_type #=> String, one of "ALLOWLIST", "DENYLIST"
1425
+ # resp.rule_group.rules_source.stateful_rules #=> Array
1426
+ # resp.rule_group.rules_source.stateful_rules[0].action #=> String, one of "PASS", "DROP", "ALERT"
1427
+ # resp.rule_group.rules_source.stateful_rules[0].header.protocol #=> String, one of "IP", "TCP", "UDP", "ICMP", "HTTP", "FTP", "TLS", "SMB", "DNS", "DCERPC", "SSH", "SMTP", "IMAP", "MSN", "KRB5", "IKEV2", "TFTP", "NTP", "DHCP"
1428
+ # resp.rule_group.rules_source.stateful_rules[0].header.source #=> String
1429
+ # resp.rule_group.rules_source.stateful_rules[0].header.source_port #=> String
1430
+ # resp.rule_group.rules_source.stateful_rules[0].header.direction #=> String, one of "FORWARD", "ANY"
1431
+ # resp.rule_group.rules_source.stateful_rules[0].header.destination #=> String
1432
+ # resp.rule_group.rules_source.stateful_rules[0].header.destination_port #=> String
1433
+ # resp.rule_group.rules_source.stateful_rules[0].rule_options #=> Array
1434
+ # resp.rule_group.rules_source.stateful_rules[0].rule_options[0].keyword #=> String
1435
+ # resp.rule_group.rules_source.stateful_rules[0].rule_options[0].settings #=> Array
1436
+ # resp.rule_group.rules_source.stateful_rules[0].rule_options[0].settings[0] #=> String
1437
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules #=> Array
1438
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.sources #=> Array
1439
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.sources[0].address_definition #=> String
1440
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.destinations #=> Array
1441
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.destinations[0].address_definition #=> String
1442
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.source_ports #=> Array
1443
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.source_ports[0].from_port #=> Integer
1444
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.source_ports[0].to_port #=> Integer
1445
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.destination_ports #=> Array
1446
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.destination_ports[0].from_port #=> Integer
1447
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.destination_ports[0].to_port #=> Integer
1448
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.protocols #=> Array
1449
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.protocols[0] #=> Integer
1450
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.tcp_flags #=> Array
1451
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.tcp_flags[0].flags #=> Array
1452
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.tcp_flags[0].flags[0] #=> String, one of "FIN", "SYN", "RST", "PSH", "ACK", "URG", "ECE", "CWR"
1453
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.tcp_flags[0].masks #=> Array
1454
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.match_attributes.tcp_flags[0].masks[0] #=> String, one of "FIN", "SYN", "RST", "PSH", "ACK", "URG", "ECE", "CWR"
1455
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.actions #=> Array
1456
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].rule_definition.actions[0] #=> String
1457
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.stateless_rules[0].priority #=> Integer
1458
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.custom_actions #=> Array
1459
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.custom_actions[0].action_name #=> String
1460
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.custom_actions[0].action_definition.publish_metric_action.dimensions #=> Array
1461
+ # resp.rule_group.rules_source.stateless_rules_and_custom_actions.custom_actions[0].action_definition.publish_metric_action.dimensions[0].value #=> String
1462
+ # resp.rule_group_response.rule_group_arn #=> String
1463
+ # resp.rule_group_response.rule_group_name #=> String
1464
+ # resp.rule_group_response.rule_group_id #=> String
1465
+ # resp.rule_group_response.description #=> String
1466
+ # resp.rule_group_response.type #=> String, one of "STATELESS", "STATEFUL"
1467
+ # resp.rule_group_response.capacity #=> Integer
1468
+ # resp.rule_group_response.rule_group_status #=> String, one of "ACTIVE", "DELETING"
1469
+ # resp.rule_group_response.tags #=> Array
1470
+ # resp.rule_group_response.tags[0].key #=> String
1471
+ # resp.rule_group_response.tags[0].value #=> String
1472
+ #
1473
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DescribeRuleGroup AWS API Documentation
1474
+ #
1475
+ # @overload describe_rule_group(params = {})
1476
+ # @param [Hash] params ({})
1477
+ def describe_rule_group(params = {}, options = {})
1478
+ req = build_request(:describe_rule_group, params)
1479
+ req.send_request(options)
1480
+ end
1481
+
1482
+ # Removes the specified subnet associations from the firewall. This
1483
+ # removes the firewall endpoints from the subnets and removes any
1484
+ # network filtering protections that the endpoints were providing.
1485
+ #
1486
+ # @option params [String] :update_token
1487
+ # An optional token that you can use for optimistic locking. Network
1488
+ # Firewall returns a token to your requests that access the firewall.
1489
+ # The token marks the state of the firewall resource at the time of the
1490
+ # request.
1491
+ #
1492
+ # To make an unconditional change to the firewall, omit the token in
1493
+ # your update request. Without the token, Network Firewall performs your
1494
+ # updates regardless of whether the firewall has changed since you last
1495
+ # retrieved it.
1496
+ #
1497
+ # To make a conditional change to the firewall, provide the token in
1498
+ # your update request. Network Firewall uses the token to ensure that
1499
+ # the firewall hasn't changed since you last retrieved it. If it has
1500
+ # changed, the operation fails with an `InvalidTokenException`. If this
1501
+ # happens, retrieve the firewall again to get a current copy of it with
1502
+ # a new token. Reapply your changes as needed, then try the operation
1503
+ # again using the new token.
1504
+ #
1505
+ # @option params [String] :firewall_arn
1506
+ # The Amazon Resource Name (ARN) of the firewall.
1507
+ #
1508
+ # You must specify the ARN or the name, and you can specify both.
1509
+ #
1510
+ # @option params [String] :firewall_name
1511
+ # The descriptive name of the firewall. You can't change the name of a
1512
+ # firewall after you create it.
1513
+ #
1514
+ # You must specify the ARN or the name, and you can specify both.
1515
+ #
1516
+ # @option params [required, Array<String>] :subnet_ids
1517
+ # The unique identifiers for the subnets that you want to disassociate.
1518
+ #
1519
+ # @return [Types::DisassociateSubnetsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1520
+ #
1521
+ # * {Types::DisassociateSubnetsResponse#firewall_arn #firewall_arn} => String
1522
+ # * {Types::DisassociateSubnetsResponse#firewall_name #firewall_name} => String
1523
+ # * {Types::DisassociateSubnetsResponse#subnet_mappings #subnet_mappings} => Array&lt;Types::SubnetMapping&gt;
1524
+ # * {Types::DisassociateSubnetsResponse#update_token #update_token} => String
1525
+ #
1526
+ # @example Request syntax with placeholder values
1527
+ #
1528
+ # resp = client.disassociate_subnets({
1529
+ # update_token: "UpdateToken",
1530
+ # firewall_arn: "ResourceArn",
1531
+ # firewall_name: "ResourceName",
1532
+ # subnet_ids: ["AzSubnet"], # required
1533
+ # })
1534
+ #
1535
+ # @example Response structure
1536
+ #
1537
+ # resp.firewall_arn #=> String
1538
+ # resp.firewall_name #=> String
1539
+ # resp.subnet_mappings #=> Array
1540
+ # resp.subnet_mappings[0].subnet_id #=> String
1541
+ # resp.update_token #=> String
1542
+ #
1543
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/DisassociateSubnets AWS API Documentation
1544
+ #
1545
+ # @overload disassociate_subnets(params = {})
1546
+ # @param [Hash] params ({})
1547
+ def disassociate_subnets(params = {}, options = {})
1548
+ req = build_request(:disassociate_subnets, params)
1549
+ req.send_request(options)
1550
+ end
1551
+
1552
+ # Retrieves the metadata for the firewall policies that you have
1553
+ # defined. Depending on your setting for max results and the number of
1554
+ # firewall policies, a single call might not return the full list.
1555
+ #
1556
+ # @option params [String] :next_token
1557
+ # When you request a list of objects with a `MaxResults` setting, if the
1558
+ # number of objects that are still available for retrieval exceeds the
1559
+ # maximum you requested, Network Firewall returns a `NextToken` value in
1560
+ # the response. To retrieve the next batch of objects, use the token
1561
+ # returned from the prior request in your next request.
1562
+ #
1563
+ # @option params [Integer] :max_results
1564
+ # The maximum number of objects that you want Network Firewall to return
1565
+ # for this request. If more objects are available, in the response,
1566
+ # Network Firewall provides a `NextToken` value that you can use in a
1567
+ # subsequent call to get the next batch of objects.
1568
+ #
1569
+ # @return [Types::ListFirewallPoliciesResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1570
+ #
1571
+ # * {Types::ListFirewallPoliciesResponse#next_token #next_token} => String
1572
+ # * {Types::ListFirewallPoliciesResponse#firewall_policies #firewall_policies} => Array&lt;Types::FirewallPolicyMetadata&gt;
1573
+ #
1574
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1575
+ #
1576
+ # @example Request syntax with placeholder values
1577
+ #
1578
+ # resp = client.list_firewall_policies({
1579
+ # next_token: "PaginationToken",
1580
+ # max_results: 1,
1581
+ # })
1582
+ #
1583
+ # @example Response structure
1584
+ #
1585
+ # resp.next_token #=> String
1586
+ # resp.firewall_policies #=> Array
1587
+ # resp.firewall_policies[0].name #=> String
1588
+ # resp.firewall_policies[0].arn #=> String
1589
+ #
1590
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewallPolicies AWS API Documentation
1591
+ #
1592
+ # @overload list_firewall_policies(params = {})
1593
+ # @param [Hash] params ({})
1594
+ def list_firewall_policies(params = {}, options = {})
1595
+ req = build_request(:list_firewall_policies, params)
1596
+ req.send_request(options)
1597
+ end
1598
+
1599
+ # Retrieves the metadata for the firewalls that you have defined. If you
1600
+ # provide VPC identifiers in your request, this returns only the
1601
+ # firewalls for those VPCs.
1602
+ #
1603
+ # Depending on your setting for max results and the number of firewalls,
1604
+ # a single call might not return the full list.
1605
+ #
1606
+ # @option params [String] :next_token
1607
+ # When you request a list of objects with a `MaxResults` setting, if the
1608
+ # number of objects that are still available for retrieval exceeds the
1609
+ # maximum you requested, Network Firewall returns a `NextToken` value in
1610
+ # the response. To retrieve the next batch of objects, use the token
1611
+ # returned from the prior request in your next request.
1612
+ #
1613
+ # @option params [Array<String>] :vpc_ids
1614
+ # The unique identifiers of the VPCs that you want Network Firewall to
1615
+ # retrieve the firewalls for. Leave this blank to retrieve all firewalls
1616
+ # that you have defined.
1617
+ #
1618
+ # @option params [Integer] :max_results
1619
+ # The maximum number of objects that you want Network Firewall to return
1620
+ # for this request. If more objects are available, in the response,
1621
+ # Network Firewall provides a `NextToken` value that you can use in a
1622
+ # subsequent call to get the next batch of objects.
1623
+ #
1624
+ # @return [Types::ListFirewallsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1625
+ #
1626
+ # * {Types::ListFirewallsResponse#next_token #next_token} => String
1627
+ # * {Types::ListFirewallsResponse#firewalls #firewalls} => Array&lt;Types::FirewallMetadata&gt;
1628
+ #
1629
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1630
+ #
1631
+ # @example Request syntax with placeholder values
1632
+ #
1633
+ # resp = client.list_firewalls({
1634
+ # next_token: "PaginationToken",
1635
+ # vpc_ids: ["VpcId"],
1636
+ # max_results: 1,
1637
+ # })
1638
+ #
1639
+ # @example Response structure
1640
+ #
1641
+ # resp.next_token #=> String
1642
+ # resp.firewalls #=> Array
1643
+ # resp.firewalls[0].firewall_name #=> String
1644
+ # resp.firewalls[0].firewall_arn #=> String
1645
+ #
1646
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListFirewalls AWS API Documentation
1647
+ #
1648
+ # @overload list_firewalls(params = {})
1649
+ # @param [Hash] params ({})
1650
+ def list_firewalls(params = {}, options = {})
1651
+ req = build_request(:list_firewalls, params)
1652
+ req.send_request(options)
1653
+ end
1654
+
1655
+ # Retrieves the metadata for the rule groups that you have defined.
1656
+ # Depending on your setting for max results and the number of rule
1657
+ # groups, a single call might not return the full list.
1658
+ #
1659
+ # @option params [String] :next_token
1660
+ # When you request a list of objects with a `MaxResults` setting, if the
1661
+ # number of objects that are still available for retrieval exceeds the
1662
+ # maximum you requested, Network Firewall returns a `NextToken` value in
1663
+ # the response. To retrieve the next batch of objects, use the token
1664
+ # returned from the prior request in your next request.
1665
+ #
1666
+ # @option params [Integer] :max_results
1667
+ # The maximum number of objects that you want Network Firewall to return
1668
+ # for this request. If more objects are available, in the response,
1669
+ # Network Firewall provides a `NextToken` value that you can use in a
1670
+ # subsequent call to get the next batch of objects.
1671
+ #
1672
+ # @return [Types::ListRuleGroupsResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1673
+ #
1674
+ # * {Types::ListRuleGroupsResponse#next_token #next_token} => String
1675
+ # * {Types::ListRuleGroupsResponse#rule_groups #rule_groups} => Array&lt;Types::RuleGroupMetadata&gt;
1676
+ #
1677
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1678
+ #
1679
+ # @example Request syntax with placeholder values
1680
+ #
1681
+ # resp = client.list_rule_groups({
1682
+ # next_token: "PaginationToken",
1683
+ # max_results: 1,
1684
+ # })
1685
+ #
1686
+ # @example Response structure
1687
+ #
1688
+ # resp.next_token #=> String
1689
+ # resp.rule_groups #=> Array
1690
+ # resp.rule_groups[0].name #=> String
1691
+ # resp.rule_groups[0].arn #=> String
1692
+ #
1693
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListRuleGroups AWS API Documentation
1694
+ #
1695
+ # @overload list_rule_groups(params = {})
1696
+ # @param [Hash] params ({})
1697
+ def list_rule_groups(params = {}, options = {})
1698
+ req = build_request(:list_rule_groups, params)
1699
+ req.send_request(options)
1700
+ end
1701
+
1702
+ # Retrieves the tags associated with the specified resource. Tags are
1703
+ # key:value pairs that you can use to categorize and manage your
1704
+ # resources, for purposes like billing. For example, you might set the
1705
+ # tag key to "customer" and the value to the customer name or ID. You
1706
+ # can specify one or more tags to add to each AWS resource, up to 50
1707
+ # tags for a resource.
1708
+ #
1709
+ # You can tag the AWS resources that you manage through AWS Network
1710
+ # Firewall: firewalls, firewall policies, and rule groups.
1711
+ #
1712
+ # @option params [String] :next_token
1713
+ # When you request a list of objects with a `MaxResults` setting, if the
1714
+ # number of objects that are still available for retrieval exceeds the
1715
+ # maximum you requested, Network Firewall returns a `NextToken` value in
1716
+ # the response. To retrieve the next batch of objects, use the token
1717
+ # returned from the prior request in your next request.
1718
+ #
1719
+ # @option params [Integer] :max_results
1720
+ # The maximum number of objects that you want Network Firewall to return
1721
+ # for this request. If more objects are available, in the response,
1722
+ # Network Firewall provides a `NextToken` value that you can use in a
1723
+ # subsequent call to get the next batch of objects.
1724
+ #
1725
+ # @option params [required, String] :resource_arn
1726
+ # The Amazon Resource Name (ARN) of the resource.
1727
+ #
1728
+ # @return [Types::ListTagsForResourceResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1729
+ #
1730
+ # * {Types::ListTagsForResourceResponse#next_token #next_token} => String
1731
+ # * {Types::ListTagsForResourceResponse#tags #tags} => Array&lt;Types::Tag&gt;
1732
+ #
1733
+ # The returned {Seahorse::Client::Response response} is a pageable response and is Enumerable. For details on usage see {Aws::PageableResponse PageableResponse}.
1734
+ #
1735
+ # @example Request syntax with placeholder values
1736
+ #
1737
+ # resp = client.list_tags_for_resource({
1738
+ # next_token: "PaginationToken",
1739
+ # max_results: 1,
1740
+ # resource_arn: "ResourceArn", # required
1741
+ # })
1742
+ #
1743
+ # @example Response structure
1744
+ #
1745
+ # resp.next_token #=> String
1746
+ # resp.tags #=> Array
1747
+ # resp.tags[0].key #=> String
1748
+ # resp.tags[0].value #=> String
1749
+ #
1750
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/ListTagsForResource AWS API Documentation
1751
+ #
1752
+ # @overload list_tags_for_resource(params = {})
1753
+ # @param [Hash] params ({})
1754
+ def list_tags_for_resource(params = {}, options = {})
1755
+ req = build_request(:list_tags_for_resource, params)
1756
+ req.send_request(options)
1757
+ end
1758
+
1759
+ # Creates or updates an AWS Identity and Access Management policy for
1760
+ # your rule group or firewall policy. Use this to share rule groups and
1761
+ # firewall policies between accounts. This operation works in
1762
+ # conjunction with the AWS Resource Access Manager (RAM) service to
1763
+ # manage resource sharing for Network Firewall.
1764
+ #
1765
+ # Use this operation to create or update a resource policy for your rule
1766
+ # group or firewall policy. In the policy, you specify the accounts that
1767
+ # you want to share the resource with and the operations that you want
1768
+ # the accounts to be able to perform.
1769
+ #
1770
+ # When you add an account in the resource policy, you then run the
1771
+ # following Resource Access Manager (RAM) operations to access and
1772
+ # accept the shared rule group or firewall policy.
1773
+ #
1774
+ # * [GetResourceShareInvitations][1] - Returns the Amazon Resource Names
1775
+ # (ARNs) of the resource share invitations.
1776
+ #
1777
+ # * [AcceptResourceShareInvitation][2] - Accepts the share invitation
1778
+ # for a specified resource share.
1779
+ #
1780
+ # For additional information about resource sharing using RAM, see [AWS
1781
+ # Resource Access Manager User Guide][3].
1782
+ #
1783
+ #
1784
+ #
1785
+ # [1]: https://docs.aws.amazon.com/ram/latest/APIReference/API_GetResourceShareInvitations.html
1786
+ # [2]: https://docs.aws.amazon.com/ram/latest/APIReference/API_AcceptResourceShareInvitation.html
1787
+ # [3]: https://docs.aws.amazon.com/ram/latest/userguide/what-is.html
1788
+ #
1789
+ # @option params [required, String] :resource_arn
1790
+ # The Amazon Resource Name (ARN) of the account that you want to share
1791
+ # rule groups and firewall policies with.
1792
+ #
1793
+ # @option params [required, String] :policy
1794
+ # The AWS Identity and Access Management policy statement that lists the
1795
+ # accounts that you want to share your rule group or firewall policy
1796
+ # with and the operations that you want the accounts to be able to
1797
+ # perform.
1798
+ #
1799
+ # For a rule group resource, you can specify the following operations in
1800
+ # the Actions section of the statement:
1801
+ #
1802
+ # * network-firewall:CreateFirewallPolicy
1803
+ #
1804
+ # * network-firewall:UpdateFirewallPolicy
1805
+ #
1806
+ # * network-firewall:ListRuleGroups
1807
+ #
1808
+ # For a firewall policy resource, you can specify the following
1809
+ # operations in the Actions section of the statement:
1810
+ #
1811
+ # * network-firewall:CreateFirewall
1812
+ #
1813
+ # * network-firewall:UpdateFirewall
1814
+ #
1815
+ # * network-firewall:AssociateFirewallPolicy
1816
+ #
1817
+ # * network-firewall:ListFirewallPolicies
1818
+ #
1819
+ # In the Resource section of the statement, you specify the ARNs for the
1820
+ # rule groups and firewall policies that you want to share with the
1821
+ # account that you specified in `Arn`.
1822
+ #
1823
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1824
+ #
1825
+ # @example Request syntax with placeholder values
1826
+ #
1827
+ # resp = client.put_resource_policy({
1828
+ # resource_arn: "ResourceArn", # required
1829
+ # policy: "PolicyString", # required
1830
+ # })
1831
+ #
1832
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/PutResourcePolicy AWS API Documentation
1833
+ #
1834
+ # @overload put_resource_policy(params = {})
1835
+ # @param [Hash] params ({})
1836
+ def put_resource_policy(params = {}, options = {})
1837
+ req = build_request(:put_resource_policy, params)
1838
+ req.send_request(options)
1839
+ end
1840
+
1841
+ # Adds the specified tags to the specified resource. Tags are key:value
1842
+ # pairs that you can use to categorize and manage your resources, for
1843
+ # purposes like billing. For example, you might set the tag key to
1844
+ # "customer" and the value to the customer name or ID. You can specify
1845
+ # one or more tags to add to each AWS resource, up to 50 tags for a
1846
+ # resource.
1847
+ #
1848
+ # You can tag the AWS resources that you manage through AWS Network
1849
+ # Firewall: firewalls, firewall policies, and rule groups.
1850
+ #
1851
+ # @option params [required, String] :resource_arn
1852
+ # The Amazon Resource Name (ARN) of the resource.
1853
+ #
1854
+ # @option params [required, Array<Types::Tag>] :tags
1855
+ #
1856
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1857
+ #
1858
+ # @example Request syntax with placeholder values
1859
+ #
1860
+ # resp = client.tag_resource({
1861
+ # resource_arn: "ResourceArn", # required
1862
+ # tags: [ # required
1863
+ # {
1864
+ # key: "TagKey", # required
1865
+ # value: "TagValue", # required
1866
+ # },
1867
+ # ],
1868
+ # })
1869
+ #
1870
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/TagResource AWS API Documentation
1871
+ #
1872
+ # @overload tag_resource(params = {})
1873
+ # @param [Hash] params ({})
1874
+ def tag_resource(params = {}, options = {})
1875
+ req = build_request(:tag_resource, params)
1876
+ req.send_request(options)
1877
+ end
1878
+
1879
+ # Removes the tags with the specified keys from the specified resource.
1880
+ # Tags are key:value pairs that you can use to categorize and manage
1881
+ # your resources, for purposes like billing. For example, you might set
1882
+ # the tag key to "customer" and the value to the customer name or ID.
1883
+ # You can specify one or more tags to add to each AWS resource, up to 50
1884
+ # tags for a resource.
1885
+ #
1886
+ # You can manage tags for the AWS resources that you manage through AWS
1887
+ # Network Firewall: firewalls, firewall policies, and rule groups.
1888
+ #
1889
+ # @option params [required, String] :resource_arn
1890
+ # The Amazon Resource Name (ARN) of the resource.
1891
+ #
1892
+ # @option params [required, Array<String>] :tag_keys
1893
+ #
1894
+ # @return [Struct] Returns an empty {Seahorse::Client::Response response}.
1895
+ #
1896
+ # @example Request syntax with placeholder values
1897
+ #
1898
+ # resp = client.untag_resource({
1899
+ # resource_arn: "ResourceArn", # required
1900
+ # tag_keys: ["TagKey"], # required
1901
+ # })
1902
+ #
1903
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UntagResource AWS API Documentation
1904
+ #
1905
+ # @overload untag_resource(params = {})
1906
+ # @param [Hash] params ({})
1907
+ def untag_resource(params = {}, options = {})
1908
+ req = build_request(:untag_resource, params)
1909
+ req.send_request(options)
1910
+ end
1911
+
1912
+ # Modifies the flag, `DeleteProtection`, which indicates whether it is
1913
+ # possible to delete the firewall. If the flag is set to `TRUE`, the
1914
+ # firewall is protected against deletion. This setting helps protect
1915
+ # against accidentally deleting a firewall that's in use.
1916
+ #
1917
+ # @option params [String] :update_token
1918
+ # An optional token that you can use for optimistic locking. Network
1919
+ # Firewall returns a token to your requests that access the firewall.
1920
+ # The token marks the state of the firewall resource at the time of the
1921
+ # request.
1922
+ #
1923
+ # To make an unconditional change to the firewall, omit the token in
1924
+ # your update request. Without the token, Network Firewall performs your
1925
+ # updates regardless of whether the firewall has changed since you last
1926
+ # retrieved it.
1927
+ #
1928
+ # To make a conditional change to the firewall, provide the token in
1929
+ # your update request. Network Firewall uses the token to ensure that
1930
+ # the firewall hasn't changed since you last retrieved it. If it has
1931
+ # changed, the operation fails with an `InvalidTokenException`. If this
1932
+ # happens, retrieve the firewall again to get a current copy of it with
1933
+ # a new token. Reapply your changes as needed, then try the operation
1934
+ # again using the new token.
1935
+ #
1936
+ # @option params [String] :firewall_arn
1937
+ # The Amazon Resource Name (ARN) of the firewall.
1938
+ #
1939
+ # You must specify the ARN or the name, and you can specify both.
1940
+ #
1941
+ # @option params [String] :firewall_name
1942
+ # The descriptive name of the firewall. You can't change the name of a
1943
+ # firewall after you create it.
1944
+ #
1945
+ # You must specify the ARN or the name, and you can specify both.
1946
+ #
1947
+ # @option params [required, Boolean] :delete_protection
1948
+ # A flag indicating whether it is possible to delete the firewall. A
1949
+ # setting of `TRUE` indicates that the firewall is protected against
1950
+ # deletion. Use this setting to protect against accidentally deleting a
1951
+ # firewall that is in use. When you create a firewall, the operation
1952
+ # initializes this flag to `TRUE`.
1953
+ #
1954
+ # @return [Types::UpdateFirewallDeleteProtectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
1955
+ #
1956
+ # * {Types::UpdateFirewallDeleteProtectionResponse#firewall_arn #firewall_arn} => String
1957
+ # * {Types::UpdateFirewallDeleteProtectionResponse#firewall_name #firewall_name} => String
1958
+ # * {Types::UpdateFirewallDeleteProtectionResponse#delete_protection #delete_protection} => Boolean
1959
+ # * {Types::UpdateFirewallDeleteProtectionResponse#update_token #update_token} => String
1960
+ #
1961
+ # @example Request syntax with placeholder values
1962
+ #
1963
+ # resp = client.update_firewall_delete_protection({
1964
+ # update_token: "UpdateToken",
1965
+ # firewall_arn: "ResourceArn",
1966
+ # firewall_name: "ResourceName",
1967
+ # delete_protection: false, # required
1968
+ # })
1969
+ #
1970
+ # @example Response structure
1971
+ #
1972
+ # resp.firewall_arn #=> String
1973
+ # resp.firewall_name #=> String
1974
+ # resp.delete_protection #=> Boolean
1975
+ # resp.update_token #=> String
1976
+ #
1977
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDeleteProtection AWS API Documentation
1978
+ #
1979
+ # @overload update_firewall_delete_protection(params = {})
1980
+ # @param [Hash] params ({})
1981
+ def update_firewall_delete_protection(params = {}, options = {})
1982
+ req = build_request(:update_firewall_delete_protection, params)
1983
+ req.send_request(options)
1984
+ end
1985
+
1986
+ # Modifies the description for the specified firewall. Use the
1987
+ # description to help you identify the firewall when you're working
1988
+ # with it.
1989
+ #
1990
+ # @option params [String] :update_token
1991
+ # An optional token that you can use for optimistic locking. Network
1992
+ # Firewall returns a token to your requests that access the firewall.
1993
+ # The token marks the state of the firewall resource at the time of the
1994
+ # request.
1995
+ #
1996
+ # To make an unconditional change to the firewall, omit the token in
1997
+ # your update request. Without the token, Network Firewall performs your
1998
+ # updates regardless of whether the firewall has changed since you last
1999
+ # retrieved it.
2000
+ #
2001
+ # To make a conditional change to the firewall, provide the token in
2002
+ # your update request. Network Firewall uses the token to ensure that
2003
+ # the firewall hasn't changed since you last retrieved it. If it has
2004
+ # changed, the operation fails with an `InvalidTokenException`. If this
2005
+ # happens, retrieve the firewall again to get a current copy of it with
2006
+ # a new token. Reapply your changes as needed, then try the operation
2007
+ # again using the new token.
2008
+ #
2009
+ # @option params [String] :firewall_arn
2010
+ # The Amazon Resource Name (ARN) of the firewall.
2011
+ #
2012
+ # You must specify the ARN or the name, and you can specify both.
2013
+ #
2014
+ # @option params [String] :firewall_name
2015
+ # The descriptive name of the firewall. You can't change the name of a
2016
+ # firewall after you create it.
2017
+ #
2018
+ # You must specify the ARN or the name, and you can specify both.
2019
+ #
2020
+ # @option params [String] :description
2021
+ # The new description for the firewall. If you omit this setting,
2022
+ # Network Firewall removes the description for the firewall.
2023
+ #
2024
+ # @return [Types::UpdateFirewallDescriptionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2025
+ #
2026
+ # * {Types::UpdateFirewallDescriptionResponse#firewall_arn #firewall_arn} => String
2027
+ # * {Types::UpdateFirewallDescriptionResponse#firewall_name #firewall_name} => String
2028
+ # * {Types::UpdateFirewallDescriptionResponse#description #description} => String
2029
+ # * {Types::UpdateFirewallDescriptionResponse#update_token #update_token} => String
2030
+ #
2031
+ # @example Request syntax with placeholder values
2032
+ #
2033
+ # resp = client.update_firewall_description({
2034
+ # update_token: "UpdateToken",
2035
+ # firewall_arn: "ResourceArn",
2036
+ # firewall_name: "ResourceName",
2037
+ # description: "Description",
2038
+ # })
2039
+ #
2040
+ # @example Response structure
2041
+ #
2042
+ # resp.firewall_arn #=> String
2043
+ # resp.firewall_name #=> String
2044
+ # resp.description #=> String
2045
+ # resp.update_token #=> String
2046
+ #
2047
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallDescription AWS API Documentation
2048
+ #
2049
+ # @overload update_firewall_description(params = {})
2050
+ # @param [Hash] params ({})
2051
+ def update_firewall_description(params = {}, options = {})
2052
+ req = build_request(:update_firewall_description, params)
2053
+ req.send_request(options)
2054
+ end
2055
+
2056
+ # Updates the properties of the specified firewall policy.
2057
+ #
2058
+ # @option params [required, String] :update_token
2059
+ # A token used for optimistic locking. Network Firewall returns a token
2060
+ # to your requests that access the firewall policy. The token marks the
2061
+ # state of the policy resource at the time of the request.
2062
+ #
2063
+ # To make changes to the policy, you provide the token in your request.
2064
+ # Network Firewall uses the token to ensure that the policy hasn't
2065
+ # changed since you last retrieved it. If it has changed, the operation
2066
+ # fails with an `InvalidTokenException`. If this happens, retrieve the
2067
+ # firewall policy again to get a current copy of it with current token.
2068
+ # Reapply your changes as needed, then try the operation again using the
2069
+ # new token.
2070
+ #
2071
+ # @option params [String] :firewall_policy_arn
2072
+ # The Amazon Resource Name (ARN) of the firewall policy.
2073
+ #
2074
+ # You must specify the ARN or the name, and you can specify both.
2075
+ #
2076
+ # @option params [String] :firewall_policy_name
2077
+ # The descriptive name of the firewall policy. You can't change the
2078
+ # name of a firewall policy after you create it.
2079
+ #
2080
+ # You must specify the ARN or the name, and you can specify both.
2081
+ #
2082
+ # @option params [required, Types::FirewallPolicy] :firewall_policy
2083
+ # The updated firewall policy to use for the firewall.
2084
+ #
2085
+ # @option params [String] :description
2086
+ # A description of the firewall policy.
2087
+ #
2088
+ # @option params [Boolean] :dry_run
2089
+ # Indicates whether you want Network Firewall to just check the validity
2090
+ # of the request, rather than run the request.
2091
+ #
2092
+ # If set to `TRUE`, Network Firewall checks whether the request can run
2093
+ # successfully, but doesn't actually make the requested changes. The
2094
+ # call returns the value that the request would return if you ran it
2095
+ # with dry run set to `FALSE`, but doesn't make additions or changes to
2096
+ # your resources. This option allows you to make sure that you have the
2097
+ # required permissions to run the request and that your request
2098
+ # parameters are valid.
2099
+ #
2100
+ # If set to `FALSE`, Network Firewall makes the requested changes to
2101
+ # your resources.
2102
+ #
2103
+ # @return [Types::UpdateFirewallPolicyResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2104
+ #
2105
+ # * {Types::UpdateFirewallPolicyResponse#update_token #update_token} => String
2106
+ # * {Types::UpdateFirewallPolicyResponse#firewall_policy_response #firewall_policy_response} => Types::FirewallPolicyResponse
2107
+ #
2108
+ # @example Request syntax with placeholder values
2109
+ #
2110
+ # resp = client.update_firewall_policy({
2111
+ # update_token: "UpdateToken", # required
2112
+ # firewall_policy_arn: "ResourceArn",
2113
+ # firewall_policy_name: "ResourceName",
2114
+ # firewall_policy: { # required
2115
+ # stateless_rule_group_references: [
2116
+ # {
2117
+ # resource_arn: "ResourceArn", # required
2118
+ # priority: 1, # required
2119
+ # },
2120
+ # ],
2121
+ # stateless_default_actions: ["CollectionMember_String"], # required
2122
+ # stateless_fragment_default_actions: ["CollectionMember_String"], # required
2123
+ # stateless_custom_actions: [
2124
+ # {
2125
+ # action_name: "ActionName", # required
2126
+ # action_definition: { # required
2127
+ # publish_metric_action: {
2128
+ # dimensions: [ # required
2129
+ # {
2130
+ # value: "DimensionValue", # required
2131
+ # },
2132
+ # ],
2133
+ # },
2134
+ # },
2135
+ # },
2136
+ # ],
2137
+ # stateful_rule_group_references: [
2138
+ # {
2139
+ # resource_arn: "ResourceArn", # required
2140
+ # },
2141
+ # ],
2142
+ # },
2143
+ # description: "Description",
2144
+ # dry_run: false,
2145
+ # })
2146
+ #
2147
+ # @example Response structure
2148
+ #
2149
+ # resp.update_token #=> String
2150
+ # resp.firewall_policy_response.firewall_policy_name #=> String
2151
+ # resp.firewall_policy_response.firewall_policy_arn #=> String
2152
+ # resp.firewall_policy_response.firewall_policy_id #=> String
2153
+ # resp.firewall_policy_response.description #=> String
2154
+ # resp.firewall_policy_response.firewall_policy_status #=> String, one of "ACTIVE", "DELETING"
2155
+ # resp.firewall_policy_response.tags #=> Array
2156
+ # resp.firewall_policy_response.tags[0].key #=> String
2157
+ # resp.firewall_policy_response.tags[0].value #=> String
2158
+ #
2159
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicy AWS API Documentation
2160
+ #
2161
+ # @overload update_firewall_policy(params = {})
2162
+ # @param [Hash] params ({})
2163
+ def update_firewall_policy(params = {}, options = {})
2164
+ req = build_request(:update_firewall_policy, params)
2165
+ req.send_request(options)
2166
+ end
2167
+
2168
+ # @option params [String] :update_token
2169
+ # An optional token that you can use for optimistic locking. Network
2170
+ # Firewall returns a token to your requests that access the firewall.
2171
+ # The token marks the state of the firewall resource at the time of the
2172
+ # request.
2173
+ #
2174
+ # To make an unconditional change to the firewall, omit the token in
2175
+ # your update request. Without the token, Network Firewall performs your
2176
+ # updates regardless of whether the firewall has changed since you last
2177
+ # retrieved it.
2178
+ #
2179
+ # To make a conditional change to the firewall, provide the token in
2180
+ # your update request. Network Firewall uses the token to ensure that
2181
+ # the firewall hasn't changed since you last retrieved it. If it has
2182
+ # changed, the operation fails with an `InvalidTokenException`. If this
2183
+ # happens, retrieve the firewall again to get a current copy of it with
2184
+ # a new token. Reapply your changes as needed, then try the operation
2185
+ # again using the new token.
2186
+ #
2187
+ # @option params [String] :firewall_arn
2188
+ # The Amazon Resource Name (ARN) of the firewall.
2189
+ #
2190
+ # You must specify the ARN or the name, and you can specify both.
2191
+ #
2192
+ # @option params [String] :firewall_name
2193
+ # The descriptive name of the firewall. You can't change the name of a
2194
+ # firewall after you create it.
2195
+ #
2196
+ # You must specify the ARN or the name, and you can specify both.
2197
+ #
2198
+ # @option params [required, Boolean] :firewall_policy_change_protection
2199
+ # A setting indicating whether the firewall is protected against a
2200
+ # change to the firewall policy association. Use this setting to protect
2201
+ # against accidentally modifying the firewall policy for a firewall that
2202
+ # is in use. When you create a firewall, the operation initializes this
2203
+ # setting to `TRUE`.
2204
+ #
2205
+ # @return [Types::UpdateFirewallPolicyChangeProtectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2206
+ #
2207
+ # * {Types::UpdateFirewallPolicyChangeProtectionResponse#update_token #update_token} => String
2208
+ # * {Types::UpdateFirewallPolicyChangeProtectionResponse#firewall_arn #firewall_arn} => String
2209
+ # * {Types::UpdateFirewallPolicyChangeProtectionResponse#firewall_name #firewall_name} => String
2210
+ # * {Types::UpdateFirewallPolicyChangeProtectionResponse#firewall_policy_change_protection #firewall_policy_change_protection} => Boolean
2211
+ #
2212
+ # @example Request syntax with placeholder values
2213
+ #
2214
+ # resp = client.update_firewall_policy_change_protection({
2215
+ # update_token: "UpdateToken",
2216
+ # firewall_arn: "ResourceArn",
2217
+ # firewall_name: "ResourceName",
2218
+ # firewall_policy_change_protection: false, # required
2219
+ # })
2220
+ #
2221
+ # @example Response structure
2222
+ #
2223
+ # resp.update_token #=> String
2224
+ # resp.firewall_arn #=> String
2225
+ # resp.firewall_name #=> String
2226
+ # resp.firewall_policy_change_protection #=> Boolean
2227
+ #
2228
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateFirewallPolicyChangeProtection AWS API Documentation
2229
+ #
2230
+ # @overload update_firewall_policy_change_protection(params = {})
2231
+ # @param [Hash] params ({})
2232
+ def update_firewall_policy_change_protection(params = {}, options = {})
2233
+ req = build_request(:update_firewall_policy_change_protection, params)
2234
+ req.send_request(options)
2235
+ end
2236
+
2237
+ # Sets the logging configuration for the specified firewall.
2238
+ #
2239
+ # To change the logging configuration, retrieve the LoggingConfiguration
2240
+ # by calling DescribeLoggingConfiguration, then change it and provide
2241
+ # the modified object to this update call. You must change the logging
2242
+ # configuration one LogDestinationConfig at a time inside the retrieved
2243
+ # LoggingConfiguration object.
2244
+ #
2245
+ # You can perform only one of the following actions in any call to
2246
+ # `UpdateLoggingConfiguration`\:
2247
+ #
2248
+ # * Create a new log destination object by adding a single
2249
+ # `LogDestinationConfig` array element to `LogDestinationConfigs`.
2250
+ #
2251
+ # * Delete a log destination object by removing a single
2252
+ # `LogDestinationConfig` array element from `LogDestinationConfigs`.
2253
+ #
2254
+ # * Change the `LogDestination` setting in a single
2255
+ # `LogDestinationConfig` array element.
2256
+ #
2257
+ # You can't change the `LogDestinationType` or `LogType` in a
2258
+ # `LogDestinationConfig`. To change these settings, delete the existing
2259
+ # `LogDestinationConfig` object and create a new one, using two separate
2260
+ # calls to this update operation.
2261
+ #
2262
+ # @option params [String] :firewall_arn
2263
+ # The Amazon Resource Name (ARN) of the firewall.
2264
+ #
2265
+ # You must specify the ARN or the name, and you can specify both.
2266
+ #
2267
+ # @option params [String] :firewall_name
2268
+ # The descriptive name of the firewall. You can't change the name of a
2269
+ # firewall after you create it.
2270
+ #
2271
+ # You must specify the ARN or the name, and you can specify both.
2272
+ #
2273
+ # @option params [Types::LoggingConfiguration] :logging_configuration
2274
+ # Defines how Network Firewall performs logging for a firewall. If you
2275
+ # omit this setting, Network Firewall disables logging for the firewall.
2276
+ #
2277
+ # @return [Types::UpdateLoggingConfigurationResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2278
+ #
2279
+ # * {Types::UpdateLoggingConfigurationResponse#firewall_arn #firewall_arn} => String
2280
+ # * {Types::UpdateLoggingConfigurationResponse#firewall_name #firewall_name} => String
2281
+ # * {Types::UpdateLoggingConfigurationResponse#logging_configuration #logging_configuration} => Types::LoggingConfiguration
2282
+ #
2283
+ # @example Request syntax with placeholder values
2284
+ #
2285
+ # resp = client.update_logging_configuration({
2286
+ # firewall_arn: "ResourceArn",
2287
+ # firewall_name: "ResourceName",
2288
+ # logging_configuration: {
2289
+ # log_destination_configs: [ # required
2290
+ # {
2291
+ # log_type: "ALERT", # required, accepts ALERT, FLOW
2292
+ # log_destination_type: "S3", # required, accepts S3, CloudWatchLogs, KinesisDataFirehose
2293
+ # log_destination: { # required
2294
+ # "HashMapKey" => "HashMapValue",
2295
+ # },
2296
+ # },
2297
+ # ],
2298
+ # },
2299
+ # })
2300
+ #
2301
+ # @example Response structure
2302
+ #
2303
+ # resp.firewall_arn #=> String
2304
+ # resp.firewall_name #=> String
2305
+ # resp.logging_configuration.log_destination_configs #=> Array
2306
+ # resp.logging_configuration.log_destination_configs[0].log_type #=> String, one of "ALERT", "FLOW"
2307
+ # resp.logging_configuration.log_destination_configs[0].log_destination_type #=> String, one of "S3", "CloudWatchLogs", "KinesisDataFirehose"
2308
+ # resp.logging_configuration.log_destination_configs[0].log_destination #=> Hash
2309
+ # resp.logging_configuration.log_destination_configs[0].log_destination["HashMapKey"] #=> String
2310
+ #
2311
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateLoggingConfiguration AWS API Documentation
2312
+ #
2313
+ # @overload update_logging_configuration(params = {})
2314
+ # @param [Hash] params ({})
2315
+ def update_logging_configuration(params = {}, options = {})
2316
+ req = build_request(:update_logging_configuration, params)
2317
+ req.send_request(options)
2318
+ end
2319
+
2320
+ # Updates the rule settings for the specified rule group. You use a rule
2321
+ # group by reference in one or more firewall policies. When you modify a
2322
+ # rule group, you modify all firewall policies that use the rule group.
2323
+ #
2324
+ # To update a rule group, first call DescribeRuleGroup to retrieve the
2325
+ # current RuleGroup object, update the object as needed, and then
2326
+ # provide the updated object to this call.
2327
+ #
2328
+ # @option params [required, String] :update_token
2329
+ # A token used for optimistic locking. Network Firewall returns a token
2330
+ # to your requests that access the rule group. The token marks the state
2331
+ # of the rule group resource at the time of the request.
2332
+ #
2333
+ # To make changes to the rule group, you provide the token in your
2334
+ # request. Network Firewall uses the token to ensure that the rule group
2335
+ # hasn't changed since you last retrieved it. If it has changed, the
2336
+ # operation fails with an `InvalidTokenException`. If this happens,
2337
+ # retrieve the rule group again to get a current copy of it with a
2338
+ # current token. Reapply your changes as needed, then try the operation
2339
+ # again using the new token.
2340
+ #
2341
+ # @option params [String] :rule_group_arn
2342
+ # The Amazon Resource Name (ARN) of the rule group.
2343
+ #
2344
+ # You must specify the ARN or the name, and you can specify both.
2345
+ #
2346
+ # @option params [String] :rule_group_name
2347
+ # The descriptive name of the rule group. You can't change the name of
2348
+ # a rule group after you create it.
2349
+ #
2350
+ # You must specify the ARN or the name, and you can specify both.
2351
+ #
2352
+ # @option params [Types::RuleGroup] :rule_group
2353
+ # An object that defines the rule group rules.
2354
+ #
2355
+ # <note markdown="1"> You must provide either this rule group setting or a `Rules` setting,
2356
+ # but not both.
2357
+ #
2358
+ # </note>
2359
+ #
2360
+ # @option params [String] :rules
2361
+ # The name of a file containing stateful rule group rules specifications
2362
+ # in Suricata flat format, with one rule per line. Use this to import
2363
+ # your existing Suricata compatible rule groups.
2364
+ #
2365
+ # <note markdown="1"> You must provide either this rules setting or a populated `RuleGroup`
2366
+ # setting, but not both.
2367
+ #
2368
+ # </note>
2369
+ #
2370
+ # You can provide your rule group specification in a file through this
2371
+ # setting when you create or update your rule group. The call response
2372
+ # returns a RuleGroup object that Network Firewall has populated from
2373
+ # your file. Network Firewall uses the file contents to populate the
2374
+ # rule group rules, but does not maintain a reference to the file or use
2375
+ # the file in any way after performing the create or update. If you call
2376
+ # DescribeRuleGroup to retrieve the rule group, Network Firewall returns
2377
+ # rules settings inside a RuleGroup object.
2378
+ #
2379
+ # @option params [String] :type
2380
+ # Indicates whether the rule group is stateless or stateful. If the rule
2381
+ # group is stateless, it contains stateless rules. If it is stateful, it
2382
+ # contains stateful rules.
2383
+ #
2384
+ # <note markdown="1"> This setting is required for requests that do not include the
2385
+ # `RuleGroupARN`.
2386
+ #
2387
+ # </note>
2388
+ #
2389
+ # @option params [String] :description
2390
+ # A description of the rule group.
2391
+ #
2392
+ # @option params [Boolean] :dry_run
2393
+ # Indicates whether you want Network Firewall to just check the validity
2394
+ # of the request, rather than run the request.
2395
+ #
2396
+ # If set to `TRUE`, Network Firewall checks whether the request can run
2397
+ # successfully, but doesn't actually make the requested changes. The
2398
+ # call returns the value that the request would return if you ran it
2399
+ # with dry run set to `FALSE`, but doesn't make additions or changes to
2400
+ # your resources. This option allows you to make sure that you have the
2401
+ # required permissions to run the request and that your request
2402
+ # parameters are valid.
2403
+ #
2404
+ # If set to `FALSE`, Network Firewall makes the requested changes to
2405
+ # your resources.
2406
+ #
2407
+ # @return [Types::UpdateRuleGroupResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2408
+ #
2409
+ # * {Types::UpdateRuleGroupResponse#update_token #update_token} => String
2410
+ # * {Types::UpdateRuleGroupResponse#rule_group_response #rule_group_response} => Types::RuleGroupResponse
2411
+ #
2412
+ # @example Request syntax with placeholder values
2413
+ #
2414
+ # resp = client.update_rule_group({
2415
+ # update_token: "UpdateToken", # required
2416
+ # rule_group_arn: "ResourceArn",
2417
+ # rule_group_name: "ResourceName",
2418
+ # rule_group: {
2419
+ # rule_variables: {
2420
+ # ip_sets: {
2421
+ # "RuleVariableName" => {
2422
+ # definition: ["VariableDefinition"], # required
2423
+ # },
2424
+ # },
2425
+ # port_sets: {
2426
+ # "RuleVariableName" => {
2427
+ # definition: ["VariableDefinition"],
2428
+ # },
2429
+ # },
2430
+ # },
2431
+ # rules_source: { # required
2432
+ # rules_string: "RulesString",
2433
+ # rules_source_list: {
2434
+ # targets: ["CollectionMember_String"], # required
2435
+ # target_types: ["TLS_SNI"], # required, accepts TLS_SNI, HTTP_HOST
2436
+ # generated_rules_type: "ALLOWLIST", # required, accepts ALLOWLIST, DENYLIST
2437
+ # },
2438
+ # stateful_rules: [
2439
+ # {
2440
+ # action: "PASS", # required, accepts PASS, DROP, ALERT
2441
+ # header: { # required
2442
+ # protocol: "IP", # required, accepts IP, TCP, UDP, ICMP, HTTP, FTP, TLS, SMB, DNS, DCERPC, SSH, SMTP, IMAP, MSN, KRB5, IKEV2, TFTP, NTP, DHCP
2443
+ # source: "Source", # required
2444
+ # source_port: "Port", # required
2445
+ # direction: "FORWARD", # required, accepts FORWARD, ANY
2446
+ # destination: "Destination", # required
2447
+ # destination_port: "Port", # required
2448
+ # },
2449
+ # rule_options: [ # required
2450
+ # {
2451
+ # keyword: "Keyword", # required
2452
+ # settings: ["Setting"],
2453
+ # },
2454
+ # ],
2455
+ # },
2456
+ # ],
2457
+ # stateless_rules_and_custom_actions: {
2458
+ # stateless_rules: [ # required
2459
+ # {
2460
+ # rule_definition: { # required
2461
+ # match_attributes: { # required
2462
+ # sources: [
2463
+ # {
2464
+ # address_definition: "AddressDefinition", # required
2465
+ # },
2466
+ # ],
2467
+ # destinations: [
2468
+ # {
2469
+ # address_definition: "AddressDefinition", # required
2470
+ # },
2471
+ # ],
2472
+ # source_ports: [
2473
+ # {
2474
+ # from_port: 1, # required
2475
+ # to_port: 1, # required
2476
+ # },
2477
+ # ],
2478
+ # destination_ports: [
2479
+ # {
2480
+ # from_port: 1, # required
2481
+ # to_port: 1, # required
2482
+ # },
2483
+ # ],
2484
+ # protocols: [1],
2485
+ # tcp_flags: [
2486
+ # {
2487
+ # flags: ["FIN"], # required, accepts FIN, SYN, RST, PSH, ACK, URG, ECE, CWR
2488
+ # masks: ["FIN"], # accepts FIN, SYN, RST, PSH, ACK, URG, ECE, CWR
2489
+ # },
2490
+ # ],
2491
+ # },
2492
+ # actions: ["CollectionMember_String"], # required
2493
+ # },
2494
+ # priority: 1, # required
2495
+ # },
2496
+ # ],
2497
+ # custom_actions: [
2498
+ # {
2499
+ # action_name: "ActionName", # required
2500
+ # action_definition: { # required
2501
+ # publish_metric_action: {
2502
+ # dimensions: [ # required
2503
+ # {
2504
+ # value: "DimensionValue", # required
2505
+ # },
2506
+ # ],
2507
+ # },
2508
+ # },
2509
+ # },
2510
+ # ],
2511
+ # },
2512
+ # },
2513
+ # },
2514
+ # rules: "RulesString",
2515
+ # type: "STATELESS", # accepts STATELESS, STATEFUL
2516
+ # description: "Description",
2517
+ # dry_run: false,
2518
+ # })
2519
+ #
2520
+ # @example Response structure
2521
+ #
2522
+ # resp.update_token #=> String
2523
+ # resp.rule_group_response.rule_group_arn #=> String
2524
+ # resp.rule_group_response.rule_group_name #=> String
2525
+ # resp.rule_group_response.rule_group_id #=> String
2526
+ # resp.rule_group_response.description #=> String
2527
+ # resp.rule_group_response.type #=> String, one of "STATELESS", "STATEFUL"
2528
+ # resp.rule_group_response.capacity #=> Integer
2529
+ # resp.rule_group_response.rule_group_status #=> String, one of "ACTIVE", "DELETING"
2530
+ # resp.rule_group_response.tags #=> Array
2531
+ # resp.rule_group_response.tags[0].key #=> String
2532
+ # resp.rule_group_response.tags[0].value #=> String
2533
+ #
2534
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateRuleGroup AWS API Documentation
2535
+ #
2536
+ # @overload update_rule_group(params = {})
2537
+ # @param [Hash] params ({})
2538
+ def update_rule_group(params = {}, options = {})
2539
+ req = build_request(:update_rule_group, params)
2540
+ req.send_request(options)
2541
+ end
2542
+
2543
+ # @option params [String] :update_token
2544
+ # An optional token that you can use for optimistic locking. Network
2545
+ # Firewall returns a token to your requests that access the firewall.
2546
+ # The token marks the state of the firewall resource at the time of the
2547
+ # request.
2548
+ #
2549
+ # To make an unconditional change to the firewall, omit the token in
2550
+ # your update request. Without the token, Network Firewall performs your
2551
+ # updates regardless of whether the firewall has changed since you last
2552
+ # retrieved it.
2553
+ #
2554
+ # To make a conditional change to the firewall, provide the token in
2555
+ # your update request. Network Firewall uses the token to ensure that
2556
+ # the firewall hasn't changed since you last retrieved it. If it has
2557
+ # changed, the operation fails with an `InvalidTokenException`. If this
2558
+ # happens, retrieve the firewall again to get a current copy of it with
2559
+ # a new token. Reapply your changes as needed, then try the operation
2560
+ # again using the new token.
2561
+ #
2562
+ # @option params [String] :firewall_arn
2563
+ # The Amazon Resource Name (ARN) of the firewall.
2564
+ #
2565
+ # You must specify the ARN or the name, and you can specify both.
2566
+ #
2567
+ # @option params [String] :firewall_name
2568
+ # The descriptive name of the firewall. You can't change the name of a
2569
+ # firewall after you create it.
2570
+ #
2571
+ # You must specify the ARN or the name, and you can specify both.
2572
+ #
2573
+ # @option params [required, Boolean] :subnet_change_protection
2574
+ # A setting indicating whether the firewall is protected against changes
2575
+ # to the subnet associations. Use this setting to protect against
2576
+ # accidentally modifying the subnet associations for a firewall that is
2577
+ # in use. When you create a firewall, the operation initializes this
2578
+ # setting to `TRUE`.
2579
+ #
2580
+ # @return [Types::UpdateSubnetChangeProtectionResponse] Returns a {Seahorse::Client::Response response} object which responds to the following methods:
2581
+ #
2582
+ # * {Types::UpdateSubnetChangeProtectionResponse#update_token #update_token} => String
2583
+ # * {Types::UpdateSubnetChangeProtectionResponse#firewall_arn #firewall_arn} => String
2584
+ # * {Types::UpdateSubnetChangeProtectionResponse#firewall_name #firewall_name} => String
2585
+ # * {Types::UpdateSubnetChangeProtectionResponse#subnet_change_protection #subnet_change_protection} => Boolean
2586
+ #
2587
+ # @example Request syntax with placeholder values
2588
+ #
2589
+ # resp = client.update_subnet_change_protection({
2590
+ # update_token: "UpdateToken",
2591
+ # firewall_arn: "ResourceArn",
2592
+ # firewall_name: "ResourceName",
2593
+ # subnet_change_protection: false, # required
2594
+ # })
2595
+ #
2596
+ # @example Response structure
2597
+ #
2598
+ # resp.update_token #=> String
2599
+ # resp.firewall_arn #=> String
2600
+ # resp.firewall_name #=> String
2601
+ # resp.subnet_change_protection #=> Boolean
2602
+ #
2603
+ # @see http://docs.aws.amazon.com/goto/WebAPI/network-firewall-2020-11-12/UpdateSubnetChangeProtection AWS API Documentation
2604
+ #
2605
+ # @overload update_subnet_change_protection(params = {})
2606
+ # @param [Hash] params ({})
2607
+ def update_subnet_change_protection(params = {}, options = {})
2608
+ req = build_request(:update_subnet_change_protection, params)
2609
+ req.send_request(options)
2610
+ end
2611
+
2612
+ # @!endgroup
2613
+
2614
+ # @param params ({})
2615
+ # @api private
2616
+ def build_request(operation_name, params = {})
2617
+ handlers = @handlers.for(operation_name)
2618
+ context = Seahorse::Client::RequestContext.new(
2619
+ operation_name: operation_name,
2620
+ operation: config.api.operation(operation_name),
2621
+ client: self,
2622
+ params: params,
2623
+ config: config)
2624
+ context[:gem_name] = 'aws-sdk-networkfirewall'
2625
+ context[:gem_version] = '1.0.0'
2626
+ Seahorse::Client::Request.new(handlers, context)
2627
+ end
2628
+
2629
+ # @api private
2630
+ # @deprecated
2631
+ def waiter_names
2632
+ []
2633
+ end
2634
+
2635
+ class << self
2636
+
2637
+ # @api private
2638
+ attr_reader :identifier
2639
+
2640
+ # @api private
2641
+ def errors_module
2642
+ Errors
2643
+ end
2644
+
2645
+ end
2646
+ end
2647
+ end