AWS CDK - 现有应用程序负载均衡器侦听器 - 如何插入规则

AWS CDK - Existing Application Load Balancer Listener - How To Insert Rule

我有一个带有 HTTPS 侦听器的应用程序负载平衡器,它是在我开始使用 CDK 之前创建的。

侦听器已经有 13 条规则,这些规则根据主机名将请求路由到不同的 fargate 实例。 最后一条规则是回退规则。

现在我想在回退规则之前使用 CDK 插入新规则。 由于添加新的 Fargate 服务时会有新规则,因此这必须是动态的。 如何向现有侦听器添加新规则以及如何获取特定规则(本例中为后备规则)的优先级作为优先级计算的起点

或者我可以只添加优先级为 1 的规则,然后现有规则的优先级将分别增加 1 吗?

我通过这种方式检索了现有的监听器,但我不知道如何访问它的规则

const httpsListener = elbv2.ApplicationListener.fromLookup(
  this,
  "ALBListenerHTTPS", {
    listenerArn: "my:aws:alb:listener:arn",
  }
);

每个 ApplicationListener 映射到一个 AWS::ElasticLoadBalancingV2::ListenerRule CloudFormation 资源。

一旦你有了 ApplicationListener 你就可以定义新的 ApplicationListenerRules:

new ApplicationListenerRule(this, 'Rule1', {
    listener: httpsListener,
    priority: 1
    ...
})

但是,要aws-cdk管理负载均衡器规则,它们都需要由它创建。有2种解法。

解决方案 A

将所有现有侦听器规则导入 CloudFormation 堆栈。负载均衡器规则资源 supports importing 进入 CloudFormation 堆栈。

解决方案 B

通过命令行更改现有侦听器规则的优先级。目的是让现有规则优先级从 N + 1 开始。其中 N 是当前规则数。这样做会为 aws-cdk 中定义的新规则创建免费的 space。使用 space,您可以通过 aws-cdk 定义现有规则的副本并部署它们。部署后,您可以安全地删除手动创建的规则。