如何在 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)
)

下面为弹性云服务器添加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 如果我们直接将平衡目标(例如自动缩放组、ECS 服务或单个实例(添加到您的侦听器,则会自动为您创建相应的目标组。 所以我没有创建任何目标组,而是在我做 cdk 合成器时自动创建的目标组。接下来,我想在我的 ALB 中使用列表器规则。列表规则的云形成模板如下。

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)

这是投掷

侦听器规则至少需要一个操作

有人可以帮助我识别此错误吗?

创建 ApplicationListenerRule 时,必须指定一个操作,该操作是target_groups、fixed_response或redirect_response之一。

target_groups(可选[列表[IApplicationTargetGroup]](– 要将请求转发到的目标组。只能指定固定响应、重定向响应或目标组之一。

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

最新更新