如何在 AWS CDK 中创建侦听器规则?
How to create listener rule in AWS CDK?
您好,我正在使用 AWS CDK。我正在尝试创建具有应用程序负载平衡的 ECS。我创建 ECS 集群、任务定义、负载均衡器和监听器。
下面是我的负载均衡器。
lb = elbv2.ApplicationLoadBalancer(
self, "MWSLoadBalancer",
vpc = vpc,
internet_facing= True,
security_group= mws_vpc_sg_alb
)
下面是我的听众
listener = lb.add_listener(
"MWSLoadBalanceListener",
port = 80,
open = True,
)
下面是健康检查
health_check = elbv2.HealthCheck(
interval=core.Duration.seconds(60),
path="/",
timeout=core.Duration.seconds(5)
)
下面是给ECS添加ALB
target = listener.add_targets(
"MWSLoadBalancerTargetGroup",
port=80,
targets=[service],
health_check=health_check,
)
根据 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-elasticloadbalancingv2-readme.html#targets-and-target-groups 如果我们将平衡目标(例如 AutoScalingGroups、ECS 服务或单个实例)直接添加到您的侦听器,则会自动为您创建适当的 TargetGroup。
所以我没有创建任何目标组,而是在我执行 cdk synth 时自动创建了一个。接下来,我想让我的 ALB 有 listner 规则。 listner规则的云形成模板如下
MWSLoadBalancerHttpListenerRule:
Type: "AWS::ElasticLoadBalancingV2::ListenerRule"
DependsOn: MWSLoadBalancer
Properties:
Actions:
- Type: forward
TargetGroupArn: !Ref MWSTargetGroup
ListenerArn: !Ref MWSLoadBalanceListener
Conditions:
- Field: path-pattern
Values:
- "/api/*"
Priority: 3
我尝试创建如下监听器规则。
elbv2.ApplicationListenerRule(self, id = "listner rule", path_pattern="/api/*", priority = 1, listener = listener)
这是投掷
Listener rule needs at least one action
谁能帮我找出这个错误?
创建 ApplicationListenerRule 时,您必须指定一个操作,它是 target_groups、fixed_response 或 redirect_response 之一。
target_groups (Optional[List[IApplicationTargetGroup]]) – Target groups to forward requests to. Only one of fixedResponse, redirectResponse or targetGroups can be specified.
elbv2.ApplicationListenerRule(
self,
id="listener rule",
path_pattern="/api/*",
priority=1,
listener=listener,
target_groups=[target]
)
请注意,对于这种情况,有一个 CDK 模式,aws-ecs-patterns,它为常见的架构模式提供更高级别的构造。
https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ecs-patterns-readme.html
您好,我正在使用 AWS CDK。我正在尝试创建具有应用程序负载平衡的 ECS。我创建 ECS 集群、任务定义、负载均衡器和监听器。
下面是我的负载均衡器。
lb = elbv2.ApplicationLoadBalancer(
self, "MWSLoadBalancer",
vpc = vpc,
internet_facing= True,
security_group= mws_vpc_sg_alb
)
下面是我的听众
listener = lb.add_listener(
"MWSLoadBalanceListener",
port = 80,
open = True,
)
下面是健康检查
health_check = elbv2.HealthCheck(
interval=core.Duration.seconds(60),
path="/",
timeout=core.Duration.seconds(5)
)
下面是给ECS添加ALB
target = listener.add_targets(
"MWSLoadBalancerTargetGroup",
port=80,
targets=[service],
health_check=health_check,
)
根据 https://docs.aws.amazon.com/cdk/api/latest/docs/aws-elasticloadbalancingv2-readme.html#targets-and-target-groups 如果我们将平衡目标(例如 AutoScalingGroups、ECS 服务或单个实例)直接添加到您的侦听器,则会自动为您创建适当的 TargetGroup。 所以我没有创建任何目标组,而是在我执行 cdk synth 时自动创建了一个。接下来,我想让我的 ALB 有 listner 规则。 listner规则的云形成模板如下
MWSLoadBalancerHttpListenerRule:
Type: "AWS::ElasticLoadBalancingV2::ListenerRule"
DependsOn: MWSLoadBalancer
Properties:
Actions:
- Type: forward
TargetGroupArn: !Ref MWSTargetGroup
ListenerArn: !Ref MWSLoadBalanceListener
Conditions:
- Field: path-pattern
Values:
- "/api/*"
Priority: 3
我尝试创建如下监听器规则。
elbv2.ApplicationListenerRule(self, id = "listner rule", path_pattern="/api/*", priority = 1, listener = listener)
这是投掷
Listener rule needs at least one action
谁能帮我找出这个错误?
创建 ApplicationListenerRule 时,您必须指定一个操作,它是 target_groups、fixed_response 或 redirect_response 之一。
target_groups (Optional[List[IApplicationTargetGroup]]) – Target groups to forward requests to. Only one of fixedResponse, redirectResponse or targetGroups can be specified.
elbv2.ApplicationListenerRule(
self,
id="listener rule",
path_pattern="/api/*",
priority=1,
listener=listener,
target_groups=[target]
)
请注意,对于这种情况,有一个 CDK 模式,aws-ecs-patterns,它为常见的架构模式提供更高级别的构造。
https://docs.aws.amazon.com/cdk/api/latest/docs/aws-ecs-patterns-readme.html