ALB 侦听器需要至少一个 targetGroup
ALB listener requires at least one targetGroup
我在一个 CDK 项目中制作了一个 ApplicationLoadBalancer
并且想在多个项目中使用这个 ApplicationLoadBalancer
。
比如我有3个cdk项目maincdk
,app1cdk
,app2cdk
在maincdk
中创建一个ALB
和一个listener
(主监听器,端口80)
在app1cdk
中,将targetGroup(如ECS)添加到main-listener
在app2cdk
中将目标组(如ECS)添加到主监听器
每次访问都是80端口,但是我可以通过域名切换
然而,在maincdk
中:
const lb = new elb.ApplicationLoadBalancer(this, "lb", {
vpc: vpc,
loadBalancerName : "main-lb",
internetFacing: true,
vpcSubnets: vpc.selectSubnets({ subnetType: ec2.SubnetType.PUBLIC }),
securityGroup: adminLbSg
});
const listener = lb.addListener("main-listener", { port: 80 });
发生此错误:
[CommonLbStack/lb/main-listener] Listener needs at least one default action or target group (call addTargetGroups or addAction)
它说 listener
应该至少有一个 TargetGroup
。
我添加了一个像这样的虚拟动作,但出现了同样的错误:
listener.addAction('Fixed', {
priority: 1,
conditions: [
elb.ListenerCondition.pathPatterns(['/ok']),
],
action: elb.ListenerAction.fixedResponse(200, {
messageBody: 'OK',
})
});
它说你至少需要一个:
- 默认操作
- 或目标群体
既然您不想从 maincdk
添加 TargetGroup,为什么不添加 default 操作?您上面的固定操作不是默认操作。尝试类似的东西:
listener.addAction('DefaultAction', {
action: elbv2.ListenerAction.fixedResponse(404, {
contentType: elbv2.ContentType.TEXT_PLAIN,
messageBody: 'Cannot route your request; no matching project found.',
}),
});
然后您可以在来自 app1cdk
和 app2cdk
项目的规则之上分层条件规则,以根据您需要的任何标准(路径、主机名等)路由到这些项目
请参阅:侦听器配置文档中的“Default Rules”。
我在一个 CDK 项目中制作了一个 ApplicationLoadBalancer
并且想在多个项目中使用这个 ApplicationLoadBalancer
。
比如我有3个cdk项目maincdk
,app1cdk
,app2cdk
在
中创建一个maincdk
ALB
和一个listener
(主监听器,端口80)在
app1cdk
中,将targetGroup(如ECS)添加到main-listener在
app2cdk
中将目标组(如ECS)添加到主监听器每次访问都是80端口,但是我可以通过域名切换
然而,在maincdk
中:
const lb = new elb.ApplicationLoadBalancer(this, "lb", {
vpc: vpc,
loadBalancerName : "main-lb",
internetFacing: true,
vpcSubnets: vpc.selectSubnets({ subnetType: ec2.SubnetType.PUBLIC }),
securityGroup: adminLbSg
});
const listener = lb.addListener("main-listener", { port: 80 });
发生此错误:
[CommonLbStack/lb/main-listener] Listener needs at least one default action or target group (call addTargetGroups or addAction)
它说 listener
应该至少有一个 TargetGroup
。
我添加了一个像这样的虚拟动作,但出现了同样的错误:
listener.addAction('Fixed', {
priority: 1,
conditions: [
elb.ListenerCondition.pathPatterns(['/ok']),
],
action: elb.ListenerAction.fixedResponse(200, {
messageBody: 'OK',
})
});
它说你至少需要一个:
- 默认操作
- 或目标群体
既然您不想从 maincdk
添加 TargetGroup,为什么不添加 default 操作?您上面的固定操作不是默认操作。尝试类似的东西:
listener.addAction('DefaultAction', {
action: elbv2.ListenerAction.fixedResponse(404, {
contentType: elbv2.ContentType.TEXT_PLAIN,
messageBody: 'Cannot route your request; no matching project found.',
}),
});
然后您可以在来自 app1cdk
和 app2cdk
项目的规则之上分层条件规则,以根据您需要的任何标准(路径、主机名等)路由到这些项目
请参阅:侦听器配置文档中的“Default Rules”。