aws-sdk-networkfirewall 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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