Show / Hide Table of Contents

Namespace Pulumi.Aws.ApplicationLoadBalancing

Classes

GetListener

GetListenerArgs

GetListenerResult

GetLoadBalancer

GetLoadBalancerArgs

GetLoadBalancerResult

GetTargetGroup

GetTargetGroupArgs

GetTargetGroupResult

Listener

Provides a Load Balancer Listener resource.

Note: aws.alb.Listener is known as aws.lb.Listener. The functionality is identical.

Example Usage

Forward Action

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup", new Aws.LB.TargetGroupArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
        CertificateArn = "arn:aws:iam::187416307283:server-certificate/test_cert_rab3wuqwgja25ct3n4jdj2tzu4",
        DefaultActions = 
        {
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                TargetGroupArn = frontEndTargetGroup.Arn,
                Type = "forward",
            },
        },
        LoadBalancerArn = frontEndLoadBalancer.Arn,
        Port = "443",
        Protocol = "HTTPS",
        SslPolicy = "ELBSecurityPolicy-2016-08",
    });
}

}

Redirect Action

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
        DefaultActions = 
        {
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                Redirect = new Aws.LB.Inputs.ListenerDefaultActionRedirectArgs
                {
                    Port = "443",
                    Protocol = "HTTPS",
                    StatusCode = "HTTP_301",
                },
                Type = "redirect",
            },
        },
        LoadBalancerArn = frontEndLoadBalancer.Arn,
        Port = "80",
        Protocol = "HTTP",
    });
}

}

Fixed-response Action

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
        DefaultActions = 
        {
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                FixedResponse = new Aws.LB.Inputs.ListenerDefaultActionFixedResponseArgs
                {
                    ContentType = "text/plain",
                    MessageBody = "Fixed response content",
                    StatusCode = "200",
                },
                Type = "fixed-response",
            },
        },
        LoadBalancerArn = frontEndLoadBalancer.Arn,
        Port = "80",
        Protocol = "HTTP",
    });
}

}

Authenticate-cognito Action

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup", new Aws.LB.TargetGroupArgs
    {
    });
    var pool = new Aws.Cognito.UserPool("pool", new Aws.Cognito.UserPoolArgs
    {
    });
    var client = new Aws.Cognito.UserPoolClient("client", new Aws.Cognito.UserPoolClientArgs
    {
    });
    var domain = new Aws.Cognito.UserPoolDomain("domain", new Aws.Cognito.UserPoolDomainArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
        DefaultActions = 
        {
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                AuthenticateCognito = new Aws.LB.Inputs.ListenerDefaultActionAuthenticateCognitoArgs
                {
                    UserPoolArn = pool.Arn,
                    UserPoolClientId = client.Id,
                    UserPoolDomain = domain.Domain,
                },
                Type = "authenticate-cognito",
            },
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                TargetGroupArn = frontEndTargetGroup.Arn,
                Type = "forward",
            },
        },
        LoadBalancerArn = frontEndLoadBalancer.Arn,
        Port = "80",
        Protocol = "HTTP",
    });
}

}

Authenticate-oidc Action

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndTargetGroup = new Aws.LB.TargetGroup("frontEndTargetGroup", new Aws.LB.TargetGroupArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
        DefaultActions = 
        {
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                AuthenticateOidc = new Aws.LB.Inputs.ListenerDefaultActionAuthenticateOidcArgs
                {
                    AuthorizationEndpoint = "https://example.com/authorization_endpoint",
                    ClientId = "client_id",
                    ClientSecret = "client_secret",
                    Issuer = "https://example.com",
                    TokenEndpoint = "https://example.com/token_endpoint",
                    UserInfoEndpoint = "https://example.com/user_info_endpoint",
                },
                Type = "authenticate-oidc",
            },
            new Aws.LB.Inputs.ListenerDefaultActionArgs
            {
                TargetGroupArn = frontEndTargetGroup.Arn,
                Type = "forward",
            },
        },
        LoadBalancerArn = frontEndLoadBalancer.Arn,
        Port = "80",
        Protocol = "HTTP",
    });
}

}

ListenerArgs

ListenerCertificate

Provides a Load Balancer Listener Certificate resource.

This resource is for additional certificates and does not replace the default certificate on the listener.

Note: aws.alb.ListenerCertificate is known as aws.lb.ListenerCertificate. The functionality is identical.

Example Usage

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var exampleCertificate = new Aws.Acm.Certificate("exampleCertificate", new Aws.Acm.CertificateArgs
    {
    });
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
    });
    var exampleListenerCertificate = new Aws.LB.ListenerCertificate("exampleListenerCertificate", new Aws.LB.ListenerCertificateArgs
    {
        CertificateArn = exampleCertificate.Arn,
        ListenerArn = frontEndListener.Arn,
    });
}

}

ListenerCertificateArgs

ListenerCertificateState

ListenerRule

Provides a Load Balancer Listener Rule resource.

Note: aws.alb.ListenerRule is known as aws.lb.ListenerRule. The functionality is identical.

Example Usage

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var frontEndLoadBalancer = new Aws.LB.LoadBalancer("frontEndLoadBalancer", new Aws.LB.LoadBalancerArgs
    {
    });
    var frontEndListener = new Aws.LB.Listener("frontEndListener", new Aws.LB.ListenerArgs
    {
    });
    var @static = new Aws.LB.ListenerRule("static", new Aws.LB.ListenerRuleArgs
    {
        Actions = 
        {
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                TargetGroupArn = aws_lb_target_group.Static.Arn,
                Type = "forward",
            },
        },
        Conditions = 
        {
            new Aws.LB.Inputs.ListenerRuleConditionArgs
            {
                PathPattern = new Aws.LB.Inputs.ListenerRuleConditionPathPatternArgs
                {
                    Values = 
                    {
                        "/static/*",
                    },
                },
            },
            new Aws.LB.Inputs.ListenerRuleConditionArgs
            {
                HostHeader = new Aws.LB.Inputs.ListenerRuleConditionHostHeaderArgs
                {
                    Values = 
                    {
                        "example.com",
                    },
                },
            },
        },
        ListenerArn = frontEndListener.Arn,
        Priority = 100,
    });
    var hostBasedRouting = new Aws.LB.ListenerRule("hostBasedRouting", new Aws.LB.ListenerRuleArgs
    {
        Actions = 
        {
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                TargetGroupArn = aws_lb_target_group.Static.Arn,
                Type = "forward",
            },
        },
        Conditions = 
        {
            new Aws.LB.Inputs.ListenerRuleConditionArgs
            {
                HostHeader = new Aws.LB.Inputs.ListenerRuleConditionHostHeaderArgs
                {
                    Values = 
                    {
                        "my-service.*.mydomain.io",
                    },
                },
            },
        },
        ListenerArn = frontEndListener.Arn,
        Priority = 99,
    });
    var redirectHttpToHttps = new Aws.LB.ListenerRule("redirectHttpToHttps", new Aws.LB.ListenerRuleArgs
    {
        Actions = 
        {
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                Redirect = new Aws.LB.Inputs.ListenerRuleActionRedirectArgs
                {
                    Port = "443",
                    Protocol = "HTTPS",
                    StatusCode = "HTTP_301",
                },
                Type = "redirect",
            },
        },
        Conditions = 
        {
            new Aws.LB.Inputs.ListenerRuleConditionArgs
            {
                HttpHeader = new Aws.LB.Inputs.ListenerRuleConditionHttpHeaderArgs
                {
                    HttpHeaderName = "X-Forwarded-For",
                    Values = 
                    {
                        "192.168.1.*",
                    },
                },
            },
        },
        ListenerArn = frontEndListener.Arn,
    });
    var healthCheck = new Aws.LB.ListenerRule("healthCheck", new Aws.LB.ListenerRuleArgs
    {
        Actions = 
        {
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                FixedResponse = new Aws.LB.Inputs.ListenerRuleActionFixedResponseArgs
                {
                    ContentType = "text/plain",
                    MessageBody = "HEALTHY",
                    StatusCode = "200",
                },
                Type = "fixed-response",
            },
        },
        Conditions = 
        {
            new Aws.LB.Inputs.ListenerRuleConditionArgs
            {
                QueryString = 
                {

                    {
                        { "key", "health" },
                        { "value", "check" },
                    },

                    {
                        { "value", "bar" },
                    },
                },
            },
        },
        ListenerArn = frontEndListener.Arn,
    });
    var pool = new Aws.Cognito.UserPool("pool", new Aws.Cognito.UserPoolArgs
    {
    });
    var client = new Aws.Cognito.UserPoolClient("client", new Aws.Cognito.UserPoolClientArgs
    {
    });
    var domain = new Aws.Cognito.UserPoolDomain("domain", new Aws.Cognito.UserPoolDomainArgs
    {
    });
    var admin = new Aws.LB.ListenerRule("admin", new Aws.LB.ListenerRuleArgs
    {
        Actions = 
        {
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                AuthenticateOidc = new Aws.LB.Inputs.ListenerRuleActionAuthenticateOidcArgs
                {
                    AuthorizationEndpoint = "https://example.com/authorization_endpoint",
                    ClientId = "client_id",
                    ClientSecret = "client_secret",
                    Issuer = "https://example.com",
                    TokenEndpoint = "https://example.com/token_endpoint",
                    UserInfoEndpoint = "https://example.com/user_info_endpoint",
                },
                Type = "authenticate-oidc",
            },
            new Aws.LB.Inputs.ListenerRuleActionArgs
            {
                TargetGroupArn = aws_lb_target_group.Static.Arn,
                Type = "forward",
            },
        },
        ListenerArn = frontEndListener.Arn,
    });
}

}

ListenerRuleArgs

ListenerRuleState

ListenerState

LoadBalancer

Provides a Load Balancer resource.

Note: aws.alb.LoadBalancer is known as aws.lb.LoadBalancer. The functionality is identical.

Example Usage

Application Load Balancer

using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var test = new Aws.LB.LoadBalancer("test", new Aws.LB.LoadBalancerArgs
    {
        AccessLogs = new Aws.LB.Inputs.LoadBalancerAccessLogsArgs
        {
            Bucket = aws_s3_bucket.Lb_logs.Bucket,
            Enabled = true,
            Prefix = "test-lb",
        },
        EnableDeletionProtection = true,
        Internal = false,
        LoadBalancerType = "application",
        SecurityGroups = 
        {
            aws_security_group.Lb_sg.Id,
        },
        Subnets = 
        {
            aws_subnet.Public.Select(__item => __item.Id).ToList(),
        },
        Tags = 
        {
            { "Environment", "production" },
        },
    });
}

}

Network Load Balancer

using System.Linq;
using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var test = new Aws.LB.LoadBalancer("test", new Aws.LB.LoadBalancerArgs
    {
        EnableDeletionProtection = true,
        Internal = false,
        LoadBalancerType = "network",
        Subnets = 
        {
            aws_subnet.Public.Select(__item => __item.Id).ToList(),
        },
        Tags = 
        {
            { "Environment", "production" },
        },
    });
}

}

Specifying Elastic IPs

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var example = new Aws.LB.LoadBalancer("example", new Aws.LB.LoadBalancerArgs
    {
        LoadBalancerType = "network",
        SubnetMappings = 
        {
            new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs
            {
                AllocationId = aws_eip.Example1.Id,
                SubnetId = aws_subnet.Example1.Id,
            },
            new Aws.LB.Inputs.LoadBalancerSubnetMappingArgs
            {
                AllocationId = aws_eip.Example2.Id,
                SubnetId = aws_subnet.Example2.Id,
            },
        },
    });
}

}

LoadBalancerArgs

LoadBalancerState

TargetGroup

Provides a Target Group resource for use with Load Balancer resources.

Note: aws.alb.TargetGroup is known as aws.lb.TargetGroup. The functionality is identical.

Example Usage

Instance Target Group

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var main = new Aws.Ec2.Vpc("main", new Aws.Ec2.VpcArgs
    {
        CidrBlock = "10.0.0.0/16",
    });
    var test = new Aws.LB.TargetGroup("test", new Aws.LB.TargetGroupArgs
    {
        Port = 80,
        Protocol = "HTTP",
        VpcId = main.Id,
    });
}

}

IP Target Group

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var main = new Aws.Ec2.Vpc("main", new Aws.Ec2.VpcArgs
    {
        CidrBlock = "10.0.0.0/16",
    });
    var ip_example = new Aws.LB.TargetGroup("ip-example", new Aws.LB.TargetGroupArgs
    {
        Port = 80,
        Protocol = "HTTP",
        TargetType = "ip",
        VpcId = main.Id,
    });
}

}

Lambda Target Group

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var lambda_example = new Aws.LB.TargetGroup("lambda-example", new Aws.LB.TargetGroupArgs
    {
        TargetType = "lambda",
    });
}

}

TargetGroupArgs

TargetGroupAttachment

Provides the ability to register instances and containers with an Application Load Balancer (ALB) or Network Load Balancer (NLB) target group. For attaching resources with Elastic Load Balancer (ELB), see the aws.elb.Attachment resource.

Note: aws.alb.TargetGroupAttachment is known as aws.lb.TargetGroupAttachment. The functionality is identical.

Example Usage

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var testTargetGroup = new Aws.LB.TargetGroup("testTargetGroup", new Aws.LB.TargetGroupArgs
    {
    });
    var testInstance = new Aws.Ec2.Instance("testInstance", new Aws.Ec2.InstanceArgs
    {
    });
    var testTargetGroupAttachment = new Aws.LB.TargetGroupAttachment("testTargetGroupAttachment", new Aws.LB.TargetGroupAttachmentArgs
    {
        Port = 80,
        TargetGroupArn = testTargetGroup.Arn,
        TargetId = testInstance.Id,
    });
}

}

Usage with lambda

using Pulumi;
using Aws = Pulumi.Aws;

class MyStack : Stack
{
public MyStack()
{
    var testTargetGroup = new Aws.LB.TargetGroup("testTargetGroup", new Aws.LB.TargetGroupArgs
    {
        TargetType = "lambda",
    });
    var testFunction = new Aws.Lambda.Function("testFunction", new Aws.Lambda.FunctionArgs
    {
    });
    var withLb = new Aws.Lambda.Permission("withLb", new Aws.Lambda.PermissionArgs
    {
        Action = "lambda:InvokeFunction",
        Function = testFunction.Arn,
        Principal = "elasticloadbalancing.amazonaws.com",
        SourceArn = testTargetGroup.Arn,
    });
    var testTargetGroupAttachment = new Aws.LB.TargetGroupAttachment("testTargetGroupAttachment", new Aws.LB.TargetGroupAttachmentArgs
    {
        TargetGroupArn = testTargetGroup.Arn,
        TargetId = testFunction.Arn,
    });
}

}

TargetGroupAttachmentArgs

TargetGroupAttachmentState

TargetGroupState

Back to top Copyright 2016-2020, Pulumi Corporation.