Construct which creates an Application Load Balancer.

This construct should be used in conjunction with [[GuApplicationListener]] and [[GuApplicationTargetGroup]] to route traffic to your application. For more details on these three components, see the AWS documentation.

This resource is stateful.

Hierarchy

  • Mixin<typeof ApplicationLoadBalancer, this> & ApplicationLoadBalancer<this>
    • GuApplicationLoadBalancer

Constructors

Properties

connections: Connections

The network connections associated with this resource.

env: ResourceEnvironment

The environment this resource belongs to. For resources that are created and managed by the CDK (generally, those created by creating new class instances like Role, Bucket, etc.), this is always the same as the environment of the stack they belong to; however, for imported resources (those obtained from static methods like fromRoleArn, fromBucketName, etc.), that might be different than the stack they were imported into.

idWithApp: string

The ID of the construct with the App suffix. This should be used in place of id when trying to reference the construct.

ipAddressType?: IpAddressType

The IP Address Type for this load balancer

IpAddressType.IPV4
listeners: ApplicationListener[]

A list of listeners that have been added to the load balancer. This list is only valid for owned constructs.

loadBalancerArn: string

The ARN of this load balancer

Example value: arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-internal-load-balancer/50dc6c495c0c9188

loadBalancerCanonicalHostedZoneId: string

The canonical hosted zone ID of this load balancer

Example value: Z2P70J7EXAMPLE

loadBalancerDnsName: string

The DNS name of this load balancer

Example value: my-load-balancer-424835706.us-west-2.elb.amazonaws.com

loadBalancerFullName: string

The full name of this load balancer

Example value: app/my-load-balancer/50dc6c495c0c9188

loadBalancerName: string

The name of this load balancer

Example value: my-load-balancer

loadBalancerSecurityGroups: string[]
metrics: IApplicationLoadBalancerMetrics

All metrics available for this load balancer

node: Node

The tree node.

physicalName: string

Returns a string-encoded token that resolves to the physical name that should be passed to the CloudFormation resource.

This value will resolve to one of the following:

  • a concrete value (e.g. "my-awesome-bucket")
  • undefined, when a name should be generated by CloudFormation
  • a concrete name generated automatically during synthesis, in cross-environment scenarios.
stack: Stack

The stack in which this resource is defined.

vpc?: IVpc

The VPC this load balancer has been created in.

This property is always defined (not null or undefined) for sub-classes of BaseLoadBalancer.

Methods

  • Internal

    Called when this resource is referenced across environments (account/region) to order to request that a physical name will be generated for this resource during synthesis, so the resource can be referenced through its absolute name/arn.

    Returns void

  • Add a new listener to this load balancer

    Parameters

    • id: string
    • props: BaseApplicationListenerProps

    Returns ApplicationListener

  • Add a redirection listener to this load balancer

    Parameters

    • Optionalprops: ApplicationLoadBalancerRedirectConfig

    Returns ApplicationListener

  • Add a security group to this load balancer

    Parameters

    • securityGroup: ISecurityGroup

    Returns void

  • Apply the given removal policy to this resource

    The Removal Policy controls what happens to this resource when it stops being managed by CloudFormation, either because you've removed it from the CDK application or because you've made a change that requires the resource to be replaced.

    The resource can be deleted (RemovalPolicy.DESTROY), or left in your AWS account for data recovery and cleanup later (RemovalPolicy.RETAIN).

    Parameters

    • policy: RemovalPolicy

    Returns void

  • Returns string

  • Returns an environment-sensitive token that should be used for the resource's "ARN" attribute (e.g. bucket.bucketArn).

    Normally, this token will resolve to arnAttr, but if the resource is referenced across environments, arnComponents will be used to synthesize a concrete ARN with the resource's physical name. Make sure to reference this.physicalName in arnComponents.

    Parameters

    • arnAttr: string

      The CFN attribute which resolves to the ARN of the resource. Commonly it will be called "Arn" (e.g. resource.attrArn), but sometimes it's the CFN resource's ref.

    • arnComponents: ArnComponents

      The format of the ARN of this resource. You must reference this.physicalName somewhere within the ARN in order for cross-environment references to work.

    Returns string

  • Returns an environment-sensitive token that should be used for the resource's "name" attribute (e.g. bucket.bucketName).

    Normally, this token will resolve to nameAttr, but if the resource is referenced across environments, it will be resolved to this.physicalName, which will be a concrete name.

    Parameters

    • nameAttr: string

      The CFN attribute which resolves to the resource's name. Commonly this is the resource's ref.

    Returns string

  • Enable access logging for this load balancer.

    A region must be specified on the stack containing the load balancer; you cannot enable logging on environment-agnostic stacks. See https://docs.aws.amazon.com/cdk/latest/guide/environments.html

    Parameters

    • bucket: IBucket
    • Optionalprefix: string

    Returns void

  • Enable connection logging for this load balancer.

    A region must be specified on the stack containing the load balancer; you cannot enable logging on environment-agnostic stacks.

    Parameters

    • bucket: IBucket
    • Optionalprefix: string

    Returns void

  • Return the given named metric for this Application Load Balancer

    Parameters

    • metricName: string
    • Optionalprops: MetricOptions

    Returns Metric

    Average over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.custom instead

  • The total number of concurrent TCP connections active from clients to the load balancer and from the load balancer to targets.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.activeConnectionCount instead

  • The number of TLS connections initiated by the client that did not establish a session with the load balancer. Possible causes include a mismatch of ciphers or protocols.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.clientTlsNegotiationErrorCount instead

  • The number of load balancer capacity units (LCU) used by your load balancer.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.consumedLCUs instead

  • The number of user authentications that could not be completed

    Because an authenticate action was misconfigured, the load balancer couldn't establish a connection with the IdP, or the load balancer couldn't complete the authentication flow due to an internal error.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.elbAuthError instead

  • The number of user authentications that could not be completed because the IdP denied access to the user or an authorization code was used more than once.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.elbAuthFailure instead

  • The time elapsed, in milliseconds, to query the IdP for the ID token and user info.

    If one or more of these operations fail, this is the time to failure.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Average over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.elbAuthLatency instead

  • The number of authenticate actions that were successful.

    This metric is incremented at the end of the authentication workflow, after the load balancer has retrieved the user claims from the IdP.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.elbAuthSuccess instead

  • The number of HTTP 3xx/4xx/5xx codes that originate from the load balancer.

    This does not include any response codes generated by the targets.

    Parameters

    • code: HttpCodeElb
    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.httpCodeElb instead

  • The number of HTTP 2xx/3xx/4xx/5xx response codes generated by all targets in the load balancer.

    This does not include any response codes generated by the load balancer.

    Parameters

    • code: HttpCodeTarget
    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.httpCodeTarget instead

  • The number of fixed-response actions that were successful.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.httpFixedResponseCount instead

  • The number of redirect actions that were successful.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.httpRedirectCount instead

  • The number of redirect actions that couldn't be completed because the URL in the response location header is larger than 8K.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.httpRedirectUrlLimitExceededCount instead

  • The total number of bytes processed by the load balancer over IPv6.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.ipv6ProcessedBytes instead

  • The number of IPv6 requests received by the load balancer.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.ipv6RequestCount instead

  • The total number of new TCP connections established from clients to the load balancer and from the load balancer to targets.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.newConnectionCount instead

  • The total number of bytes processed by the load balancer over IPv4 and IPv6.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.processedBytes instead

  • The number of connections that were rejected because the load balancer had reached its maximum number of connections.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.rejectedConnectionCount instead

  • The number of requests processed over IPv4 and IPv6.

    This count includes only the requests with a response generated by a target of the load balancer.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.requestCount instead

  • The number of rules processed by the load balancer given a request rate averaged over an hour.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.ruleEvaluations instead

  • The number of connections that were not successfully established between the load balancer and target.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.targetConnectionErrorCount instead

  • The time elapsed, in seconds, after the request leaves the load balancer until a response from the target is received.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Average over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.targetResponseTime instead

  • The number of TLS connections initiated by the load balancer that did not establish a session with the target.

    Possible causes include a mismatch of ciphers or protocols.

    Parameters

    • Optionalprops: MetricOptions

    Returns Metric

    Sum over 5 minutes
    

    Use ApplicationLoadBalancer.metrics.targetTLSNegotiationErrorCount instead

  • Remove an attribute from the load balancer

    Parameters

    • key: string

    Returns void

  • Returns IPrincipal

  • Returns a string representation of an object.

    Returns string

  • Returns string[]

  • Internal

    Queries the load balancer context provider for load balancer info.

    Parameters

    • scope: Construct
    • options: LoadBalancerQueryContextProviderOptions

    Returns LoadBalancerContextResponse

  • Import an existing Application Load Balancer

    Parameters

    • scope: Construct
    • id: string
    • attrs: ApplicationLoadBalancerAttributes

    Returns IApplicationLoadBalancer

  • Look up an application load balancer.

    Parameters

    • scope: Construct
    • id: string
    • options: ApplicationLoadBalancerLookupOptions

    Returns IApplicationLoadBalancer

  • Checks if x is a construct.

    Use this method instead of instanceof to properly detect Construct instances, even when the construct library is symlinked.

    Explanation: in JavaScript, multiple copies of the constructs library on disk are seen as independent, completely different libraries. As a consequence, the class Construct in each copy of the constructs library is seen as a different class, and an instance of one class will not test as instanceof the other class. npm install will not create installations like this, but users may manually symlink construct libraries together or use a monorepo tool: in those cases, multiple copies of the constructs library can be accidentally installed, and instanceof will behave unpredictably. It is safest to avoid using instanceof, and using this type-testing method instead.

    Parameters

    • x: any

      Any object

    Returns x is Construct

    true if x is an object created from a class which extends Construct.

  • Returns true if the construct was created by CDK, and false otherwise

    Parameters

    • construct: IConstruct

    Returns boolean

  • Check whether the given construct is a Resource

    Parameters

    • construct: IConstruct

    Returns construct is Resource