aws_sdk_networkfirewall/operation/create_firewall/builders.rs
1// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
2pub use crate::operation::create_firewall::_create_firewall_output::CreateFirewallOutputBuilder;
3
4pub use crate::operation::create_firewall::_create_firewall_input::CreateFirewallInputBuilder;
5
6impl crate::operation::create_firewall::builders::CreateFirewallInputBuilder {
7 /// Sends a request with this input using the given client.
8 pub async fn send_with(
9 self,
10 client: &crate::Client,
11 ) -> ::std::result::Result<
12 crate::operation::create_firewall::CreateFirewallOutput,
13 ::aws_smithy_runtime_api::client::result::SdkError<
14 crate::operation::create_firewall::CreateFirewallError,
15 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
16 >,
17 > {
18 let mut fluent_builder = client.create_firewall();
19 fluent_builder.inner = self;
20 fluent_builder.send().await
21 }
22}
23/// Fluent builder constructing a request to `CreateFirewall`.
24///
25/// <p>Creates an Network Firewall <code>Firewall</code> and accompanying <code>FirewallStatus</code> for a VPC.</p>
26/// <p>The firewall defines the configuration settings for an Network Firewall firewall. The settings that you can define at creation include the firewall policy, the subnets in your VPC to use for the firewall endpoints, and any tags that are attached to the firewall Amazon Web Services resource.</p>
27/// <p>After you create a firewall, you can provide additional settings, like the logging configuration.</p>
28/// <p>To update the settings for a firewall, you use the operations that apply to the settings themselves, for example <code>UpdateLoggingConfiguration</code>, <code>AssociateSubnets</code>, and <code>UpdateFirewallDeleteProtection</code>.</p>
29/// <p>To manage a firewall's tags, use the standard Amazon Web Services resource tagging operations, <code>ListTagsForResource</code>, <code>TagResource</code>, and <code>UntagResource</code>.</p>
30/// <p>To retrieve information about firewalls, use <code>ListFirewalls</code> and <code>DescribeFirewall</code>.</p>
31/// <p>To generate a report on the last 30 days of traffic monitored by a firewall, use <code>StartAnalysisReport</code>.</p>
32#[derive(::std::clone::Clone, ::std::fmt::Debug)]
33pub struct CreateFirewallFluentBuilder {
34 handle: ::std::sync::Arc<crate::client::Handle>,
35 inner: crate::operation::create_firewall::builders::CreateFirewallInputBuilder,
36 config_override: ::std::option::Option<crate::config::Builder>,
37}
38impl
39 crate::client::customize::internal::CustomizableSend<
40 crate::operation::create_firewall::CreateFirewallOutput,
41 crate::operation::create_firewall::CreateFirewallError,
42 > for CreateFirewallFluentBuilder
43{
44 fn send(
45 self,
46 config_override: crate::config::Builder,
47 ) -> crate::client::customize::internal::BoxFuture<
48 crate::client::customize::internal::SendResult<
49 crate::operation::create_firewall::CreateFirewallOutput,
50 crate::operation::create_firewall::CreateFirewallError,
51 >,
52 > {
53 ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
54 }
55}
56impl CreateFirewallFluentBuilder {
57 /// Creates a new `CreateFirewallFluentBuilder`.
58 pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
59 Self {
60 handle,
61 inner: ::std::default::Default::default(),
62 config_override: ::std::option::Option::None,
63 }
64 }
65 /// Access the CreateFirewall as a reference.
66 pub fn as_input(&self) -> &crate::operation::create_firewall::builders::CreateFirewallInputBuilder {
67 &self.inner
68 }
69 /// Sends the request and returns the response.
70 ///
71 /// If an error occurs, an `SdkError` will be returned with additional details that
72 /// can be matched against.
73 ///
74 /// By default, any retryable failures will be retried twice. Retry behavior
75 /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
76 /// set when configuring the client.
77 pub async fn send(
78 self,
79 ) -> ::std::result::Result<
80 crate::operation::create_firewall::CreateFirewallOutput,
81 ::aws_smithy_runtime_api::client::result::SdkError<
82 crate::operation::create_firewall::CreateFirewallError,
83 ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
84 >,
85 > {
86 let input = self
87 .inner
88 .build()
89 .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
90 let runtime_plugins = crate::operation::create_firewall::CreateFirewall::operation_runtime_plugins(
91 self.handle.runtime_plugins.clone(),
92 &self.handle.conf,
93 self.config_override,
94 );
95 crate::operation::create_firewall::CreateFirewall::orchestrate(&runtime_plugins, input).await
96 }
97
98 /// Consumes this builder, creating a customizable operation that can be modified before being sent.
99 pub fn customize(
100 self,
101 ) -> crate::client::customize::CustomizableOperation<
102 crate::operation::create_firewall::CreateFirewallOutput,
103 crate::operation::create_firewall::CreateFirewallError,
104 Self,
105 > {
106 crate::client::customize::CustomizableOperation::new(self)
107 }
108 pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
109 self.set_config_override(::std::option::Option::Some(config_override.into()));
110 self
111 }
112
113 pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
114 self.config_override = config_override;
115 self
116 }
117 /// <p>The descriptive name of the firewall. You can't change the name of a firewall after you create it.</p>
118 pub fn firewall_name(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
119 self.inner = self.inner.firewall_name(input.into());
120 self
121 }
122 /// <p>The descriptive name of the firewall. You can't change the name of a firewall after you create it.</p>
123 pub fn set_firewall_name(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
124 self.inner = self.inner.set_firewall_name(input);
125 self
126 }
127 /// <p>The descriptive name of the firewall. You can't change the name of a firewall after you create it.</p>
128 pub fn get_firewall_name(&self) -> &::std::option::Option<::std::string::String> {
129 self.inner.get_firewall_name()
130 }
131 /// <p>The Amazon Resource Name (ARN) of the <code>FirewallPolicy</code> that you want to use for the firewall.</p>
132 pub fn firewall_policy_arn(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
133 self.inner = self.inner.firewall_policy_arn(input.into());
134 self
135 }
136 /// <p>The Amazon Resource Name (ARN) of the <code>FirewallPolicy</code> that you want to use for the firewall.</p>
137 pub fn set_firewall_policy_arn(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
138 self.inner = self.inner.set_firewall_policy_arn(input);
139 self
140 }
141 /// <p>The Amazon Resource Name (ARN) of the <code>FirewallPolicy</code> that you want to use for the firewall.</p>
142 pub fn get_firewall_policy_arn(&self) -> &::std::option::Option<::std::string::String> {
143 self.inner.get_firewall_policy_arn()
144 }
145 /// <p>The unique identifier of the VPC where Network Firewall should create the firewall.</p>
146 /// <p>You can't change this setting after you create the firewall.</p>
147 pub fn vpc_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
148 self.inner = self.inner.vpc_id(input.into());
149 self
150 }
151 /// <p>The unique identifier of the VPC where Network Firewall should create the firewall.</p>
152 /// <p>You can't change this setting after you create the firewall.</p>
153 pub fn set_vpc_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
154 self.inner = self.inner.set_vpc_id(input);
155 self
156 }
157 /// <p>The unique identifier of the VPC where Network Firewall should create the firewall.</p>
158 /// <p>You can't change this setting after you create the firewall.</p>
159 pub fn get_vpc_id(&self) -> &::std::option::Option<::std::string::String> {
160 self.inner.get_vpc_id()
161 }
162 ///
163 /// Appends an item to `SubnetMappings`.
164 ///
165 /// To override the contents of this collection use [`set_subnet_mappings`](Self::set_subnet_mappings).
166 ///
167 /// <p>The public subnets to use for your Network Firewall firewalls. Each subnet must belong to a different Availability Zone in the VPC. Network Firewall creates a firewall endpoint in each subnet.</p>
168 pub fn subnet_mappings(mut self, input: crate::types::SubnetMapping) -> Self {
169 self.inner = self.inner.subnet_mappings(input);
170 self
171 }
172 /// <p>The public subnets to use for your Network Firewall firewalls. Each subnet must belong to a different Availability Zone in the VPC. Network Firewall creates a firewall endpoint in each subnet.</p>
173 pub fn set_subnet_mappings(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::SubnetMapping>>) -> Self {
174 self.inner = self.inner.set_subnet_mappings(input);
175 self
176 }
177 /// <p>The public subnets to use for your Network Firewall firewalls. Each subnet must belong to a different Availability Zone in the VPC. Network Firewall creates a firewall endpoint in each subnet.</p>
178 pub fn get_subnet_mappings(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::SubnetMapping>> {
179 self.inner.get_subnet_mappings()
180 }
181 /// <p>A flag indicating whether it is possible to delete the firewall. A setting of <code>TRUE</code> indicates that the firewall is protected against deletion. Use this setting to protect against accidentally deleting a firewall that is in use. When you create a firewall, the operation initializes this flag to <code>TRUE</code>.</p>
182 pub fn delete_protection(mut self, input: bool) -> Self {
183 self.inner = self.inner.delete_protection(input);
184 self
185 }
186 /// <p>A flag indicating whether it is possible to delete the firewall. A setting of <code>TRUE</code> indicates that the firewall is protected against deletion. Use this setting to protect against accidentally deleting a firewall that is in use. When you create a firewall, the operation initializes this flag to <code>TRUE</code>.</p>
187 pub fn set_delete_protection(mut self, input: ::std::option::Option<bool>) -> Self {
188 self.inner = self.inner.set_delete_protection(input);
189 self
190 }
191 /// <p>A flag indicating whether it is possible to delete the firewall. A setting of <code>TRUE</code> indicates that the firewall is protected against deletion. Use this setting to protect against accidentally deleting a firewall that is in use. When you create a firewall, the operation initializes this flag to <code>TRUE</code>.</p>
192 pub fn get_delete_protection(&self) -> &::std::option::Option<bool> {
193 self.inner.get_delete_protection()
194 }
195 /// <p>A setting indicating whether the firewall is protected against changes to the subnet associations. Use this setting to protect against accidentally modifying the subnet associations for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
196 pub fn subnet_change_protection(mut self, input: bool) -> Self {
197 self.inner = self.inner.subnet_change_protection(input);
198 self
199 }
200 /// <p>A setting indicating whether the firewall is protected against changes to the subnet associations. Use this setting to protect against accidentally modifying the subnet associations for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
201 pub fn set_subnet_change_protection(mut self, input: ::std::option::Option<bool>) -> Self {
202 self.inner = self.inner.set_subnet_change_protection(input);
203 self
204 }
205 /// <p>A setting indicating whether the firewall is protected against changes to the subnet associations. Use this setting to protect against accidentally modifying the subnet associations for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
206 pub fn get_subnet_change_protection(&self) -> &::std::option::Option<bool> {
207 self.inner.get_subnet_change_protection()
208 }
209 /// <p>A setting indicating whether the firewall is protected against a change to the firewall policy association. Use this setting to protect against accidentally modifying the firewall policy for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
210 pub fn firewall_policy_change_protection(mut self, input: bool) -> Self {
211 self.inner = self.inner.firewall_policy_change_protection(input);
212 self
213 }
214 /// <p>A setting indicating whether the firewall is protected against a change to the firewall policy association. Use this setting to protect against accidentally modifying the firewall policy for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
215 pub fn set_firewall_policy_change_protection(mut self, input: ::std::option::Option<bool>) -> Self {
216 self.inner = self.inner.set_firewall_policy_change_protection(input);
217 self
218 }
219 /// <p>A setting indicating whether the firewall is protected against a change to the firewall policy association. Use this setting to protect against accidentally modifying the firewall policy for a firewall that is in use. When you create a firewall, the operation initializes this setting to <code>TRUE</code>.</p>
220 pub fn get_firewall_policy_change_protection(&self) -> &::std::option::Option<bool> {
221 self.inner.get_firewall_policy_change_protection()
222 }
223 /// <p>A description of the firewall.</p>
224 pub fn description(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
225 self.inner = self.inner.description(input.into());
226 self
227 }
228 /// <p>A description of the firewall.</p>
229 pub fn set_description(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
230 self.inner = self.inner.set_description(input);
231 self
232 }
233 /// <p>A description of the firewall.</p>
234 pub fn get_description(&self) -> &::std::option::Option<::std::string::String> {
235 self.inner.get_description()
236 }
237 ///
238 /// Appends an item to `Tags`.
239 ///
240 /// To override the contents of this collection use [`set_tags`](Self::set_tags).
241 ///
242 /// <p>The key:value pairs to associate with the resource.</p>
243 pub fn tags(mut self, input: crate::types::Tag) -> Self {
244 self.inner = self.inner.tags(input);
245 self
246 }
247 /// <p>The key:value pairs to associate with the resource.</p>
248 pub fn set_tags(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::Tag>>) -> Self {
249 self.inner = self.inner.set_tags(input);
250 self
251 }
252 /// <p>The key:value pairs to associate with the resource.</p>
253 pub fn get_tags(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::Tag>> {
254 self.inner.get_tags()
255 }
256 /// <p>A complex type that contains settings for encryption of your firewall resources.</p>
257 pub fn encryption_configuration(mut self, input: crate::types::EncryptionConfiguration) -> Self {
258 self.inner = self.inner.encryption_configuration(input);
259 self
260 }
261 /// <p>A complex type that contains settings for encryption of your firewall resources.</p>
262 pub fn set_encryption_configuration(mut self, input: ::std::option::Option<crate::types::EncryptionConfiguration>) -> Self {
263 self.inner = self.inner.set_encryption_configuration(input);
264 self
265 }
266 /// <p>A complex type that contains settings for encryption of your firewall resources.</p>
267 pub fn get_encryption_configuration(&self) -> &::std::option::Option<crate::types::EncryptionConfiguration> {
268 self.inner.get_encryption_configuration()
269 }
270 ///
271 /// Appends an item to `EnabledAnalysisTypes`.
272 ///
273 /// To override the contents of this collection use [`set_enabled_analysis_types`](Self::set_enabled_analysis_types).
274 ///
275 /// <p>An optional setting indicating the specific traffic analysis types to enable on the firewall.</p>
276 pub fn enabled_analysis_types(mut self, input: crate::types::EnabledAnalysisType) -> Self {
277 self.inner = self.inner.enabled_analysis_types(input);
278 self
279 }
280 /// <p>An optional setting indicating the specific traffic analysis types to enable on the firewall.</p>
281 pub fn set_enabled_analysis_types(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::EnabledAnalysisType>>) -> Self {
282 self.inner = self.inner.set_enabled_analysis_types(input);
283 self
284 }
285 /// <p>An optional setting indicating the specific traffic analysis types to enable on the firewall.</p>
286 pub fn get_enabled_analysis_types(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::EnabledAnalysisType>> {
287 self.inner.get_enabled_analysis_types()
288 }
289}