github.com/pulumi/pulumi-aws/sdk/v6@v6.32.0/go/aws/ec2/vpnConnection.go (about)

     1  // Code generated by the Pulumi Terraform Bridge (tfgen) Tool DO NOT EDIT.
     2  // *** WARNING: Do not edit by hand unless you're certain you know what you are doing! ***
     3  
     4  package ec2
     5  
     6  import (
     7  	"context"
     8  	"reflect"
     9  
    10  	"errors"
    11  	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/internal"
    12  	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    13  )
    14  
    15  // Manages a Site-to-Site VPN connection. A Site-to-Site VPN connection is an Internet Protocol security (IPsec) VPN connection between a VPC and an on-premises network.
    16  // Any new Site-to-Site VPN connection that you create is an [AWS VPN connection](https://docs.aws.amazon.com/vpn/latest/s2svpn/vpn-categories.html).
    17  //
    18  // > **Note:** The CIDR blocks in the arguments `tunnel1InsideCidr` and `tunnel2InsideCidr` must have a prefix of /30 and be a part of a specific range.
    19  // [Read more about this in the AWS documentation](https://docs.aws.amazon.com/AWSEC2/latest/APIReference/API_VpnTunnelOptionsSpecification.html).
    20  //
    21  // ## Example Usage
    22  //
    23  // ### EC2 Transit Gateway
    24  //
    25  // <!--Start PulumiCodeChooser -->
    26  // ```go
    27  // package main
    28  //
    29  // import (
    30  //
    31  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    32  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2transitgateway"
    33  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    34  //
    35  // )
    36  //
    37  //	func main() {
    38  //		pulumi.Run(func(ctx *pulumi.Context) error {
    39  //			example, err := ec2transitgateway.NewTransitGateway(ctx, "example", nil)
    40  //			if err != nil {
    41  //				return err
    42  //			}
    43  //			exampleCustomerGateway, err := ec2.NewCustomerGateway(ctx, "example", &ec2.CustomerGatewayArgs{
    44  //				BgpAsn:    pulumi.String("65000"),
    45  //				IpAddress: pulumi.String("172.0.0.1"),
    46  //				Type:      pulumi.String("ipsec.1"),
    47  //			})
    48  //			if err != nil {
    49  //				return err
    50  //			}
    51  //			_, err = ec2.NewVpnConnection(ctx, "example", &ec2.VpnConnectionArgs{
    52  //				CustomerGatewayId: exampleCustomerGateway.ID(),
    53  //				TransitGatewayId:  example.ID(),
    54  //				Type:              exampleCustomerGateway.Type,
    55  //			})
    56  //			if err != nil {
    57  //				return err
    58  //			}
    59  //			return nil
    60  //		})
    61  //	}
    62  //
    63  // ```
    64  // <!--End PulumiCodeChooser -->
    65  //
    66  // ### Virtual Private Gateway
    67  //
    68  // <!--Start PulumiCodeChooser -->
    69  // ```go
    70  // package main
    71  //
    72  // import (
    73  //
    74  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
    75  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
    76  //
    77  // )
    78  //
    79  //	func main() {
    80  //		pulumi.Run(func(ctx *pulumi.Context) error {
    81  //			vpc, err := ec2.NewVpc(ctx, "vpc", &ec2.VpcArgs{
    82  //				CidrBlock: pulumi.String("10.0.0.0/16"),
    83  //			})
    84  //			if err != nil {
    85  //				return err
    86  //			}
    87  //			vpnGateway, err := ec2.NewVpnGateway(ctx, "vpn_gateway", &ec2.VpnGatewayArgs{
    88  //				VpcId: vpc.ID(),
    89  //			})
    90  //			if err != nil {
    91  //				return err
    92  //			}
    93  //			customerGateway, err := ec2.NewCustomerGateway(ctx, "customer_gateway", &ec2.CustomerGatewayArgs{
    94  //				BgpAsn:    pulumi.String("65000"),
    95  //				IpAddress: pulumi.String("172.0.0.1"),
    96  //				Type:      pulumi.String("ipsec.1"),
    97  //			})
    98  //			if err != nil {
    99  //				return err
   100  //			}
   101  //			_, err = ec2.NewVpnConnection(ctx, "main", &ec2.VpnConnectionArgs{
   102  //				VpnGatewayId:      vpnGateway.ID(),
   103  //				CustomerGatewayId: customerGateway.ID(),
   104  //				Type:              pulumi.String("ipsec.1"),
   105  //				StaticRoutesOnly:  pulumi.Bool(true),
   106  //			})
   107  //			if err != nil {
   108  //				return err
   109  //			}
   110  //			return nil
   111  //		})
   112  //	}
   113  //
   114  // ```
   115  // <!--End PulumiCodeChooser -->
   116  //
   117  // ### AWS Site to Site Private VPN
   118  //
   119  // <!--Start PulumiCodeChooser -->
   120  // ```go
   121  // package main
   122  //
   123  // import (
   124  //
   125  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/directconnect"
   126  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2"
   127  //	"github.com/pulumi/pulumi-aws/sdk/v6/go/aws/ec2transitgateway"
   128  //	"github.com/pulumi/pulumi/sdk/v3/go/pulumi"
   129  //
   130  // )
   131  //
   132  //	func main() {
   133  //		pulumi.Run(func(ctx *pulumi.Context) error {
   134  //			exampleGateway, err := directconnect.NewGateway(ctx, "example", &directconnect.GatewayArgs{
   135  //				Name:          pulumi.String("example_ipsec_vpn_example"),
   136  //				AmazonSideAsn: pulumi.String("64512"),
   137  //			})
   138  //			if err != nil {
   139  //				return err
   140  //			}
   141  //			exampleTransitGateway, err := ec2transitgateway.NewTransitGateway(ctx, "example", &ec2transitgateway.TransitGatewayArgs{
   142  //				AmazonSideAsn: pulumi.Int(64513),
   143  //				Description:   pulumi.String("example_ipsec_vpn_example"),
   144  //				TransitGatewayCidrBlocks: pulumi.StringArray{
   145  //					pulumi.String("10.0.0.0/24"),
   146  //				},
   147  //			})
   148  //			if err != nil {
   149  //				return err
   150  //			}
   151  //			exampleCustomerGateway, err := ec2.NewCustomerGateway(ctx, "example", &ec2.CustomerGatewayArgs{
   152  //				BgpAsn:    pulumi.String("64514"),
   153  //				IpAddress: pulumi.String("10.0.0.1"),
   154  //				Type:      pulumi.String("ipsec.1"),
   155  //				Tags: pulumi.StringMap{
   156  //					"Name": pulumi.String("example_ipsec_vpn_example"),
   157  //				},
   158  //			})
   159  //			if err != nil {
   160  //				return err
   161  //			}
   162  //			_, err = directconnect.NewGatewayAssociation(ctx, "example", &directconnect.GatewayAssociationArgs{
   163  //				DxGatewayId:         exampleGateway.ID(),
   164  //				AssociatedGatewayId: exampleTransitGateway.ID(),
   165  //				AllowedPrefixes: pulumi.StringArray{
   166  //					pulumi.String("10.0.0.0/8"),
   167  //				},
   168  //			})
   169  //			if err != nil {
   170  //				return err
   171  //			}
   172  //			example := ec2transitgateway.GetDirectConnectGatewayAttachmentOutput(ctx, ec2transitgateway.GetDirectConnectGatewayAttachmentOutputArgs{
   173  //				TransitGatewayId: exampleTransitGateway.ID(),
   174  //				DxGatewayId:      exampleGateway.ID(),
   175  //			}, nil)
   176  //			_, err = ec2.NewVpnConnection(ctx, "example", &ec2.VpnConnectionArgs{
   177  //				CustomerGatewayId:    exampleCustomerGateway.ID(),
   178  //				OutsideIpAddressType: pulumi.String("PrivateIpv4"),
   179  //				TransitGatewayId:     exampleTransitGateway.ID(),
   180  //				TransportTransitGatewayAttachmentId: example.ApplyT(func(example ec2transitgateway.GetDirectConnectGatewayAttachmentResult) (*string, error) {
   181  //					return &example.Id, nil
   182  //				}).(pulumi.StringPtrOutput),
   183  //				Type: pulumi.String("ipsec.1"),
   184  //				Tags: pulumi.StringMap{
   185  //					"Name": pulumi.String("example_ipsec_vpn_example"),
   186  //				},
   187  //			})
   188  //			if err != nil {
   189  //				return err
   190  //			}
   191  //			return nil
   192  //		})
   193  //	}
   194  //
   195  // ```
   196  // <!--End PulumiCodeChooser -->
   197  //
   198  // ## Import
   199  //
   200  // Using `pulumi import`, import VPN Connections using the VPN connection `id`. For example:
   201  //
   202  // ```sh
   203  // $ pulumi import aws:ec2/vpnConnection:VpnConnection testvpnconnection vpn-40f41529
   204  // ```
   205  type VpnConnection struct {
   206  	pulumi.CustomResourceState
   207  
   208  	// Amazon Resource Name (ARN) of the VPN Connection.
   209  	Arn pulumi.StringOutput `pulumi:"arn"`
   210  	// The ARN of the core network.
   211  	CoreNetworkArn pulumi.StringOutput `pulumi:"coreNetworkArn"`
   212  	// The ARN of the core network attachment.
   213  	CoreNetworkAttachmentArn pulumi.StringOutput `pulumi:"coreNetworkAttachmentArn"`
   214  	// The configuration information for the VPN connection's customer gateway (in the native XML format).
   215  	CustomerGatewayConfiguration pulumi.StringOutput `pulumi:"customerGatewayConfiguration"`
   216  	// The ID of the customer gateway.
   217  	CustomerGatewayId pulumi.StringOutput `pulumi:"customerGatewayId"`
   218  	// Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
   219  	EnableAcceleration pulumi.BoolOutput `pulumi:"enableAcceleration"`
   220  	// The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
   221  	LocalIpv4NetworkCidr pulumi.StringOutput `pulumi:"localIpv4NetworkCidr"`
   222  	// The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
   223  	LocalIpv6NetworkCidr pulumi.StringOutput `pulumi:"localIpv6NetworkCidr"`
   224  	// Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
   225  	OutsideIpAddressType pulumi.StringOutput `pulumi:"outsideIpAddressType"`
   226  	// The IPv4 CIDR on the AWS side of the VPN connection.
   227  	RemoteIpv4NetworkCidr pulumi.StringOutput `pulumi:"remoteIpv4NetworkCidr"`
   228  	// The IPv6 CIDR on the AWS side of the VPN connection.
   229  	RemoteIpv6NetworkCidr pulumi.StringOutput `pulumi:"remoteIpv6NetworkCidr"`
   230  	// The static routes associated with the VPN connection. Detailed below.
   231  	Routes VpnConnectionRouteTypeArrayOutput `pulumi:"routes"`
   232  	// Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
   233  	StaticRoutesOnly pulumi.BoolOutput `pulumi:"staticRoutesOnly"`
   234  	// Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   235  	Tags pulumi.StringMapOutput `pulumi:"tags"`
   236  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   237  	//
   238  	// Deprecated: Please use `tags` instead.
   239  	TagsAll pulumi.StringMapOutput `pulumi:"tagsAll"`
   240  	// When associated with an EC2 Transit Gateway (`transitGatewayId` argument), the attachment ID. See also the `ec2.Tag` resource for tagging the EC2 Transit Gateway VPN Attachment.
   241  	TransitGatewayAttachmentId pulumi.StringOutput `pulumi:"transitGatewayAttachmentId"`
   242  	// The ID of the EC2 Transit Gateway.
   243  	TransitGatewayId pulumi.StringPtrOutput `pulumi:"transitGatewayId"`
   244  	// . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
   245  	TransportTransitGatewayAttachmentId pulumi.StringPtrOutput `pulumi:"transportTransitGatewayAttachmentId"`
   246  	// The public IP address of the first VPN tunnel.
   247  	Tunnel1Address pulumi.StringOutput `pulumi:"tunnel1Address"`
   248  	// The bgp asn number of the first VPN tunnel.
   249  	Tunnel1BgpAsn pulumi.StringOutput `pulumi:"tunnel1BgpAsn"`
   250  	// The bgp holdtime of the first VPN tunnel.
   251  	Tunnel1BgpHoldtime pulumi.IntOutput `pulumi:"tunnel1BgpHoldtime"`
   252  	// The RFC 6890 link-local address of the first VPN tunnel (Customer Gateway Side).
   253  	Tunnel1CgwInsideAddress pulumi.StringOutput `pulumi:"tunnel1CgwInsideAddress"`
   254  	// The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   255  	Tunnel1DpdTimeoutAction pulumi.StringPtrOutput `pulumi:"tunnel1DpdTimeoutAction"`
   256  	// The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
   257  	Tunnel1DpdTimeoutSeconds pulumi.IntPtrOutput `pulumi:"tunnel1DpdTimeoutSeconds"`
   258  	// Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
   259  	Tunnel1EnableTunnelLifecycleControl pulumi.BoolPtrOutput `pulumi:"tunnel1EnableTunnelLifecycleControl"`
   260  	// The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
   261  	Tunnel1IkeVersions pulumi.StringArrayOutput `pulumi:"tunnel1IkeVersions"`
   262  	// The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   263  	Tunnel1InsideCidr pulumi.StringOutput `pulumi:"tunnel1InsideCidr"`
   264  	// The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   265  	Tunnel1InsideIpv6Cidr pulumi.StringOutput `pulumi:"tunnel1InsideIpv6Cidr"`
   266  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   267  	Tunnel1LogOptions VpnConnectionTunnel1LogOptionsOutput `pulumi:"tunnel1LogOptions"`
   268  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   269  	Tunnel1Phase1DhGroupNumbers pulumi.IntArrayOutput `pulumi:"tunnel1Phase1DhGroupNumbers"`
   270  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   271  	Tunnel1Phase1EncryptionAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel1Phase1EncryptionAlgorithms"`
   272  	// One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   273  	Tunnel1Phase1IntegrityAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel1Phase1IntegrityAlgorithms"`
   274  	// The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   275  	Tunnel1Phase1LifetimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel1Phase1LifetimeSeconds"`
   276  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   277  	Tunnel1Phase2DhGroupNumbers pulumi.IntArrayOutput `pulumi:"tunnel1Phase2DhGroupNumbers"`
   278  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   279  	Tunnel1Phase2EncryptionAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel1Phase2EncryptionAlgorithms"`
   280  	// List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   281  	Tunnel1Phase2IntegrityAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel1Phase2IntegrityAlgorithms"`
   282  	// The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   283  	Tunnel1Phase2LifetimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel1Phase2LifetimeSeconds"`
   284  	// The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   285  	Tunnel1PresharedKey pulumi.StringOutput `pulumi:"tunnel1PresharedKey"`
   286  	// The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   287  	Tunnel1RekeyFuzzPercentage pulumi.IntPtrOutput `pulumi:"tunnel1RekeyFuzzPercentage"`
   288  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
   289  	Tunnel1RekeyMarginTimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel1RekeyMarginTimeSeconds"`
   290  	// The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
   291  	Tunnel1ReplayWindowSize pulumi.IntPtrOutput `pulumi:"tunnel1ReplayWindowSize"`
   292  	// The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   293  	Tunnel1StartupAction pulumi.StringPtrOutput `pulumi:"tunnel1StartupAction"`
   294  	// The RFC 6890 link-local address of the first VPN tunnel (VPN Gateway Side).
   295  	Tunnel1VgwInsideAddress pulumi.StringOutput `pulumi:"tunnel1VgwInsideAddress"`
   296  	// The public IP address of the second VPN tunnel.
   297  	Tunnel2Address pulumi.StringOutput `pulumi:"tunnel2Address"`
   298  	// The bgp asn number of the second VPN tunnel.
   299  	Tunnel2BgpAsn pulumi.StringOutput `pulumi:"tunnel2BgpAsn"`
   300  	// The bgp holdtime of the second VPN tunnel.
   301  	Tunnel2BgpHoldtime pulumi.IntOutput `pulumi:"tunnel2BgpHoldtime"`
   302  	// The RFC 6890 link-local address of the second VPN tunnel (Customer Gateway Side).
   303  	Tunnel2CgwInsideAddress pulumi.StringOutput `pulumi:"tunnel2CgwInsideAddress"`
   304  	// The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   305  	Tunnel2DpdTimeoutAction pulumi.StringPtrOutput `pulumi:"tunnel2DpdTimeoutAction"`
   306  	// The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
   307  	Tunnel2DpdTimeoutSeconds pulumi.IntPtrOutput `pulumi:"tunnel2DpdTimeoutSeconds"`
   308  	// Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
   309  	Tunnel2EnableTunnelLifecycleControl pulumi.BoolPtrOutput `pulumi:"tunnel2EnableTunnelLifecycleControl"`
   310  	// The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
   311  	Tunnel2IkeVersions pulumi.StringArrayOutput `pulumi:"tunnel2IkeVersions"`
   312  	// The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   313  	Tunnel2InsideCidr pulumi.StringOutput `pulumi:"tunnel2InsideCidr"`
   314  	// The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   315  	Tunnel2InsideIpv6Cidr pulumi.StringOutput `pulumi:"tunnel2InsideIpv6Cidr"`
   316  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   317  	Tunnel2LogOptions VpnConnectionTunnel2LogOptionsOutput `pulumi:"tunnel2LogOptions"`
   318  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   319  	Tunnel2Phase1DhGroupNumbers pulumi.IntArrayOutput `pulumi:"tunnel2Phase1DhGroupNumbers"`
   320  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   321  	Tunnel2Phase1EncryptionAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel2Phase1EncryptionAlgorithms"`
   322  	// One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   323  	Tunnel2Phase1IntegrityAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel2Phase1IntegrityAlgorithms"`
   324  	// The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   325  	Tunnel2Phase1LifetimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel2Phase1LifetimeSeconds"`
   326  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   327  	Tunnel2Phase2DhGroupNumbers pulumi.IntArrayOutput `pulumi:"tunnel2Phase2DhGroupNumbers"`
   328  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   329  	Tunnel2Phase2EncryptionAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel2Phase2EncryptionAlgorithms"`
   330  	// List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   331  	Tunnel2Phase2IntegrityAlgorithms pulumi.StringArrayOutput `pulumi:"tunnel2Phase2IntegrityAlgorithms"`
   332  	// The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   333  	Tunnel2Phase2LifetimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel2Phase2LifetimeSeconds"`
   334  	// The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   335  	Tunnel2PresharedKey pulumi.StringOutput `pulumi:"tunnel2PresharedKey"`
   336  	// The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   337  	Tunnel2RekeyFuzzPercentage pulumi.IntPtrOutput `pulumi:"tunnel2RekeyFuzzPercentage"`
   338  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
   339  	Tunnel2RekeyMarginTimeSeconds pulumi.IntPtrOutput `pulumi:"tunnel2RekeyMarginTimeSeconds"`
   340  	// The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
   341  	Tunnel2ReplayWindowSize pulumi.IntPtrOutput `pulumi:"tunnel2ReplayWindowSize"`
   342  	// The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   343  	Tunnel2StartupAction pulumi.StringPtrOutput `pulumi:"tunnel2StartupAction"`
   344  	// The RFC 6890 link-local address of the second VPN tunnel (VPN Gateway Side).
   345  	Tunnel2VgwInsideAddress pulumi.StringOutput `pulumi:"tunnel2VgwInsideAddress"`
   346  	// Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
   347  	TunnelInsideIpVersion pulumi.StringOutput `pulumi:"tunnelInsideIpVersion"`
   348  	// The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
   349  	Type pulumi.StringOutput `pulumi:"type"`
   350  	// Telemetry for the VPN tunnels. Detailed below.
   351  	VgwTelemetries VpnConnectionVgwTelemetryArrayOutput `pulumi:"vgwTelemetries"`
   352  	// The ID of the Virtual Private Gateway.
   353  	VpnGatewayId pulumi.StringPtrOutput `pulumi:"vpnGatewayId"`
   354  }
   355  
   356  // NewVpnConnection registers a new resource with the given unique name, arguments, and options.
   357  func NewVpnConnection(ctx *pulumi.Context,
   358  	name string, args *VpnConnectionArgs, opts ...pulumi.ResourceOption) (*VpnConnection, error) {
   359  	if args == nil {
   360  		return nil, errors.New("missing one or more required arguments")
   361  	}
   362  
   363  	if args.CustomerGatewayId == nil {
   364  		return nil, errors.New("invalid value for required argument 'CustomerGatewayId'")
   365  	}
   366  	if args.Type == nil {
   367  		return nil, errors.New("invalid value for required argument 'Type'")
   368  	}
   369  	if args.Tunnel1PresharedKey != nil {
   370  		args.Tunnel1PresharedKey = pulumi.ToSecret(args.Tunnel1PresharedKey).(pulumi.StringPtrInput)
   371  	}
   372  	if args.Tunnel2PresharedKey != nil {
   373  		args.Tunnel2PresharedKey = pulumi.ToSecret(args.Tunnel2PresharedKey).(pulumi.StringPtrInput)
   374  	}
   375  	secrets := pulumi.AdditionalSecretOutputs([]string{
   376  		"customerGatewayConfiguration",
   377  		"tunnel1PresharedKey",
   378  		"tunnel2PresharedKey",
   379  	})
   380  	opts = append(opts, secrets)
   381  	opts = internal.PkgResourceDefaultOpts(opts)
   382  	var resource VpnConnection
   383  	err := ctx.RegisterResource("aws:ec2/vpnConnection:VpnConnection", name, args, &resource, opts...)
   384  	if err != nil {
   385  		return nil, err
   386  	}
   387  	return &resource, nil
   388  }
   389  
   390  // GetVpnConnection gets an existing VpnConnection resource's state with the given name, ID, and optional
   391  // state properties that are used to uniquely qualify the lookup (nil if not required).
   392  func GetVpnConnection(ctx *pulumi.Context,
   393  	name string, id pulumi.IDInput, state *VpnConnectionState, opts ...pulumi.ResourceOption) (*VpnConnection, error) {
   394  	var resource VpnConnection
   395  	err := ctx.ReadResource("aws:ec2/vpnConnection:VpnConnection", name, id, state, &resource, opts...)
   396  	if err != nil {
   397  		return nil, err
   398  	}
   399  	return &resource, nil
   400  }
   401  
   402  // Input properties used for looking up and filtering VpnConnection resources.
   403  type vpnConnectionState struct {
   404  	// Amazon Resource Name (ARN) of the VPN Connection.
   405  	Arn *string `pulumi:"arn"`
   406  	// The ARN of the core network.
   407  	CoreNetworkArn *string `pulumi:"coreNetworkArn"`
   408  	// The ARN of the core network attachment.
   409  	CoreNetworkAttachmentArn *string `pulumi:"coreNetworkAttachmentArn"`
   410  	// The configuration information for the VPN connection's customer gateway (in the native XML format).
   411  	CustomerGatewayConfiguration *string `pulumi:"customerGatewayConfiguration"`
   412  	// The ID of the customer gateway.
   413  	CustomerGatewayId *string `pulumi:"customerGatewayId"`
   414  	// Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
   415  	EnableAcceleration *bool `pulumi:"enableAcceleration"`
   416  	// The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
   417  	LocalIpv4NetworkCidr *string `pulumi:"localIpv4NetworkCidr"`
   418  	// The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
   419  	LocalIpv6NetworkCidr *string `pulumi:"localIpv6NetworkCidr"`
   420  	// Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
   421  	OutsideIpAddressType *string `pulumi:"outsideIpAddressType"`
   422  	// The IPv4 CIDR on the AWS side of the VPN connection.
   423  	RemoteIpv4NetworkCidr *string `pulumi:"remoteIpv4NetworkCidr"`
   424  	// The IPv6 CIDR on the AWS side of the VPN connection.
   425  	RemoteIpv6NetworkCidr *string `pulumi:"remoteIpv6NetworkCidr"`
   426  	// The static routes associated with the VPN connection. Detailed below.
   427  	Routes []VpnConnectionRouteType `pulumi:"routes"`
   428  	// Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
   429  	StaticRoutesOnly *bool `pulumi:"staticRoutesOnly"`
   430  	// Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   431  	Tags map[string]string `pulumi:"tags"`
   432  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   433  	//
   434  	// Deprecated: Please use `tags` instead.
   435  	TagsAll map[string]string `pulumi:"tagsAll"`
   436  	// When associated with an EC2 Transit Gateway (`transitGatewayId` argument), the attachment ID. See also the `ec2.Tag` resource for tagging the EC2 Transit Gateway VPN Attachment.
   437  	TransitGatewayAttachmentId *string `pulumi:"transitGatewayAttachmentId"`
   438  	// The ID of the EC2 Transit Gateway.
   439  	TransitGatewayId *string `pulumi:"transitGatewayId"`
   440  	// . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
   441  	TransportTransitGatewayAttachmentId *string `pulumi:"transportTransitGatewayAttachmentId"`
   442  	// The public IP address of the first VPN tunnel.
   443  	Tunnel1Address *string `pulumi:"tunnel1Address"`
   444  	// The bgp asn number of the first VPN tunnel.
   445  	Tunnel1BgpAsn *string `pulumi:"tunnel1BgpAsn"`
   446  	// The bgp holdtime of the first VPN tunnel.
   447  	Tunnel1BgpHoldtime *int `pulumi:"tunnel1BgpHoldtime"`
   448  	// The RFC 6890 link-local address of the first VPN tunnel (Customer Gateway Side).
   449  	Tunnel1CgwInsideAddress *string `pulumi:"tunnel1CgwInsideAddress"`
   450  	// The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   451  	Tunnel1DpdTimeoutAction *string `pulumi:"tunnel1DpdTimeoutAction"`
   452  	// The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
   453  	Tunnel1DpdTimeoutSeconds *int `pulumi:"tunnel1DpdTimeoutSeconds"`
   454  	// Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
   455  	Tunnel1EnableTunnelLifecycleControl *bool `pulumi:"tunnel1EnableTunnelLifecycleControl"`
   456  	// The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
   457  	Tunnel1IkeVersions []string `pulumi:"tunnel1IkeVersions"`
   458  	// The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   459  	Tunnel1InsideCidr *string `pulumi:"tunnel1InsideCidr"`
   460  	// The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   461  	Tunnel1InsideIpv6Cidr *string `pulumi:"tunnel1InsideIpv6Cidr"`
   462  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   463  	Tunnel1LogOptions *VpnConnectionTunnel1LogOptions `pulumi:"tunnel1LogOptions"`
   464  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   465  	Tunnel1Phase1DhGroupNumbers []int `pulumi:"tunnel1Phase1DhGroupNumbers"`
   466  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   467  	Tunnel1Phase1EncryptionAlgorithms []string `pulumi:"tunnel1Phase1EncryptionAlgorithms"`
   468  	// One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   469  	Tunnel1Phase1IntegrityAlgorithms []string `pulumi:"tunnel1Phase1IntegrityAlgorithms"`
   470  	// The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   471  	Tunnel1Phase1LifetimeSeconds *int `pulumi:"tunnel1Phase1LifetimeSeconds"`
   472  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   473  	Tunnel1Phase2DhGroupNumbers []int `pulumi:"tunnel1Phase2DhGroupNumbers"`
   474  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   475  	Tunnel1Phase2EncryptionAlgorithms []string `pulumi:"tunnel1Phase2EncryptionAlgorithms"`
   476  	// List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   477  	Tunnel1Phase2IntegrityAlgorithms []string `pulumi:"tunnel1Phase2IntegrityAlgorithms"`
   478  	// The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   479  	Tunnel1Phase2LifetimeSeconds *int `pulumi:"tunnel1Phase2LifetimeSeconds"`
   480  	// The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   481  	Tunnel1PresharedKey *string `pulumi:"tunnel1PresharedKey"`
   482  	// The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   483  	Tunnel1RekeyFuzzPercentage *int `pulumi:"tunnel1RekeyFuzzPercentage"`
   484  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
   485  	Tunnel1RekeyMarginTimeSeconds *int `pulumi:"tunnel1RekeyMarginTimeSeconds"`
   486  	// The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
   487  	Tunnel1ReplayWindowSize *int `pulumi:"tunnel1ReplayWindowSize"`
   488  	// The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   489  	Tunnel1StartupAction *string `pulumi:"tunnel1StartupAction"`
   490  	// The RFC 6890 link-local address of the first VPN tunnel (VPN Gateway Side).
   491  	Tunnel1VgwInsideAddress *string `pulumi:"tunnel1VgwInsideAddress"`
   492  	// The public IP address of the second VPN tunnel.
   493  	Tunnel2Address *string `pulumi:"tunnel2Address"`
   494  	// The bgp asn number of the second VPN tunnel.
   495  	Tunnel2BgpAsn *string `pulumi:"tunnel2BgpAsn"`
   496  	// The bgp holdtime of the second VPN tunnel.
   497  	Tunnel2BgpHoldtime *int `pulumi:"tunnel2BgpHoldtime"`
   498  	// The RFC 6890 link-local address of the second VPN tunnel (Customer Gateway Side).
   499  	Tunnel2CgwInsideAddress *string `pulumi:"tunnel2CgwInsideAddress"`
   500  	// The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   501  	Tunnel2DpdTimeoutAction *string `pulumi:"tunnel2DpdTimeoutAction"`
   502  	// The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
   503  	Tunnel2DpdTimeoutSeconds *int `pulumi:"tunnel2DpdTimeoutSeconds"`
   504  	// Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
   505  	Tunnel2EnableTunnelLifecycleControl *bool `pulumi:"tunnel2EnableTunnelLifecycleControl"`
   506  	// The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
   507  	Tunnel2IkeVersions []string `pulumi:"tunnel2IkeVersions"`
   508  	// The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   509  	Tunnel2InsideCidr *string `pulumi:"tunnel2InsideCidr"`
   510  	// The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   511  	Tunnel2InsideIpv6Cidr *string `pulumi:"tunnel2InsideIpv6Cidr"`
   512  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   513  	Tunnel2LogOptions *VpnConnectionTunnel2LogOptions `pulumi:"tunnel2LogOptions"`
   514  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   515  	Tunnel2Phase1DhGroupNumbers []int `pulumi:"tunnel2Phase1DhGroupNumbers"`
   516  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   517  	Tunnel2Phase1EncryptionAlgorithms []string `pulumi:"tunnel2Phase1EncryptionAlgorithms"`
   518  	// One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   519  	Tunnel2Phase1IntegrityAlgorithms []string `pulumi:"tunnel2Phase1IntegrityAlgorithms"`
   520  	// The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   521  	Tunnel2Phase1LifetimeSeconds *int `pulumi:"tunnel2Phase1LifetimeSeconds"`
   522  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   523  	Tunnel2Phase2DhGroupNumbers []int `pulumi:"tunnel2Phase2DhGroupNumbers"`
   524  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   525  	Tunnel2Phase2EncryptionAlgorithms []string `pulumi:"tunnel2Phase2EncryptionAlgorithms"`
   526  	// List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   527  	Tunnel2Phase2IntegrityAlgorithms []string `pulumi:"tunnel2Phase2IntegrityAlgorithms"`
   528  	// The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   529  	Tunnel2Phase2LifetimeSeconds *int `pulumi:"tunnel2Phase2LifetimeSeconds"`
   530  	// The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   531  	Tunnel2PresharedKey *string `pulumi:"tunnel2PresharedKey"`
   532  	// The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   533  	Tunnel2RekeyFuzzPercentage *int `pulumi:"tunnel2RekeyFuzzPercentage"`
   534  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
   535  	Tunnel2RekeyMarginTimeSeconds *int `pulumi:"tunnel2RekeyMarginTimeSeconds"`
   536  	// The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
   537  	Tunnel2ReplayWindowSize *int `pulumi:"tunnel2ReplayWindowSize"`
   538  	// The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   539  	Tunnel2StartupAction *string `pulumi:"tunnel2StartupAction"`
   540  	// The RFC 6890 link-local address of the second VPN tunnel (VPN Gateway Side).
   541  	Tunnel2VgwInsideAddress *string `pulumi:"tunnel2VgwInsideAddress"`
   542  	// Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
   543  	TunnelInsideIpVersion *string `pulumi:"tunnelInsideIpVersion"`
   544  	// The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
   545  	Type *string `pulumi:"type"`
   546  	// Telemetry for the VPN tunnels. Detailed below.
   547  	VgwTelemetries []VpnConnectionVgwTelemetry `pulumi:"vgwTelemetries"`
   548  	// The ID of the Virtual Private Gateway.
   549  	VpnGatewayId *string `pulumi:"vpnGatewayId"`
   550  }
   551  
   552  type VpnConnectionState struct {
   553  	// Amazon Resource Name (ARN) of the VPN Connection.
   554  	Arn pulumi.StringPtrInput
   555  	// The ARN of the core network.
   556  	CoreNetworkArn pulumi.StringPtrInput
   557  	// The ARN of the core network attachment.
   558  	CoreNetworkAttachmentArn pulumi.StringPtrInput
   559  	// The configuration information for the VPN connection's customer gateway (in the native XML format).
   560  	CustomerGatewayConfiguration pulumi.StringPtrInput
   561  	// The ID of the customer gateway.
   562  	CustomerGatewayId pulumi.StringPtrInput
   563  	// Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
   564  	EnableAcceleration pulumi.BoolPtrInput
   565  	// The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
   566  	LocalIpv4NetworkCidr pulumi.StringPtrInput
   567  	// The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
   568  	LocalIpv6NetworkCidr pulumi.StringPtrInput
   569  	// Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
   570  	OutsideIpAddressType pulumi.StringPtrInput
   571  	// The IPv4 CIDR on the AWS side of the VPN connection.
   572  	RemoteIpv4NetworkCidr pulumi.StringPtrInput
   573  	// The IPv6 CIDR on the AWS side of the VPN connection.
   574  	RemoteIpv6NetworkCidr pulumi.StringPtrInput
   575  	// The static routes associated with the VPN connection. Detailed below.
   576  	Routes VpnConnectionRouteTypeArrayInput
   577  	// Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
   578  	StaticRoutesOnly pulumi.BoolPtrInput
   579  	// Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   580  	Tags pulumi.StringMapInput
   581  	// A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
   582  	//
   583  	// Deprecated: Please use `tags` instead.
   584  	TagsAll pulumi.StringMapInput
   585  	// When associated with an EC2 Transit Gateway (`transitGatewayId` argument), the attachment ID. See also the `ec2.Tag` resource for tagging the EC2 Transit Gateway VPN Attachment.
   586  	TransitGatewayAttachmentId pulumi.StringPtrInput
   587  	// The ID of the EC2 Transit Gateway.
   588  	TransitGatewayId pulumi.StringPtrInput
   589  	// . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
   590  	TransportTransitGatewayAttachmentId pulumi.StringPtrInput
   591  	// The public IP address of the first VPN tunnel.
   592  	Tunnel1Address pulumi.StringPtrInput
   593  	// The bgp asn number of the first VPN tunnel.
   594  	Tunnel1BgpAsn pulumi.StringPtrInput
   595  	// The bgp holdtime of the first VPN tunnel.
   596  	Tunnel1BgpHoldtime pulumi.IntPtrInput
   597  	// The RFC 6890 link-local address of the first VPN tunnel (Customer Gateway Side).
   598  	Tunnel1CgwInsideAddress pulumi.StringPtrInput
   599  	// The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   600  	Tunnel1DpdTimeoutAction pulumi.StringPtrInput
   601  	// The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
   602  	Tunnel1DpdTimeoutSeconds pulumi.IntPtrInput
   603  	// Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
   604  	Tunnel1EnableTunnelLifecycleControl pulumi.BoolPtrInput
   605  	// The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
   606  	Tunnel1IkeVersions pulumi.StringArrayInput
   607  	// The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   608  	Tunnel1InsideCidr pulumi.StringPtrInput
   609  	// The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   610  	Tunnel1InsideIpv6Cidr pulumi.StringPtrInput
   611  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   612  	Tunnel1LogOptions VpnConnectionTunnel1LogOptionsPtrInput
   613  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   614  	Tunnel1Phase1DhGroupNumbers pulumi.IntArrayInput
   615  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   616  	Tunnel1Phase1EncryptionAlgorithms pulumi.StringArrayInput
   617  	// One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   618  	Tunnel1Phase1IntegrityAlgorithms pulumi.StringArrayInput
   619  	// The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   620  	Tunnel1Phase1LifetimeSeconds pulumi.IntPtrInput
   621  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   622  	Tunnel1Phase2DhGroupNumbers pulumi.IntArrayInput
   623  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   624  	Tunnel1Phase2EncryptionAlgorithms pulumi.StringArrayInput
   625  	// List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   626  	Tunnel1Phase2IntegrityAlgorithms pulumi.StringArrayInput
   627  	// The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   628  	Tunnel1Phase2LifetimeSeconds pulumi.IntPtrInput
   629  	// The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   630  	Tunnel1PresharedKey pulumi.StringPtrInput
   631  	// The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   632  	Tunnel1RekeyFuzzPercentage pulumi.IntPtrInput
   633  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
   634  	Tunnel1RekeyMarginTimeSeconds pulumi.IntPtrInput
   635  	// The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
   636  	Tunnel1ReplayWindowSize pulumi.IntPtrInput
   637  	// The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   638  	Tunnel1StartupAction pulumi.StringPtrInput
   639  	// The RFC 6890 link-local address of the first VPN tunnel (VPN Gateway Side).
   640  	Tunnel1VgwInsideAddress pulumi.StringPtrInput
   641  	// The public IP address of the second VPN tunnel.
   642  	Tunnel2Address pulumi.StringPtrInput
   643  	// The bgp asn number of the second VPN tunnel.
   644  	Tunnel2BgpAsn pulumi.StringPtrInput
   645  	// The bgp holdtime of the second VPN tunnel.
   646  	Tunnel2BgpHoldtime pulumi.IntPtrInput
   647  	// The RFC 6890 link-local address of the second VPN tunnel (Customer Gateway Side).
   648  	Tunnel2CgwInsideAddress pulumi.StringPtrInput
   649  	// The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   650  	Tunnel2DpdTimeoutAction pulumi.StringPtrInput
   651  	// The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
   652  	Tunnel2DpdTimeoutSeconds pulumi.IntPtrInput
   653  	// Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
   654  	Tunnel2EnableTunnelLifecycleControl pulumi.BoolPtrInput
   655  	// The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
   656  	Tunnel2IkeVersions pulumi.StringArrayInput
   657  	// The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   658  	Tunnel2InsideCidr pulumi.StringPtrInput
   659  	// The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   660  	Tunnel2InsideIpv6Cidr pulumi.StringPtrInput
   661  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   662  	Tunnel2LogOptions VpnConnectionTunnel2LogOptionsPtrInput
   663  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   664  	Tunnel2Phase1DhGroupNumbers pulumi.IntArrayInput
   665  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   666  	Tunnel2Phase1EncryptionAlgorithms pulumi.StringArrayInput
   667  	// One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   668  	Tunnel2Phase1IntegrityAlgorithms pulumi.StringArrayInput
   669  	// The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   670  	Tunnel2Phase1LifetimeSeconds pulumi.IntPtrInput
   671  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   672  	Tunnel2Phase2DhGroupNumbers pulumi.IntArrayInput
   673  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   674  	Tunnel2Phase2EncryptionAlgorithms pulumi.StringArrayInput
   675  	// List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   676  	Tunnel2Phase2IntegrityAlgorithms pulumi.StringArrayInput
   677  	// The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   678  	Tunnel2Phase2LifetimeSeconds pulumi.IntPtrInput
   679  	// The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   680  	Tunnel2PresharedKey pulumi.StringPtrInput
   681  	// The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   682  	Tunnel2RekeyFuzzPercentage pulumi.IntPtrInput
   683  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
   684  	Tunnel2RekeyMarginTimeSeconds pulumi.IntPtrInput
   685  	// The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
   686  	Tunnel2ReplayWindowSize pulumi.IntPtrInput
   687  	// The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   688  	Tunnel2StartupAction pulumi.StringPtrInput
   689  	// The RFC 6890 link-local address of the second VPN tunnel (VPN Gateway Side).
   690  	Tunnel2VgwInsideAddress pulumi.StringPtrInput
   691  	// Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
   692  	TunnelInsideIpVersion pulumi.StringPtrInput
   693  	// The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
   694  	Type pulumi.StringPtrInput
   695  	// Telemetry for the VPN tunnels. Detailed below.
   696  	VgwTelemetries VpnConnectionVgwTelemetryArrayInput
   697  	// The ID of the Virtual Private Gateway.
   698  	VpnGatewayId pulumi.StringPtrInput
   699  }
   700  
   701  func (VpnConnectionState) ElementType() reflect.Type {
   702  	return reflect.TypeOf((*vpnConnectionState)(nil)).Elem()
   703  }
   704  
   705  type vpnConnectionArgs struct {
   706  	// The ID of the customer gateway.
   707  	CustomerGatewayId string `pulumi:"customerGatewayId"`
   708  	// Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
   709  	EnableAcceleration *bool `pulumi:"enableAcceleration"`
   710  	// The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
   711  	LocalIpv4NetworkCidr *string `pulumi:"localIpv4NetworkCidr"`
   712  	// The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
   713  	LocalIpv6NetworkCidr *string `pulumi:"localIpv6NetworkCidr"`
   714  	// Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
   715  	OutsideIpAddressType *string `pulumi:"outsideIpAddressType"`
   716  	// The IPv4 CIDR on the AWS side of the VPN connection.
   717  	RemoteIpv4NetworkCidr *string `pulumi:"remoteIpv4NetworkCidr"`
   718  	// The IPv6 CIDR on the AWS side of the VPN connection.
   719  	RemoteIpv6NetworkCidr *string `pulumi:"remoteIpv6NetworkCidr"`
   720  	// Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
   721  	StaticRoutesOnly *bool `pulumi:"staticRoutesOnly"`
   722  	// Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   723  	Tags map[string]string `pulumi:"tags"`
   724  	// The ID of the EC2 Transit Gateway.
   725  	TransitGatewayId *string `pulumi:"transitGatewayId"`
   726  	// . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
   727  	TransportTransitGatewayAttachmentId *string `pulumi:"transportTransitGatewayAttachmentId"`
   728  	// The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   729  	Tunnel1DpdTimeoutAction *string `pulumi:"tunnel1DpdTimeoutAction"`
   730  	// The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
   731  	Tunnel1DpdTimeoutSeconds *int `pulumi:"tunnel1DpdTimeoutSeconds"`
   732  	// Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
   733  	Tunnel1EnableTunnelLifecycleControl *bool `pulumi:"tunnel1EnableTunnelLifecycleControl"`
   734  	// The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
   735  	Tunnel1IkeVersions []string `pulumi:"tunnel1IkeVersions"`
   736  	// The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   737  	Tunnel1InsideCidr *string `pulumi:"tunnel1InsideCidr"`
   738  	// The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   739  	Tunnel1InsideIpv6Cidr *string `pulumi:"tunnel1InsideIpv6Cidr"`
   740  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   741  	Tunnel1LogOptions *VpnConnectionTunnel1LogOptions `pulumi:"tunnel1LogOptions"`
   742  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   743  	Tunnel1Phase1DhGroupNumbers []int `pulumi:"tunnel1Phase1DhGroupNumbers"`
   744  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   745  	Tunnel1Phase1EncryptionAlgorithms []string `pulumi:"tunnel1Phase1EncryptionAlgorithms"`
   746  	// One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   747  	Tunnel1Phase1IntegrityAlgorithms []string `pulumi:"tunnel1Phase1IntegrityAlgorithms"`
   748  	// The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   749  	Tunnel1Phase1LifetimeSeconds *int `pulumi:"tunnel1Phase1LifetimeSeconds"`
   750  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   751  	Tunnel1Phase2DhGroupNumbers []int `pulumi:"tunnel1Phase2DhGroupNumbers"`
   752  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   753  	Tunnel1Phase2EncryptionAlgorithms []string `pulumi:"tunnel1Phase2EncryptionAlgorithms"`
   754  	// List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   755  	Tunnel1Phase2IntegrityAlgorithms []string `pulumi:"tunnel1Phase2IntegrityAlgorithms"`
   756  	// The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   757  	Tunnel1Phase2LifetimeSeconds *int `pulumi:"tunnel1Phase2LifetimeSeconds"`
   758  	// The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   759  	Tunnel1PresharedKey *string `pulumi:"tunnel1PresharedKey"`
   760  	// The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   761  	Tunnel1RekeyFuzzPercentage *int `pulumi:"tunnel1RekeyFuzzPercentage"`
   762  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
   763  	Tunnel1RekeyMarginTimeSeconds *int `pulumi:"tunnel1RekeyMarginTimeSeconds"`
   764  	// The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
   765  	Tunnel1ReplayWindowSize *int `pulumi:"tunnel1ReplayWindowSize"`
   766  	// The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   767  	Tunnel1StartupAction *string `pulumi:"tunnel1StartupAction"`
   768  	// The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   769  	Tunnel2DpdTimeoutAction *string `pulumi:"tunnel2DpdTimeoutAction"`
   770  	// The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
   771  	Tunnel2DpdTimeoutSeconds *int `pulumi:"tunnel2DpdTimeoutSeconds"`
   772  	// Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
   773  	Tunnel2EnableTunnelLifecycleControl *bool `pulumi:"tunnel2EnableTunnelLifecycleControl"`
   774  	// The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
   775  	Tunnel2IkeVersions []string `pulumi:"tunnel2IkeVersions"`
   776  	// The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   777  	Tunnel2InsideCidr *string `pulumi:"tunnel2InsideCidr"`
   778  	// The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   779  	Tunnel2InsideIpv6Cidr *string `pulumi:"tunnel2InsideIpv6Cidr"`
   780  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   781  	Tunnel2LogOptions *VpnConnectionTunnel2LogOptions `pulumi:"tunnel2LogOptions"`
   782  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   783  	Tunnel2Phase1DhGroupNumbers []int `pulumi:"tunnel2Phase1DhGroupNumbers"`
   784  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   785  	Tunnel2Phase1EncryptionAlgorithms []string `pulumi:"tunnel2Phase1EncryptionAlgorithms"`
   786  	// One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   787  	Tunnel2Phase1IntegrityAlgorithms []string `pulumi:"tunnel2Phase1IntegrityAlgorithms"`
   788  	// The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   789  	Tunnel2Phase1LifetimeSeconds *int `pulumi:"tunnel2Phase1LifetimeSeconds"`
   790  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   791  	Tunnel2Phase2DhGroupNumbers []int `pulumi:"tunnel2Phase2DhGroupNumbers"`
   792  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   793  	Tunnel2Phase2EncryptionAlgorithms []string `pulumi:"tunnel2Phase2EncryptionAlgorithms"`
   794  	// List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   795  	Tunnel2Phase2IntegrityAlgorithms []string `pulumi:"tunnel2Phase2IntegrityAlgorithms"`
   796  	// The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   797  	Tunnel2Phase2LifetimeSeconds *int `pulumi:"tunnel2Phase2LifetimeSeconds"`
   798  	// The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   799  	Tunnel2PresharedKey *string `pulumi:"tunnel2PresharedKey"`
   800  	// The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   801  	Tunnel2RekeyFuzzPercentage *int `pulumi:"tunnel2RekeyFuzzPercentage"`
   802  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
   803  	Tunnel2RekeyMarginTimeSeconds *int `pulumi:"tunnel2RekeyMarginTimeSeconds"`
   804  	// The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
   805  	Tunnel2ReplayWindowSize *int `pulumi:"tunnel2ReplayWindowSize"`
   806  	// The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   807  	Tunnel2StartupAction *string `pulumi:"tunnel2StartupAction"`
   808  	// Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
   809  	TunnelInsideIpVersion *string `pulumi:"tunnelInsideIpVersion"`
   810  	// The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
   811  	Type string `pulumi:"type"`
   812  	// The ID of the Virtual Private Gateway.
   813  	VpnGatewayId *string `pulumi:"vpnGatewayId"`
   814  }
   815  
   816  // The set of arguments for constructing a VpnConnection resource.
   817  type VpnConnectionArgs struct {
   818  	// The ID of the customer gateway.
   819  	CustomerGatewayId pulumi.StringInput
   820  	// Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
   821  	EnableAcceleration pulumi.BoolPtrInput
   822  	// The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
   823  	LocalIpv4NetworkCidr pulumi.StringPtrInput
   824  	// The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
   825  	LocalIpv6NetworkCidr pulumi.StringPtrInput
   826  	// Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
   827  	OutsideIpAddressType pulumi.StringPtrInput
   828  	// The IPv4 CIDR on the AWS side of the VPN connection.
   829  	RemoteIpv4NetworkCidr pulumi.StringPtrInput
   830  	// The IPv6 CIDR on the AWS side of the VPN connection.
   831  	RemoteIpv6NetworkCidr pulumi.StringPtrInput
   832  	// Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
   833  	StaticRoutesOnly pulumi.BoolPtrInput
   834  	// Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
   835  	Tags pulumi.StringMapInput
   836  	// The ID of the EC2 Transit Gateway.
   837  	TransitGatewayId pulumi.StringPtrInput
   838  	// . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
   839  	TransportTransitGatewayAttachmentId pulumi.StringPtrInput
   840  	// The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   841  	Tunnel1DpdTimeoutAction pulumi.StringPtrInput
   842  	// The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
   843  	Tunnel1DpdTimeoutSeconds pulumi.IntPtrInput
   844  	// Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
   845  	Tunnel1EnableTunnelLifecycleControl pulumi.BoolPtrInput
   846  	// The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
   847  	Tunnel1IkeVersions pulumi.StringArrayInput
   848  	// The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   849  	Tunnel1InsideCidr pulumi.StringPtrInput
   850  	// The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   851  	Tunnel1InsideIpv6Cidr pulumi.StringPtrInput
   852  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   853  	Tunnel1LogOptions VpnConnectionTunnel1LogOptionsPtrInput
   854  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   855  	Tunnel1Phase1DhGroupNumbers pulumi.IntArrayInput
   856  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   857  	Tunnel1Phase1EncryptionAlgorithms pulumi.StringArrayInput
   858  	// One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   859  	Tunnel1Phase1IntegrityAlgorithms pulumi.StringArrayInput
   860  	// The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   861  	Tunnel1Phase1LifetimeSeconds pulumi.IntPtrInput
   862  	// List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   863  	Tunnel1Phase2DhGroupNumbers pulumi.IntArrayInput
   864  	// List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   865  	Tunnel1Phase2EncryptionAlgorithms pulumi.StringArrayInput
   866  	// List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   867  	Tunnel1Phase2IntegrityAlgorithms pulumi.StringArrayInput
   868  	// The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   869  	Tunnel1Phase2LifetimeSeconds pulumi.IntPtrInput
   870  	// The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   871  	Tunnel1PresharedKey pulumi.StringPtrInput
   872  	// The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   873  	Tunnel1RekeyFuzzPercentage pulumi.IntPtrInput
   874  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
   875  	Tunnel1RekeyMarginTimeSeconds pulumi.IntPtrInput
   876  	// The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
   877  	Tunnel1ReplayWindowSize pulumi.IntPtrInput
   878  	// The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   879  	Tunnel1StartupAction pulumi.StringPtrInput
   880  	// The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
   881  	Tunnel2DpdTimeoutAction pulumi.StringPtrInput
   882  	// The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
   883  	Tunnel2DpdTimeoutSeconds pulumi.IntPtrInput
   884  	// Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
   885  	Tunnel2EnableTunnelLifecycleControl pulumi.BoolPtrInput
   886  	// The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
   887  	Tunnel2IkeVersions pulumi.StringArrayInput
   888  	// The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
   889  	Tunnel2InsideCidr pulumi.StringPtrInput
   890  	// The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
   891  	Tunnel2InsideIpv6Cidr pulumi.StringPtrInput
   892  	// Options for logging VPN tunnel activity. See Log Options below for more details.
   893  	Tunnel2LogOptions VpnConnectionTunnel2LogOptionsPtrInput
   894  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
   895  	Tunnel2Phase1DhGroupNumbers pulumi.IntArrayInput
   896  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   897  	Tunnel2Phase1EncryptionAlgorithms pulumi.StringArrayInput
   898  	// One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   899  	Tunnel2Phase1IntegrityAlgorithms pulumi.StringArrayInput
   900  	// The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
   901  	Tunnel2Phase1LifetimeSeconds pulumi.IntPtrInput
   902  	// List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
   903  	Tunnel2Phase2DhGroupNumbers pulumi.IntArrayInput
   904  	// List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
   905  	Tunnel2Phase2EncryptionAlgorithms pulumi.StringArrayInput
   906  	// List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
   907  	Tunnel2Phase2IntegrityAlgorithms pulumi.StringArrayInput
   908  	// The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
   909  	Tunnel2Phase2LifetimeSeconds pulumi.IntPtrInput
   910  	// The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
   911  	Tunnel2PresharedKey pulumi.StringPtrInput
   912  	// The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
   913  	Tunnel2RekeyFuzzPercentage pulumi.IntPtrInput
   914  	// The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
   915  	Tunnel2RekeyMarginTimeSeconds pulumi.IntPtrInput
   916  	// The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
   917  	Tunnel2ReplayWindowSize pulumi.IntPtrInput
   918  	// The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
   919  	Tunnel2StartupAction pulumi.StringPtrInput
   920  	// Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
   921  	TunnelInsideIpVersion pulumi.StringPtrInput
   922  	// The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
   923  	Type pulumi.StringInput
   924  	// The ID of the Virtual Private Gateway.
   925  	VpnGatewayId pulumi.StringPtrInput
   926  }
   927  
   928  func (VpnConnectionArgs) ElementType() reflect.Type {
   929  	return reflect.TypeOf((*vpnConnectionArgs)(nil)).Elem()
   930  }
   931  
   932  type VpnConnectionInput interface {
   933  	pulumi.Input
   934  
   935  	ToVpnConnectionOutput() VpnConnectionOutput
   936  	ToVpnConnectionOutputWithContext(ctx context.Context) VpnConnectionOutput
   937  }
   938  
   939  func (*VpnConnection) ElementType() reflect.Type {
   940  	return reflect.TypeOf((**VpnConnection)(nil)).Elem()
   941  }
   942  
   943  func (i *VpnConnection) ToVpnConnectionOutput() VpnConnectionOutput {
   944  	return i.ToVpnConnectionOutputWithContext(context.Background())
   945  }
   946  
   947  func (i *VpnConnection) ToVpnConnectionOutputWithContext(ctx context.Context) VpnConnectionOutput {
   948  	return pulumi.ToOutputWithContext(ctx, i).(VpnConnectionOutput)
   949  }
   950  
   951  // VpnConnectionArrayInput is an input type that accepts VpnConnectionArray and VpnConnectionArrayOutput values.
   952  // You can construct a concrete instance of `VpnConnectionArrayInput` via:
   953  //
   954  //	VpnConnectionArray{ VpnConnectionArgs{...} }
   955  type VpnConnectionArrayInput interface {
   956  	pulumi.Input
   957  
   958  	ToVpnConnectionArrayOutput() VpnConnectionArrayOutput
   959  	ToVpnConnectionArrayOutputWithContext(context.Context) VpnConnectionArrayOutput
   960  }
   961  
   962  type VpnConnectionArray []VpnConnectionInput
   963  
   964  func (VpnConnectionArray) ElementType() reflect.Type {
   965  	return reflect.TypeOf((*[]*VpnConnection)(nil)).Elem()
   966  }
   967  
   968  func (i VpnConnectionArray) ToVpnConnectionArrayOutput() VpnConnectionArrayOutput {
   969  	return i.ToVpnConnectionArrayOutputWithContext(context.Background())
   970  }
   971  
   972  func (i VpnConnectionArray) ToVpnConnectionArrayOutputWithContext(ctx context.Context) VpnConnectionArrayOutput {
   973  	return pulumi.ToOutputWithContext(ctx, i).(VpnConnectionArrayOutput)
   974  }
   975  
   976  // VpnConnectionMapInput is an input type that accepts VpnConnectionMap and VpnConnectionMapOutput values.
   977  // You can construct a concrete instance of `VpnConnectionMapInput` via:
   978  //
   979  //	VpnConnectionMap{ "key": VpnConnectionArgs{...} }
   980  type VpnConnectionMapInput interface {
   981  	pulumi.Input
   982  
   983  	ToVpnConnectionMapOutput() VpnConnectionMapOutput
   984  	ToVpnConnectionMapOutputWithContext(context.Context) VpnConnectionMapOutput
   985  }
   986  
   987  type VpnConnectionMap map[string]VpnConnectionInput
   988  
   989  func (VpnConnectionMap) ElementType() reflect.Type {
   990  	return reflect.TypeOf((*map[string]*VpnConnection)(nil)).Elem()
   991  }
   992  
   993  func (i VpnConnectionMap) ToVpnConnectionMapOutput() VpnConnectionMapOutput {
   994  	return i.ToVpnConnectionMapOutputWithContext(context.Background())
   995  }
   996  
   997  func (i VpnConnectionMap) ToVpnConnectionMapOutputWithContext(ctx context.Context) VpnConnectionMapOutput {
   998  	return pulumi.ToOutputWithContext(ctx, i).(VpnConnectionMapOutput)
   999  }
  1000  
  1001  type VpnConnectionOutput struct{ *pulumi.OutputState }
  1002  
  1003  func (VpnConnectionOutput) ElementType() reflect.Type {
  1004  	return reflect.TypeOf((**VpnConnection)(nil)).Elem()
  1005  }
  1006  
  1007  func (o VpnConnectionOutput) ToVpnConnectionOutput() VpnConnectionOutput {
  1008  	return o
  1009  }
  1010  
  1011  func (o VpnConnectionOutput) ToVpnConnectionOutputWithContext(ctx context.Context) VpnConnectionOutput {
  1012  	return o
  1013  }
  1014  
  1015  // Amazon Resource Name (ARN) of the VPN Connection.
  1016  func (o VpnConnectionOutput) Arn() pulumi.StringOutput {
  1017  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Arn }).(pulumi.StringOutput)
  1018  }
  1019  
  1020  // The ARN of the core network.
  1021  func (o VpnConnectionOutput) CoreNetworkArn() pulumi.StringOutput {
  1022  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.CoreNetworkArn }).(pulumi.StringOutput)
  1023  }
  1024  
  1025  // The ARN of the core network attachment.
  1026  func (o VpnConnectionOutput) CoreNetworkAttachmentArn() pulumi.StringOutput {
  1027  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.CoreNetworkAttachmentArn }).(pulumi.StringOutput)
  1028  }
  1029  
  1030  // The configuration information for the VPN connection's customer gateway (in the native XML format).
  1031  func (o VpnConnectionOutput) CustomerGatewayConfiguration() pulumi.StringOutput {
  1032  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.CustomerGatewayConfiguration }).(pulumi.StringOutput)
  1033  }
  1034  
  1035  // The ID of the customer gateway.
  1036  func (o VpnConnectionOutput) CustomerGatewayId() pulumi.StringOutput {
  1037  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.CustomerGatewayId }).(pulumi.StringOutput)
  1038  }
  1039  
  1040  // Indicate whether to enable acceleration for the VPN connection. Supports only EC2 Transit Gateway.
  1041  func (o VpnConnectionOutput) EnableAcceleration() pulumi.BoolOutput {
  1042  	return o.ApplyT(func(v *VpnConnection) pulumi.BoolOutput { return v.EnableAcceleration }).(pulumi.BoolOutput)
  1043  }
  1044  
  1045  // The IPv4 CIDR on the customer gateway (on-premises) side of the VPN connection.
  1046  func (o VpnConnectionOutput) LocalIpv4NetworkCidr() pulumi.StringOutput {
  1047  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.LocalIpv4NetworkCidr }).(pulumi.StringOutput)
  1048  }
  1049  
  1050  // The IPv6 CIDR on the customer gateway (on-premises) side of the VPN connection.
  1051  func (o VpnConnectionOutput) LocalIpv6NetworkCidr() pulumi.StringOutput {
  1052  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.LocalIpv6NetworkCidr }).(pulumi.StringOutput)
  1053  }
  1054  
  1055  // Indicates if a Public S2S VPN or Private S2S VPN over AWS Direct Connect. Valid values are `PublicIpv4 | PrivateIpv4`
  1056  func (o VpnConnectionOutput) OutsideIpAddressType() pulumi.StringOutput {
  1057  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.OutsideIpAddressType }).(pulumi.StringOutput)
  1058  }
  1059  
  1060  // The IPv4 CIDR on the AWS side of the VPN connection.
  1061  func (o VpnConnectionOutput) RemoteIpv4NetworkCidr() pulumi.StringOutput {
  1062  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.RemoteIpv4NetworkCidr }).(pulumi.StringOutput)
  1063  }
  1064  
  1065  // The IPv6 CIDR on the AWS side of the VPN connection.
  1066  func (o VpnConnectionOutput) RemoteIpv6NetworkCidr() pulumi.StringOutput {
  1067  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.RemoteIpv6NetworkCidr }).(pulumi.StringOutput)
  1068  }
  1069  
  1070  // The static routes associated with the VPN connection. Detailed below.
  1071  func (o VpnConnectionOutput) Routes() VpnConnectionRouteTypeArrayOutput {
  1072  	return o.ApplyT(func(v *VpnConnection) VpnConnectionRouteTypeArrayOutput { return v.Routes }).(VpnConnectionRouteTypeArrayOutput)
  1073  }
  1074  
  1075  // Whether the VPN connection uses static routes exclusively. Static routes must be used for devices that don't support BGP.
  1076  func (o VpnConnectionOutput) StaticRoutesOnly() pulumi.BoolOutput {
  1077  	return o.ApplyT(func(v *VpnConnection) pulumi.BoolOutput { return v.StaticRoutesOnly }).(pulumi.BoolOutput)
  1078  }
  1079  
  1080  // Tags to apply to the connection. If configured with a provider `defaultTags` configuration block present, tags with matching keys will overwrite those defined at the provider-level.
  1081  func (o VpnConnectionOutput) Tags() pulumi.StringMapOutput {
  1082  	return o.ApplyT(func(v *VpnConnection) pulumi.StringMapOutput { return v.Tags }).(pulumi.StringMapOutput)
  1083  }
  1084  
  1085  // A map of tags assigned to the resource, including those inherited from the provider `defaultTags` configuration block.
  1086  //
  1087  // Deprecated: Please use `tags` instead.
  1088  func (o VpnConnectionOutput) TagsAll() pulumi.StringMapOutput {
  1089  	return o.ApplyT(func(v *VpnConnection) pulumi.StringMapOutput { return v.TagsAll }).(pulumi.StringMapOutput)
  1090  }
  1091  
  1092  // When associated with an EC2 Transit Gateway (`transitGatewayId` argument), the attachment ID. See also the `ec2.Tag` resource for tagging the EC2 Transit Gateway VPN Attachment.
  1093  func (o VpnConnectionOutput) TransitGatewayAttachmentId() pulumi.StringOutput {
  1094  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.TransitGatewayAttachmentId }).(pulumi.StringOutput)
  1095  }
  1096  
  1097  // The ID of the EC2 Transit Gateway.
  1098  func (o VpnConnectionOutput) TransitGatewayId() pulumi.StringPtrOutput {
  1099  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.TransitGatewayId }).(pulumi.StringPtrOutput)
  1100  }
  1101  
  1102  // . The attachment ID of the Transit Gateway attachment to Direct Connect Gateway. The ID is obtained through a data source only.
  1103  func (o VpnConnectionOutput) TransportTransitGatewayAttachmentId() pulumi.StringPtrOutput {
  1104  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.TransportTransitGatewayAttachmentId }).(pulumi.StringPtrOutput)
  1105  }
  1106  
  1107  // The public IP address of the first VPN tunnel.
  1108  func (o VpnConnectionOutput) Tunnel1Address() pulumi.StringOutput {
  1109  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1Address }).(pulumi.StringOutput)
  1110  }
  1111  
  1112  // The bgp asn number of the first VPN tunnel.
  1113  func (o VpnConnectionOutput) Tunnel1BgpAsn() pulumi.StringOutput {
  1114  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1BgpAsn }).(pulumi.StringOutput)
  1115  }
  1116  
  1117  // The bgp holdtime of the first VPN tunnel.
  1118  func (o VpnConnectionOutput) Tunnel1BgpHoldtime() pulumi.IntOutput {
  1119  	return o.ApplyT(func(v *VpnConnection) pulumi.IntOutput { return v.Tunnel1BgpHoldtime }).(pulumi.IntOutput)
  1120  }
  1121  
  1122  // The RFC 6890 link-local address of the first VPN tunnel (Customer Gateway Side).
  1123  func (o VpnConnectionOutput) Tunnel1CgwInsideAddress() pulumi.StringOutput {
  1124  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1CgwInsideAddress }).(pulumi.StringOutput)
  1125  }
  1126  
  1127  // The action to take after DPD timeout occurs for the first VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
  1128  func (o VpnConnectionOutput) Tunnel1DpdTimeoutAction() pulumi.StringPtrOutput {
  1129  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.Tunnel1DpdTimeoutAction }).(pulumi.StringPtrOutput)
  1130  }
  1131  
  1132  // The number of seconds after which a DPD timeout occurs for the first VPN tunnel. Valid value is equal or higher than `30`.
  1133  func (o VpnConnectionOutput) Tunnel1DpdTimeoutSeconds() pulumi.IntPtrOutput {
  1134  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1DpdTimeoutSeconds }).(pulumi.IntPtrOutput)
  1135  }
  1136  
  1137  // Turn on or off tunnel endpoint lifecycle control feature for the first VPN tunnel. Valid values are `true | false`.
  1138  func (o VpnConnectionOutput) Tunnel1EnableTunnelLifecycleControl() pulumi.BoolPtrOutput {
  1139  	return o.ApplyT(func(v *VpnConnection) pulumi.BoolPtrOutput { return v.Tunnel1EnableTunnelLifecycleControl }).(pulumi.BoolPtrOutput)
  1140  }
  1141  
  1142  // The IKE versions that are permitted for the first VPN tunnel. Valid values are `ikev1 | ikev2`.
  1143  func (o VpnConnectionOutput) Tunnel1IkeVersions() pulumi.StringArrayOutput {
  1144  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel1IkeVersions }).(pulumi.StringArrayOutput)
  1145  }
  1146  
  1147  // The CIDR block of the inside IP addresses for the first VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
  1148  func (o VpnConnectionOutput) Tunnel1InsideCidr() pulumi.StringOutput {
  1149  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1InsideCidr }).(pulumi.StringOutput)
  1150  }
  1151  
  1152  // The range of inside IPv6 addresses for the first VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
  1153  func (o VpnConnectionOutput) Tunnel1InsideIpv6Cidr() pulumi.StringOutput {
  1154  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1InsideIpv6Cidr }).(pulumi.StringOutput)
  1155  }
  1156  
  1157  // Options for logging VPN tunnel activity. See Log Options below for more details.
  1158  func (o VpnConnectionOutput) Tunnel1LogOptions() VpnConnectionTunnel1LogOptionsOutput {
  1159  	return o.ApplyT(func(v *VpnConnection) VpnConnectionTunnel1LogOptionsOutput { return v.Tunnel1LogOptions }).(VpnConnectionTunnel1LogOptionsOutput)
  1160  }
  1161  
  1162  // List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
  1163  func (o VpnConnectionOutput) Tunnel1Phase1DhGroupNumbers() pulumi.IntArrayOutput {
  1164  	return o.ApplyT(func(v *VpnConnection) pulumi.IntArrayOutput { return v.Tunnel1Phase1DhGroupNumbers }).(pulumi.IntArrayOutput)
  1165  }
  1166  
  1167  // List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
  1168  func (o VpnConnectionOutput) Tunnel1Phase1EncryptionAlgorithms() pulumi.StringArrayOutput {
  1169  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel1Phase1EncryptionAlgorithms }).(pulumi.StringArrayOutput)
  1170  }
  1171  
  1172  // One or more integrity algorithms that are permitted for the first VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
  1173  func (o VpnConnectionOutput) Tunnel1Phase1IntegrityAlgorithms() pulumi.StringArrayOutput {
  1174  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel1Phase1IntegrityAlgorithms }).(pulumi.StringArrayOutput)
  1175  }
  1176  
  1177  // The lifetime for phase 1 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `28800`.
  1178  func (o VpnConnectionOutput) Tunnel1Phase1LifetimeSeconds() pulumi.IntPtrOutput {
  1179  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1Phase1LifetimeSeconds }).(pulumi.IntPtrOutput)
  1180  }
  1181  
  1182  // List of one or more Diffie-Hellman group numbers that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
  1183  func (o VpnConnectionOutput) Tunnel1Phase2DhGroupNumbers() pulumi.IntArrayOutput {
  1184  	return o.ApplyT(func(v *VpnConnection) pulumi.IntArrayOutput { return v.Tunnel1Phase2DhGroupNumbers }).(pulumi.IntArrayOutput)
  1185  }
  1186  
  1187  // List of one or more encryption algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
  1188  func (o VpnConnectionOutput) Tunnel1Phase2EncryptionAlgorithms() pulumi.StringArrayOutput {
  1189  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel1Phase2EncryptionAlgorithms }).(pulumi.StringArrayOutput)
  1190  }
  1191  
  1192  // List of one or more integrity algorithms that are permitted for the first VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
  1193  func (o VpnConnectionOutput) Tunnel1Phase2IntegrityAlgorithms() pulumi.StringArrayOutput {
  1194  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel1Phase2IntegrityAlgorithms }).(pulumi.StringArrayOutput)
  1195  }
  1196  
  1197  // The lifetime for phase 2 of the IKE negotiation for the first VPN tunnel, in seconds. Valid value is between `900` and `3600`.
  1198  func (o VpnConnectionOutput) Tunnel1Phase2LifetimeSeconds() pulumi.IntPtrOutput {
  1199  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1Phase2LifetimeSeconds }).(pulumi.IntPtrOutput)
  1200  }
  1201  
  1202  // The preshared key of the first VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
  1203  func (o VpnConnectionOutput) Tunnel1PresharedKey() pulumi.StringOutput {
  1204  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1PresharedKey }).(pulumi.StringOutput)
  1205  }
  1206  
  1207  // The percentage of the rekey window for the first VPN tunnel (determined by `tunnel1RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
  1208  func (o VpnConnectionOutput) Tunnel1RekeyFuzzPercentage() pulumi.IntPtrOutput {
  1209  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1RekeyFuzzPercentage }).(pulumi.IntPtrOutput)
  1210  }
  1211  
  1212  // The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the first VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel1RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel1Phase2LifetimeSeconds`.
  1213  func (o VpnConnectionOutput) Tunnel1RekeyMarginTimeSeconds() pulumi.IntPtrOutput {
  1214  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1RekeyMarginTimeSeconds }).(pulumi.IntPtrOutput)
  1215  }
  1216  
  1217  // The number of packets in an IKE replay window for the first VPN tunnel. Valid value is between `64` and `2048`.
  1218  func (o VpnConnectionOutput) Tunnel1ReplayWindowSize() pulumi.IntPtrOutput {
  1219  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel1ReplayWindowSize }).(pulumi.IntPtrOutput)
  1220  }
  1221  
  1222  // The action to take when the establishing the tunnel for the first VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
  1223  func (o VpnConnectionOutput) Tunnel1StartupAction() pulumi.StringPtrOutput {
  1224  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.Tunnel1StartupAction }).(pulumi.StringPtrOutput)
  1225  }
  1226  
  1227  // The RFC 6890 link-local address of the first VPN tunnel (VPN Gateway Side).
  1228  func (o VpnConnectionOutput) Tunnel1VgwInsideAddress() pulumi.StringOutput {
  1229  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel1VgwInsideAddress }).(pulumi.StringOutput)
  1230  }
  1231  
  1232  // The public IP address of the second VPN tunnel.
  1233  func (o VpnConnectionOutput) Tunnel2Address() pulumi.StringOutput {
  1234  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2Address }).(pulumi.StringOutput)
  1235  }
  1236  
  1237  // The bgp asn number of the second VPN tunnel.
  1238  func (o VpnConnectionOutput) Tunnel2BgpAsn() pulumi.StringOutput {
  1239  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2BgpAsn }).(pulumi.StringOutput)
  1240  }
  1241  
  1242  // The bgp holdtime of the second VPN tunnel.
  1243  func (o VpnConnectionOutput) Tunnel2BgpHoldtime() pulumi.IntOutput {
  1244  	return o.ApplyT(func(v *VpnConnection) pulumi.IntOutput { return v.Tunnel2BgpHoldtime }).(pulumi.IntOutput)
  1245  }
  1246  
  1247  // The RFC 6890 link-local address of the second VPN tunnel (Customer Gateway Side).
  1248  func (o VpnConnectionOutput) Tunnel2CgwInsideAddress() pulumi.StringOutput {
  1249  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2CgwInsideAddress }).(pulumi.StringOutput)
  1250  }
  1251  
  1252  // The action to take after DPD timeout occurs for the second VPN tunnel. Specify restart to restart the IKE initiation. Specify clear to end the IKE session. Valid values are `clear | none | restart`.
  1253  func (o VpnConnectionOutput) Tunnel2DpdTimeoutAction() pulumi.StringPtrOutput {
  1254  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.Tunnel2DpdTimeoutAction }).(pulumi.StringPtrOutput)
  1255  }
  1256  
  1257  // The number of seconds after which a DPD timeout occurs for the second VPN tunnel. Valid value is equal or higher than `30`.
  1258  func (o VpnConnectionOutput) Tunnel2DpdTimeoutSeconds() pulumi.IntPtrOutput {
  1259  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2DpdTimeoutSeconds }).(pulumi.IntPtrOutput)
  1260  }
  1261  
  1262  // Turn on or off tunnel endpoint lifecycle control feature for the second VPN tunnel. Valid values are `true | false`.
  1263  func (o VpnConnectionOutput) Tunnel2EnableTunnelLifecycleControl() pulumi.BoolPtrOutput {
  1264  	return o.ApplyT(func(v *VpnConnection) pulumi.BoolPtrOutput { return v.Tunnel2EnableTunnelLifecycleControl }).(pulumi.BoolPtrOutput)
  1265  }
  1266  
  1267  // The IKE versions that are permitted for the second VPN tunnel. Valid values are `ikev1 | ikev2`.
  1268  func (o VpnConnectionOutput) Tunnel2IkeVersions() pulumi.StringArrayOutput {
  1269  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel2IkeVersions }).(pulumi.StringArrayOutput)
  1270  }
  1271  
  1272  // The CIDR block of the inside IP addresses for the second VPN tunnel. Valid value is a size /30 CIDR block from the 169.254.0.0/16 range.
  1273  func (o VpnConnectionOutput) Tunnel2InsideCidr() pulumi.StringOutput {
  1274  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2InsideCidr }).(pulumi.StringOutput)
  1275  }
  1276  
  1277  // The range of inside IPv6 addresses for the second VPN tunnel. Supports only EC2 Transit Gateway. Valid value is a size /126 CIDR block from the local fd00::/8 range.
  1278  func (o VpnConnectionOutput) Tunnel2InsideIpv6Cidr() pulumi.StringOutput {
  1279  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2InsideIpv6Cidr }).(pulumi.StringOutput)
  1280  }
  1281  
  1282  // Options for logging VPN tunnel activity. See Log Options below for more details.
  1283  func (o VpnConnectionOutput) Tunnel2LogOptions() VpnConnectionTunnel2LogOptionsOutput {
  1284  	return o.ApplyT(func(v *VpnConnection) VpnConnectionTunnel2LogOptionsOutput { return v.Tunnel2LogOptions }).(VpnConnectionTunnel2LogOptionsOutput)
  1285  }
  1286  
  1287  // List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `  2 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 `.
  1288  func (o VpnConnectionOutput) Tunnel2Phase1DhGroupNumbers() pulumi.IntArrayOutput {
  1289  	return o.ApplyT(func(v *VpnConnection) pulumi.IntArrayOutput { return v.Tunnel2Phase1DhGroupNumbers }).(pulumi.IntArrayOutput)
  1290  }
  1291  
  1292  // List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
  1293  func (o VpnConnectionOutput) Tunnel2Phase1EncryptionAlgorithms() pulumi.StringArrayOutput {
  1294  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel2Phase1EncryptionAlgorithms }).(pulumi.StringArrayOutput)
  1295  }
  1296  
  1297  // One or more integrity algorithms that are permitted for the second VPN tunnel for phase 1 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
  1298  func (o VpnConnectionOutput) Tunnel2Phase1IntegrityAlgorithms() pulumi.StringArrayOutput {
  1299  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel2Phase1IntegrityAlgorithms }).(pulumi.StringArrayOutput)
  1300  }
  1301  
  1302  // The lifetime for phase 1 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `28800`.
  1303  func (o VpnConnectionOutput) Tunnel2Phase1LifetimeSeconds() pulumi.IntPtrOutput {
  1304  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2Phase1LifetimeSeconds }).(pulumi.IntPtrOutput)
  1305  }
  1306  
  1307  // List of one or more Diffie-Hellman group numbers that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `2 | 5 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24`.
  1308  func (o VpnConnectionOutput) Tunnel2Phase2DhGroupNumbers() pulumi.IntArrayOutput {
  1309  	return o.ApplyT(func(v *VpnConnection) pulumi.IntArrayOutput { return v.Tunnel2Phase2DhGroupNumbers }).(pulumi.IntArrayOutput)
  1310  }
  1311  
  1312  // List of one or more encryption algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `AES128 | AES256 | AES128-GCM-16 | AES256-GCM-16`.
  1313  func (o VpnConnectionOutput) Tunnel2Phase2EncryptionAlgorithms() pulumi.StringArrayOutput {
  1314  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel2Phase2EncryptionAlgorithms }).(pulumi.StringArrayOutput)
  1315  }
  1316  
  1317  // List of one or more integrity algorithms that are permitted for the second VPN tunnel for phase 2 IKE negotiations. Valid values are `SHA1 | SHA2-256 | SHA2-384 | SHA2-512`.
  1318  func (o VpnConnectionOutput) Tunnel2Phase2IntegrityAlgorithms() pulumi.StringArrayOutput {
  1319  	return o.ApplyT(func(v *VpnConnection) pulumi.StringArrayOutput { return v.Tunnel2Phase2IntegrityAlgorithms }).(pulumi.StringArrayOutput)
  1320  }
  1321  
  1322  // The lifetime for phase 2 of the IKE negotiation for the second VPN tunnel, in seconds. Valid value is between `900` and `3600`.
  1323  func (o VpnConnectionOutput) Tunnel2Phase2LifetimeSeconds() pulumi.IntPtrOutput {
  1324  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2Phase2LifetimeSeconds }).(pulumi.IntPtrOutput)
  1325  }
  1326  
  1327  // The preshared key of the second VPN tunnel. The preshared key must be between 8 and 64 characters in length and cannot start with zero(0). Allowed characters are alphanumeric characters, periods(.) and underscores(_).
  1328  func (o VpnConnectionOutput) Tunnel2PresharedKey() pulumi.StringOutput {
  1329  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2PresharedKey }).(pulumi.StringOutput)
  1330  }
  1331  
  1332  // The percentage of the rekey window for the second VPN tunnel (determined by `tunnel2RekeyMarginTimeSeconds`) during which the rekey time is randomly selected. Valid value is between `0` and `100`.
  1333  func (o VpnConnectionOutput) Tunnel2RekeyFuzzPercentage() pulumi.IntPtrOutput {
  1334  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2RekeyFuzzPercentage }).(pulumi.IntPtrOutput)
  1335  }
  1336  
  1337  // The margin time, in seconds, before the phase 2 lifetime expires, during which the AWS side of the second VPN connection performs an IKE rekey. The exact time of the rekey is randomly selected based on the value for `tunnel2RekeyFuzzPercentage`. Valid value is between `60` and half of `tunnel2Phase2LifetimeSeconds`.
  1338  func (o VpnConnectionOutput) Tunnel2RekeyMarginTimeSeconds() pulumi.IntPtrOutput {
  1339  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2RekeyMarginTimeSeconds }).(pulumi.IntPtrOutput)
  1340  }
  1341  
  1342  // The number of packets in an IKE replay window for the second VPN tunnel. Valid value is between `64` and `2048`.
  1343  func (o VpnConnectionOutput) Tunnel2ReplayWindowSize() pulumi.IntPtrOutput {
  1344  	return o.ApplyT(func(v *VpnConnection) pulumi.IntPtrOutput { return v.Tunnel2ReplayWindowSize }).(pulumi.IntPtrOutput)
  1345  }
  1346  
  1347  // The action to take when the establishing the tunnel for the second VPN connection. By default, your customer gateway device must initiate the IKE negotiation and bring up the tunnel. Specify start for AWS to initiate the IKE negotiation. Valid values are `add | start`.
  1348  func (o VpnConnectionOutput) Tunnel2StartupAction() pulumi.StringPtrOutput {
  1349  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.Tunnel2StartupAction }).(pulumi.StringPtrOutput)
  1350  }
  1351  
  1352  // The RFC 6890 link-local address of the second VPN tunnel (VPN Gateway Side).
  1353  func (o VpnConnectionOutput) Tunnel2VgwInsideAddress() pulumi.StringOutput {
  1354  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Tunnel2VgwInsideAddress }).(pulumi.StringOutput)
  1355  }
  1356  
  1357  // Indicate whether the VPN tunnels process IPv4 or IPv6 traffic. Valid values are `ipv4 | ipv6`. `ipv6` Supports only EC2 Transit Gateway.
  1358  func (o VpnConnectionOutput) TunnelInsideIpVersion() pulumi.StringOutput {
  1359  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.TunnelInsideIpVersion }).(pulumi.StringOutput)
  1360  }
  1361  
  1362  // The type of VPN connection. The only type AWS supports at this time is "ipsec.1".
  1363  func (o VpnConnectionOutput) Type() pulumi.StringOutput {
  1364  	return o.ApplyT(func(v *VpnConnection) pulumi.StringOutput { return v.Type }).(pulumi.StringOutput)
  1365  }
  1366  
  1367  // Telemetry for the VPN tunnels. Detailed below.
  1368  func (o VpnConnectionOutput) VgwTelemetries() VpnConnectionVgwTelemetryArrayOutput {
  1369  	return o.ApplyT(func(v *VpnConnection) VpnConnectionVgwTelemetryArrayOutput { return v.VgwTelemetries }).(VpnConnectionVgwTelemetryArrayOutput)
  1370  }
  1371  
  1372  // The ID of the Virtual Private Gateway.
  1373  func (o VpnConnectionOutput) VpnGatewayId() pulumi.StringPtrOutput {
  1374  	return o.ApplyT(func(v *VpnConnection) pulumi.StringPtrOutput { return v.VpnGatewayId }).(pulumi.StringPtrOutput)
  1375  }
  1376  
  1377  type VpnConnectionArrayOutput struct{ *pulumi.OutputState }
  1378  
  1379  func (VpnConnectionArrayOutput) ElementType() reflect.Type {
  1380  	return reflect.TypeOf((*[]*VpnConnection)(nil)).Elem()
  1381  }
  1382  
  1383  func (o VpnConnectionArrayOutput) ToVpnConnectionArrayOutput() VpnConnectionArrayOutput {
  1384  	return o
  1385  }
  1386  
  1387  func (o VpnConnectionArrayOutput) ToVpnConnectionArrayOutputWithContext(ctx context.Context) VpnConnectionArrayOutput {
  1388  	return o
  1389  }
  1390  
  1391  func (o VpnConnectionArrayOutput) Index(i pulumi.IntInput) VpnConnectionOutput {
  1392  	return pulumi.All(o, i).ApplyT(func(vs []interface{}) *VpnConnection {
  1393  		return vs[0].([]*VpnConnection)[vs[1].(int)]
  1394  	}).(VpnConnectionOutput)
  1395  }
  1396  
  1397  type VpnConnectionMapOutput struct{ *pulumi.OutputState }
  1398  
  1399  func (VpnConnectionMapOutput) ElementType() reflect.Type {
  1400  	return reflect.TypeOf((*map[string]*VpnConnection)(nil)).Elem()
  1401  }
  1402  
  1403  func (o VpnConnectionMapOutput) ToVpnConnectionMapOutput() VpnConnectionMapOutput {
  1404  	return o
  1405  }
  1406  
  1407  func (o VpnConnectionMapOutput) ToVpnConnectionMapOutputWithContext(ctx context.Context) VpnConnectionMapOutput {
  1408  	return o
  1409  }
  1410  
  1411  func (o VpnConnectionMapOutput) MapIndex(k pulumi.StringInput) VpnConnectionOutput {
  1412  	return pulumi.All(o, k).ApplyT(func(vs []interface{}) *VpnConnection {
  1413  		return vs[0].(map[string]*VpnConnection)[vs[1].(string)]
  1414  	}).(VpnConnectionOutput)
  1415  }
  1416  
  1417  func init() {
  1418  	pulumi.RegisterInputType(reflect.TypeOf((*VpnConnectionInput)(nil)).Elem(), &VpnConnection{})
  1419  	pulumi.RegisterInputType(reflect.TypeOf((*VpnConnectionArrayInput)(nil)).Elem(), VpnConnectionArray{})
  1420  	pulumi.RegisterInputType(reflect.TypeOf((*VpnConnectionMapInput)(nil)).Elem(), VpnConnectionMap{})
  1421  	pulumi.RegisterOutputType(VpnConnectionOutput{})
  1422  	pulumi.RegisterOutputType(VpnConnectionArrayOutput{})
  1423  	pulumi.RegisterOutputType(VpnConnectionMapOutput{})
  1424  }