import * as core from "@terrascript/core"; export interface ConnectionLogOptionsArgs extends core.SchemaArgs { cloudwatchLogGroup?: string | core.StringOut; cloudwatchLogStream?: string | core.StringOut; enabled: boolean | core.BooleanOut; } export class ConnectionLogOptions extends core.Schema { @core.attr(String) public cloudwatchLogGroup?: string | core.StringOut; @core.attr(String, { computed: true }) public cloudwatchLogStream?: string | core.StringOut; @core.attr(Boolean) public enabled!: boolean | core.BooleanOut; } export interface ClientLoginBannerOptionsArgs extends core.SchemaArgs { bannerText?: string | core.StringOut; enabled?: boolean | core.BooleanOut; } export class ClientLoginBannerOptions extends core.Schema { @core.attr(String, { computed: true }) public bannerText?: string | core.StringOut; @core.attr(Boolean, { computed: true }) public enabled?: boolean | core.BooleanOut; } export interface AuthenticationOptionsArgs extends core.SchemaArgs { activeDirectoryId?: string | core.StringOut; rootCertificateChainArn?: string | core.StringOut; samlProviderArn?: string | core.StringOut; selfServiceSamlProviderArn?: string | core.StringOut; type: string | core.StringOut; } export class AuthenticationOptions extends core.Schema { @core.attr(String) public activeDirectoryId?: string | core.StringOut; @core.attr(String) public rootCertificateChainArn?: string | core.StringOut; @core.attr(String) public samlProviderArn?: string | core.StringOut; @core.attr(String) public selfServiceSamlProviderArn?: string | core.StringOut; @core.attr(String) public type!: string | core.StringOut; } export interface ClientConnectOptionsArgs extends core.SchemaArgs { enabled?: boolean | core.BooleanOut; lambdaFunctionArn?: string | core.StringOut; } export class ClientConnectOptions extends core.Schema { @core.attr(Boolean, { computed: true }) public enabled?: boolean | core.BooleanOut; @core.attr(String, { computed: true }) public lambdaFunctionArn?: string | core.StringOut; } export interface Ec2ClientVpnEndpointArgs extends core.ResourceArgs { /** * (Required) Information about the authentication method to be used to authenticate clients. */ authenticationOptions: | core.Array | core.ArrayOut; /** * (Required) The IPv4 address range, in CIDR notation, from which to assign client IP addresses. The a * ddress range cannot overlap with the local CIDR of the VPC in which the associated subnet is located * , or the routes that you add manually. The address range cannot be changed after the Client VPN endp * oint has been created. The CIDR block should be /22 or greater. */ clientCidrBlock: string | core.StringOut; /** * (Optional) The options for managing connection authorization for new client connections. */ clientConnectOptions?: ClientConnectOptions; /** * (Optional) Options for enabling a customizable text banner that will be displayed on AWS provided cl * ients when a VPN session is established. */ clientLoginBannerOptions?: ClientLoginBannerOptions; /** * (Required) Information about the client connection logging options. */ connectionLogOptions: ConnectionLogOptions; /** * (Optional) A brief description of the Client VPN endpoint. */ description?: string | core.StringOut; /** * (Optional) Information about the DNS servers to be used for DNS resolution. A Client VPN endpoint ca * n have up to two DNS servers. If no DNS server is specified, the DNS address of the connecting devic * e is used. */ dnsServers?: core.Array | core.ArrayOut; /** * (Optional) The IDs of one or more security groups to apply to the target network. You must also spec * ify the ID of the VPC that contains the security groups. */ securityGroupIds?: core.Array | core.ArrayOut; /** * (Optional) Specify whether to enable the self-service portal for the Client VPN endpoint. Values can * be `enabled` or `disabled`. Default value is `disabled`. */ selfServicePortal?: string | core.StringOut; /** * (Required) The ARN of the ACM server certificate. */ serverCertificateArn: string | core.StringOut; /** * (Optional) The maximum session duration is a trigger by which end-users are required to re-authentic * ate prior to establishing a VPN session. Default value is `24` - Valid values: `8 | 10 | 12 | 24` */ sessionTimeoutHours?: number | core.NumberOut; /** * (Optional) Indicates whether split-tunnel is enabled on VPN endpoint. Default value is `false`. */ splitTunnel?: boolean | core.BooleanOut; /** * (Optional) A mapping of tags to assign to the resource. If configured with a provider [`default_tags * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tag * s-configuration-block) present, tags with matching keys will overwrite those defined at the provider * level. */ tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ tagsAll?: core.Map | core.MapOut; /** * (Optional) The transport protocol to be used by the VPN session. Default value is `udp`. */ transportProtocol?: string | core.StringOut; /** * (Optional) The ID of the VPC to associate with the Client VPN endpoint. If no security group IDs are * specified in the request, the default security group for the VPC is applied. */ vpcId?: string | core.StringOut; /** * (Optional) The port number for the Client VPN endpoint. Valid values are `443` and `1194`. Default v * alue is `443`. */ vpnPort?: number | core.NumberOut; } export class Ec2ClientVpnEndpoint extends core.Resource { /** * The ARN of the Client VPN endpoint. */ @core.attr(String, { computed: true }) public arn!: string | core.StringOut; /** * (Required) Information about the authentication method to be used to authenticate clients. */ @core.attr(AuthenticationOptions, { kind: "array" }) public authenticationOptions!: | core.Array | core.ArrayOut; /** * (Required) The IPv4 address range, in CIDR notation, from which to assign client IP addresses. The a * ddress range cannot overlap with the local CIDR of the VPC in which the associated subnet is located * , or the routes that you add manually. The address range cannot be changed after the Client VPN endp * oint has been created. The CIDR block should be /22 or greater. */ @core.attr(String) public clientCidrBlock!: string | core.StringOut; /** * (Optional) The options for managing connection authorization for new client connections. */ @core.attr(ClientConnectOptions, { computed: true }) public clientConnectOptions?: ClientConnectOptions; /** * (Optional) Options for enabling a customizable text banner that will be displayed on AWS provided cl * ients when a VPN session is established. */ @core.attr(ClientLoginBannerOptions, { computed: true }) public clientLoginBannerOptions?: ClientLoginBannerOptions; /** * (Required) Information about the client connection logging options. */ @core.attr(ConnectionLogOptions) public connectionLogOptions!: ConnectionLogOptions; /** * (Optional) A brief description of the Client VPN endpoint. */ @core.attr(String) public description?: string | core.StringOut; /** * The DNS name to be used by clients when establishing their VPN session. */ @core.attr(String, { computed: true }) public dnsName!: string | core.StringOut; /** * (Optional) Information about the DNS servers to be used for DNS resolution. A Client VPN endpoint ca * n have up to two DNS servers. If no DNS server is specified, the DNS address of the connecting devic * e is used. */ @core.attr(String, { kind: "array" }) public dnsServers?: core.Array | core.ArrayOut; /** * The ID of the Client VPN endpoint. */ @core.attr(String, { computed: true }) public id!: string | core.StringOut; /** * (Optional) The IDs of one or more security groups to apply to the target network. You must also spec * ify the ID of the VPC that contains the security groups. */ @core.attr(String, { computed: true, kind: "array" }) public securityGroupIds?: core.Array | core.ArrayOut; /** * (Optional) Specify whether to enable the self-service portal for the Client VPN endpoint. Values can * be `enabled` or `disabled`. Default value is `disabled`. */ @core.attr(String) public selfServicePortal?: string | core.StringOut; /** * (Required) The ARN of the ACM server certificate. */ @core.attr(String) public serverCertificateArn!: string | core.StringOut; /** * (Optional) The maximum session duration is a trigger by which end-users are required to re-authentic * ate prior to establishing a VPN session. Default value is `24` - Valid values: `8 | 10 | 12 | 24` */ @core.attr(Number) public sessionTimeoutHours?: number | core.NumberOut; /** * (Optional) Indicates whether split-tunnel is enabled on VPN endpoint. Default value is `false`. */ @core.attr(Boolean) public splitTunnel?: boolean | core.BooleanOut; /** * **Deprecated** The current state of the Client VPN endpoint. */ @core.attr(String, { computed: true }) public status!: string | core.StringOut; /** * (Optional) A mapping of tags to assign to the resource. If configured with a provider [`default_tags * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tag * s-configuration-block) present, tags with matching keys will overwrite those defined at the provider * level. */ @core.attr(String, { kind: "map" }) public tags?: core.Map | core.MapOut; /** * A map of tags assigned to the resource, including those inherited from the provider [`default_tags` * configuration block](https://registry.terraform.io/providers/hashicorp/aws/latest/docs#default_tags- * configuration-block). */ @core.attr(String, { computed: true, kind: "map" }) public tagsAll?: core.Map | core.MapOut; /** * (Optional) The transport protocol to be used by the VPN session. Default value is `udp`. */ @core.attr(String) public transportProtocol?: string | core.StringOut; /** * (Optional) The ID of the VPC to associate with the Client VPN endpoint. If no security group IDs are * specified in the request, the default security group for the VPC is applied. */ @core.attr(String, { computed: true }) public vpcId?: string | core.StringOut; /** * (Optional) The port number for the Client VPN endpoint. Valid values are `443` and `1194`. Default v * alue is `443`. */ @core.attr(Number) public vpnPort?: number | core.NumberOut; constructor(name: string, args?: Ec2ClientVpnEndpointArgs) { super(name, "aws_ec2_client_vpn_endpoint", args); } public override getNamespace(): string { return "aws_vpn"; } }