183 lines
5.4 KiB
TypeScript
183 lines
5.4 KiB
TypeScript
import type { Construct } from 'constructs';
|
|
import type { IEndpoint } from './endpoint';
|
|
import * as ga from './globalaccelerator.generated';
|
|
import type * as ec2 from '../../aws-ec2';
|
|
import * as cdk from '../../core';
|
|
import type { IEndpointGroupRef, IListenerRef } from '../../interfaces/generated/aws-globalaccelerator-interfaces.generated';
|
|
/**
|
|
* The interface of the EndpointGroup
|
|
*/
|
|
export interface IEndpointGroup extends cdk.IResource, IEndpointGroupRef {
|
|
/**
|
|
* EndpointGroup ARN
|
|
* @attribute
|
|
*/
|
|
readonly endpointGroupArn: string;
|
|
}
|
|
/**
|
|
* Basic options for creating a new EndpointGroup
|
|
*/
|
|
export interface EndpointGroupOptions {
|
|
/**
|
|
* Name of the endpoint group
|
|
*
|
|
* @default - logical ID of the resource
|
|
*/
|
|
readonly endpointGroupName?: string;
|
|
/**
|
|
* The AWS Region where the endpoint group is located.
|
|
*
|
|
* @default - region of the first endpoint in this group, or the stack region if that region can't be determined
|
|
*/
|
|
readonly region?: string;
|
|
/**
|
|
* The time between health checks for each endpoint
|
|
*
|
|
* Must be either 10 or 30 seconds.
|
|
*
|
|
* @default Duration.seconds(30)
|
|
*/
|
|
readonly healthCheckInterval?: cdk.Duration;
|
|
/**
|
|
* The ping path for health checks (if the protocol is HTTP(S)).
|
|
*
|
|
* @default '/'
|
|
*/
|
|
readonly healthCheckPath?: string;
|
|
/**
|
|
* The port used to perform health checks
|
|
*
|
|
* @default - The listener's port
|
|
*/
|
|
readonly healthCheckPort?: number;
|
|
/**
|
|
* The protocol used to perform health checks
|
|
*
|
|
* @default HealthCheckProtocol.TCP
|
|
*/
|
|
readonly healthCheckProtocol?: HealthCheckProtocol;
|
|
/**
|
|
* The number of consecutive health checks required to set the state of a
|
|
* healthy endpoint to unhealthy, or to set an unhealthy endpoint to healthy.
|
|
*
|
|
* @default 3
|
|
*/
|
|
readonly healthCheckThreshold?: number;
|
|
/**
|
|
* The percentage of traffic to send to this AWS Region.
|
|
*
|
|
* The percentage is applied to the traffic that would otherwise have been
|
|
* routed to the Region based on optimal routing. Additional traffic is
|
|
* distributed to other endpoint groups for this listener.
|
|
*
|
|
* @default 100
|
|
*/
|
|
readonly trafficDialPercentage?: number;
|
|
/**
|
|
* Override the destination ports used to route traffic to an endpoint.
|
|
*
|
|
* Unless overridden, the port used to hit the endpoint will be the same as the port
|
|
* that traffic arrives on at the listener.
|
|
*
|
|
* @default - No overrides
|
|
*/
|
|
readonly portOverrides?: PortOverride[];
|
|
/**
|
|
* Initial list of endpoints for this group
|
|
*
|
|
* @default - Group is initially empty
|
|
*/
|
|
readonly endpoints?: IEndpoint[];
|
|
}
|
|
/**
|
|
* Override specific listener ports used to route traffic to endpoints that are part of an endpoint group.
|
|
*/
|
|
export interface PortOverride {
|
|
/**
|
|
* The listener port that you want to map to a specific endpoint port.
|
|
*
|
|
* This is the port that user traffic arrives to the Global Accelerator on.
|
|
*/
|
|
readonly listenerPort: number;
|
|
/**
|
|
* The endpoint port that you want a listener port to be mapped to.
|
|
*
|
|
* This is the port on the endpoint, such as the Application Load Balancer or Amazon EC2 instance.
|
|
*/
|
|
readonly endpointPort: number;
|
|
}
|
|
/**
|
|
* The protocol for the connections from clients to the accelerator.
|
|
*/
|
|
export declare enum HealthCheckProtocol {
|
|
/**
|
|
* TCP
|
|
*/
|
|
TCP = "TCP",
|
|
/**
|
|
* HTTP
|
|
*/
|
|
HTTP = "HTTP",
|
|
/**
|
|
* HTTPS
|
|
*/
|
|
HTTPS = "HTTPS"
|
|
}
|
|
/**
|
|
* Property of the EndpointGroup
|
|
*/
|
|
export interface EndpointGroupProps extends EndpointGroupOptions {
|
|
/**
|
|
* The Amazon Resource Name (ARN) of the listener.
|
|
*/
|
|
readonly listener: IListenerRef;
|
|
}
|
|
/**
|
|
* EndpointGroup construct
|
|
*/
|
|
export declare class EndpointGroup extends cdk.Resource implements IEndpointGroup {
|
|
/** Uniquely identifies this class. */
|
|
static readonly PROPERTY_INJECTION_ID: string;
|
|
/**
|
|
* import from ARN
|
|
*/
|
|
static fromEndpointGroupArn(scope: Construct, id: string, endpointGroupArn: string): IEndpointGroup;
|
|
readonly endpointGroupArn: string;
|
|
/**
|
|
*
|
|
* The name of the endpoint group
|
|
*
|
|
* @attribute
|
|
*/
|
|
readonly endpointGroupName: string;
|
|
/**
|
|
* The array of the endpoints in this endpoint group
|
|
*/
|
|
protected readonly endpoints: IEndpoint[];
|
|
get endpointGroupRef(): ga.EndpointGroupReference;
|
|
constructor(scope: Construct, id: string, props: EndpointGroupProps);
|
|
/**
|
|
* Add an endpoint
|
|
*/
|
|
addEndpoint(endpoint: IEndpoint): void;
|
|
/**
|
|
* Return an object that represents the Accelerator's Security Group
|
|
*
|
|
* Uses a Custom Resource to look up the Security Group that Accelerator
|
|
* creates at deploy time. Requires your VPC ID to perform the lookup.
|
|
*
|
|
* The Security Group will only be created if you enable **Client IP
|
|
* Preservation** on any of the endpoints.
|
|
*
|
|
* You cannot manipulate the rules inside this security group, but you can
|
|
* use this security group as a Peer in Connections rules on other
|
|
* constructs.
|
|
*/
|
|
connectionsPeer(id: string, vpc: ec2.IVpc): ec2.IPeer;
|
|
private renderEndpoints;
|
|
/**
|
|
* Return the first (readable) region of the endpoints in this group
|
|
*/
|
|
private firstEndpointRegion;
|
|
}
|