Namespace Pulumi.Aws.ApplicationLoadBalancing
Classes
GetListener
GetListenerArgs
GetListenerResult
GetLoadBalancer
GetLoadBalancerArgs
GetLoadBalancerResult
GetTargetGroup
GetTargetGroupArgs
GetTargetGroupResult
Listener
Provides a Load Balancer Listener resource.
Note:
aws.alb.Listeneris known asaws.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.ListenerCertificateis known asaws.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.ListenerRuleis known asaws.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.LoadBalanceris known asaws.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.TargetGroupis known asaws.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.TargetGroupAttachmentis known asaws.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,
});
}
}