UNPKG

aws-cdk-lib

Version:

Version 2 of the AWS Cloud Development Kit library

127 lines (126 loc) 3.56 kB
import { Construct } from 'constructs'; import { IAccelerator } from './accelerator'; import { EndpointGroup, EndpointGroupOptions } from './endpoint-group'; import * as cdk from '../../core'; /** * Interface of the Listener */ export interface IListener extends cdk.IResource { /** * The ARN of the listener * * @attribute */ readonly listenerArn: string; } /** * Construct options for Listener */ export interface ListenerOptions { /** * Name of the listener * * @default - logical ID of the resource */ readonly listenerName?: string; /** * The list of port ranges for the connections from clients to the accelerator */ readonly portRanges: PortRange[]; /** * The protocol for the connections from clients to the accelerator * * @default ConnectionProtocol.TCP */ readonly protocol?: ConnectionProtocol; /** * Client affinity to direct all requests from a user to the same endpoint * * If you have stateful applications, client affinity lets you direct all * requests from a user to the same endpoint. * * By default, each connection from each client is routed to seperate * endpoints. Set client affinity to SOURCE_IP to route all connections from * a single client to the same endpoint. * * @default ClientAffinity.NONE */ readonly clientAffinity?: ClientAffinity; } /** * Construct properties for Listener */ export interface ListenerProps extends ListenerOptions { /** * The accelerator for this listener */ readonly accelerator: IAccelerator; } /** * The list of port ranges for the connections from clients to the accelerator. */ export interface PortRange { /** * The first port in the range of ports, inclusive. */ readonly fromPort: number; /** * The last port in the range of ports, inclusive. * * @default - same as `fromPort` */ readonly toPort?: number; } /** * The protocol for the connections from clients to the accelerator. */ export declare enum ConnectionProtocol { /** * TCP */ TCP = "TCP", /** * UDP */ UDP = "UDP" } /** * Client affinity gives you control over whether to always route each client to the same specific endpoint. * * @see https://docs.aws.amazon.com/global-accelerator/latest/dg/about-listeners.html#about-listeners-client-affinity */ export declare enum ClientAffinity { /** * Route traffic based on the 5-tuple `(source IP, source port, destination IP, destination port, protocol)` */ NONE = "NONE", /** * Route traffic based on the 2-tuple `(source IP, destination IP)` * * The result is that multiple connections from the same client will be routed the same. */ SOURCE_IP = "SOURCE_IP" } /** * The construct for the Listener */ export declare class Listener extends cdk.Resource implements IListener { /** Uniquely identifies this class. */ static readonly PROPERTY_INJECTION_ID: string; /** * import from ARN */ static fromListenerArn(scope: Construct, id: string, listenerArn: string): IListener; readonly listenerArn: string; /** * The name of the listener * * @attribute */ readonly listenerName: string; constructor(scope: Construct, id: string, props: ListenerProps); /** * Add a new endpoint group to this listener */ addEndpointGroup(id: string, options?: EndpointGroupOptions): EndpointGroup; }