aws-sdk-ec2 1.273.0

AWS SDK for Amazon Elastic Compute Cloud
Documentation
// Code generated by software.amazon.smithy.rust.codegen.smithy-rs. DO NOT EDIT.
pub use crate::operation::modify_transit_gateway_attachment_nat_configuration::_modify_transit_gateway_attachment_nat_configuration_input::ModifyTransitGatewayAttachmentNatConfigurationInputBuilder;

pub use crate::operation::modify_transit_gateway_attachment_nat_configuration::_modify_transit_gateway_attachment_nat_configuration_output::ModifyTransitGatewayAttachmentNatConfigurationOutputBuilder;

impl crate::operation::modify_transit_gateway_attachment_nat_configuration::builders::ModifyTransitGatewayAttachmentNatConfigurationInputBuilder {
    /// Sends a request with this input using the given client.
    pub async fn send_with(
        self,
        client: &crate::Client,
    ) -> ::std::result::Result<
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let mut fluent_builder = client.modify_transit_gateway_attachment_nat_configuration();
        fluent_builder.inner = self;
        fluent_builder.send().await
    }
}
/// Fluent builder constructing a request to `ModifyTransitGatewayAttachmentNatConfiguration`.
///
/// <p>Modifies the NAT configuration for the specified transit gateway attachment. Use this operation to do the following:</p>
/// <ul>
/// <li>
/// <p>Enable or disable NAT gateway support for the attachment.</p></li>
/// <li>
/// <p>Specify whether the transit gateway installs routes for the NAT CIDRs.</p></li>
/// <li>
/// <p>Replace the NAT gateway rules for the attachment.</p></li>
/// </ul>
/// <p>Only the owner of the transit gateway can modify the NAT configuration.</p>
/// <p>With NAT gateway support enabled, the transit gateway translates addresses in each rule's <code>MatchSourceCidr</code> range to the corresponding addresses in its <code>NatCidr</code> range.</p>
/// <p>The transit gateway applies changes asynchronously. To check the result, use <code>GetTransitGatewayAttachmentNatConfiguration</code>.</p>
#[derive(::std::clone::Clone, ::std::fmt::Debug)]
pub struct ModifyTransitGatewayAttachmentNatConfigurationFluentBuilder {
    handle: ::std::sync::Arc<crate::client::Handle>,
    inner:
        crate::operation::modify_transit_gateway_attachment_nat_configuration::builders::ModifyTransitGatewayAttachmentNatConfigurationInputBuilder,
    config_override: ::std::option::Option<crate::config::Builder>,
}
impl
    crate::client::customize::internal::CustomizableSend<
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationOutput,
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationError,
    > for ModifyTransitGatewayAttachmentNatConfigurationFluentBuilder
{
    fn send(
        self,
        config_override: crate::config::Builder,
    ) -> crate::client::customize::internal::BoxFuture<
        crate::client::customize::internal::SendResult<
            crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationOutput,
            crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationError,
        >,
    > {
        ::std::boxed::Box::pin(async move { self.config_override(config_override).send().await })
    }
}
impl ModifyTransitGatewayAttachmentNatConfigurationFluentBuilder {
    /// Creates a new `ModifyTransitGatewayAttachmentNatConfigurationFluentBuilder`.
    pub(crate) fn new(handle: ::std::sync::Arc<crate::client::Handle>) -> Self {
        Self {
            handle,
            inner: ::std::default::Default::default(),
            config_override: ::std::option::Option::None,
        }
    }
    /// Access the ModifyTransitGatewayAttachmentNatConfiguration as a reference.
    pub fn as_input(
        &self,
    ) -> &crate::operation::modify_transit_gateway_attachment_nat_configuration::builders::ModifyTransitGatewayAttachmentNatConfigurationInputBuilder
    {
        &self.inner
    }
    /// Sends the request and returns the response.
    ///
    /// If an error occurs, an `SdkError` will be returned with additional details that
    /// can be matched against.
    ///
    /// By default, any retryable failures will be retried twice. Retry behavior
    /// is configurable with the [RetryConfig](aws_smithy_types::retry::RetryConfig), which can be
    /// set when configuring the client.
    pub async fn send(
        self,
    ) -> ::std::result::Result<
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationOutput,
        ::aws_smithy_runtime_api::client::result::SdkError<
            crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationError,
            ::aws_smithy_runtime_api::client::orchestrator::HttpResponse,
        >,
    > {
        let input = self
            .inner
            .build()
            .map_err(::aws_smithy_runtime_api::client::result::SdkError::construction_failure)?;
        let runtime_plugins = crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfiguration::operation_runtime_plugins(
                            self.handle.runtime_plugins.clone(),
                            &self.handle.conf,
                            self.config_override,
                        );
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfiguration::orchestrate(
            &runtime_plugins,
            input,
        )
        .await
    }

    /// Consumes this builder, creating a customizable operation that can be modified before being sent.
    pub fn customize(
        self,
    ) -> crate::client::customize::CustomizableOperation<
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationOutput,
        crate::operation::modify_transit_gateway_attachment_nat_configuration::ModifyTransitGatewayAttachmentNatConfigurationError,
        Self,
    > {
        crate::client::customize::CustomizableOperation::new(self)
    }
    pub(crate) fn config_override(mut self, config_override: impl ::std::convert::Into<crate::config::Builder>) -> Self {
        self.set_config_override(::std::option::Option::Some(config_override.into()));
        self
    }

    pub(crate) fn set_config_override(&mut self, config_override: ::std::option::Option<crate::config::Builder>) -> &mut Self {
        self.config_override = config_override;
        self
    }
    /// <p>The ID of the transit gateway attachment.</p>
    pub fn transit_gateway_attachment_id(mut self, input: impl ::std::convert::Into<::std::string::String>) -> Self {
        self.inner = self.inner.transit_gateway_attachment_id(input.into());
        self
    }
    /// <p>The ID of the transit gateway attachment.</p>
    pub fn set_transit_gateway_attachment_id(mut self, input: ::std::option::Option<::std::string::String>) -> Self {
        self.inner = self.inner.set_transit_gateway_attachment_id(input);
        self
    }
    /// <p>The ID of the transit gateway attachment.</p>
    pub fn get_transit_gateway_attachment_id(&self) -> &::std::option::Option<::std::string::String> {
        self.inner.get_transit_gateway_attachment_id()
    }
    /// <p>Specifies whether to enable or disable NAT gateway support for the attachment. To enable NAT gateway support, the attachment must have at least one NAT gateway rule. You can't modify the NAT configuration while NAT gateway support is <code>enabling</code> or <code>disabling</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn nat_gateway_support(mut self, input: crate::types::TransitGatewayAttachmentNatGatewaySupportValue) -> Self {
        self.inner = self.inner.nat_gateway_support(input);
        self
    }
    /// <p>Specifies whether to enable or disable NAT gateway support for the attachment. To enable NAT gateway support, the attachment must have at least one NAT gateway rule. You can't modify the NAT configuration while NAT gateway support is <code>enabling</code> or <code>disabling</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn set_nat_gateway_support(mut self, input: ::std::option::Option<crate::types::TransitGatewayAttachmentNatGatewaySupportValue>) -> Self {
        self.inner = self.inner.set_nat_gateway_support(input);
        self
    }
    /// <p>Specifies whether to enable or disable NAT gateway support for the attachment. To enable NAT gateway support, the attachment must have at least one NAT gateway rule. You can't modify the NAT configuration while NAT gateway support is <code>enabling</code> or <code>disabling</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn get_nat_gateway_support(&self) -> &::std::option::Option<crate::types::TransitGatewayAttachmentNatGatewaySupportValue> {
        self.inner.get_nat_gateway_support()
    }
    /// <p>Specifies whether the transit gateway installs routes for the NAT CIDRs in the route tables to which the attachment propagates. For VPC attachments, the transit gateway always installs these routes. You can enable or disable this option only for Amazon Web Services Direct Connect gateway attachments and Site-to-Site VPN attachments that use dynamic routing. For these attachments, the default is <code>enable</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn nat_system_route_support(mut self, input: crate::types::TransitGatewayAttachmentNatSystemRouteSupportValue) -> Self {
        self.inner = self.inner.nat_system_route_support(input);
        self
    }
    /// <p>Specifies whether the transit gateway installs routes for the NAT CIDRs in the route tables to which the attachment propagates. For VPC attachments, the transit gateway always installs these routes. You can enable or disable this option only for Amazon Web Services Direct Connect gateway attachments and Site-to-Site VPN attachments that use dynamic routing. For these attachments, the default is <code>enable</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn set_nat_system_route_support(
        mut self,
        input: ::std::option::Option<crate::types::TransitGatewayAttachmentNatSystemRouteSupportValue>,
    ) -> Self {
        self.inner = self.inner.set_nat_system_route_support(input);
        self
    }
    /// <p>Specifies whether the transit gateway installs routes for the NAT CIDRs in the route tables to which the attachment propagates. For VPC attachments, the transit gateway always installs these routes. You can enable or disable this option only for Amazon Web Services Direct Connect gateway attachments and Site-to-Site VPN attachments that use dynamic routing. For these attachments, the default is <code>enable</code>. If you omit this parameter, the current value doesn't change.</p>
    pub fn get_nat_system_route_support(&self) -> &::std::option::Option<crate::types::TransitGatewayAttachmentNatSystemRouteSupportValue> {
        self.inner.get_nat_system_route_support()
    }
    ///
    /// Appends an item to `NatGatewayRules`.
    ///
    /// To override the contents of this collection use [`set_nat_gateway_rules`](Self::set_nat_gateway_rules).
    ///
    /// <p>The NAT gateway rules for the attachment. The rules that you specify replace all existing NAT gateway rules for the attachment. You can specify up to 50 rules for an attachment. If you omit this parameter, the existing rules don't change. To remove all rules, use <code>ResetNatGatewayRules</code>.</p>
    pub fn nat_gateway_rules(mut self, input: crate::types::TransitGatewayNatRuleRequest) -> Self {
        self.inner = self.inner.nat_gateway_rules(input);
        self
    }
    /// <p>The NAT gateway rules for the attachment. The rules that you specify replace all existing NAT gateway rules for the attachment. You can specify up to 50 rules for an attachment. If you omit this parameter, the existing rules don't change. To remove all rules, use <code>ResetNatGatewayRules</code>.</p>
    pub fn set_nat_gateway_rules(mut self, input: ::std::option::Option<::std::vec::Vec<crate::types::TransitGatewayNatRuleRequest>>) -> Self {
        self.inner = self.inner.set_nat_gateway_rules(input);
        self
    }
    /// <p>The NAT gateway rules for the attachment. The rules that you specify replace all existing NAT gateway rules for the attachment. You can specify up to 50 rules for an attachment. If you omit this parameter, the existing rules don't change. To remove all rules, use <code>ResetNatGatewayRules</code>.</p>
    pub fn get_nat_gateway_rules(&self) -> &::std::option::Option<::std::vec::Vec<crate::types::TransitGatewayNatRuleRequest>> {
        self.inner.get_nat_gateway_rules()
    }
    /// <p>Specifies whether to remove all NAT gateway rules from the attachment. If you omit this parameter, the transit gateway doesn't remove any rules. You can't specify this parameter together with <code>NatGatewayRules</code>. Because you can't enable NAT gateway support without rules, also set <code>NatGatewaySupport</code> to <code>disable</code> in the same request if NAT gateway support is currently enabled.</p>
    pub fn reset_nat_gateway_rules(mut self, input: bool) -> Self {
        self.inner = self.inner.reset_nat_gateway_rules(input);
        self
    }
    /// <p>Specifies whether to remove all NAT gateway rules from the attachment. If you omit this parameter, the transit gateway doesn't remove any rules. You can't specify this parameter together with <code>NatGatewayRules</code>. Because you can't enable NAT gateway support without rules, also set <code>NatGatewaySupport</code> to <code>disable</code> in the same request if NAT gateway support is currently enabled.</p>
    pub fn set_reset_nat_gateway_rules(mut self, input: ::std::option::Option<bool>) -> Self {
        self.inner = self.inner.set_reset_nat_gateway_rules(input);
        self
    }
    /// <p>Specifies whether to remove all NAT gateway rules from the attachment. If you omit this parameter, the transit gateway doesn't remove any rules. You can't specify this parameter together with <code>NatGatewayRules</code>. Because you can't enable NAT gateway support without rules, also set <code>NatGatewaySupport</code> to <code>disable</code> in the same request if NAT gateway support is currently enabled.</p>
    pub fn get_reset_nat_gateway_rules(&self) -> &::std::option::Option<bool> {
        self.inner.get_reset_nat_gateway_rules()
    }
    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn dry_run(mut self, input: bool) -> Self {
        self.inner = self.inner.dry_run(input);
        self
    }
    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn set_dry_run(mut self, input: ::std::option::Option<bool>) -> Self {
        self.inner = self.inner.set_dry_run(input);
        self
    }
    /// <p>Checks whether you have the required permissions for the action, without actually making the request, and provides an error response. If you have the required permissions, the error response is <code>DryRunOperation</code>. Otherwise, it is <code>UnauthorizedOperation</code>.</p>
    pub fn get_dry_run(&self) -> &::std::option::Option<bool> {
        self.inner.get_dry_run()
    }
}