AWS ELB规则中侦听器优先级的默认值

时间:2017-09-01 12:32:24

标签: amazon-web-services amazon-ec2 amazon-elb

我正在尝试通过JavaScript SDK在AWS ELB中创建多个侦听器规则。所需的priority字段要求您添加优先级。而且我不想每次想要添加新规则时检查现有规则优先级。

我想知道是否有人知道如何设置默认值。假设我有优先级为1 2 3的规则,有没有办法可以设置它,以便我添加的下一个规则优先级为4?

我尝试了一项工作,我将优先级设置为一个非常高的数字,在AWS中,它会将其推回到规则1 2 3.但在系统本身,优先级仍然存储为我给了它很多。

我正在使用的createRule()函数可以找到here

1 个答案:

答案 0 :(得分:3)

我自己遇到了这个问题,并认为我会分享我的解决方案,因为这个问题将近一年没有得到回答。据我所知,仅使用AWS无法做到这一点,但是通过一些额外的逻辑,我们可以实现自动化。

RULE_COUNT=$(aws elbv2 describe-rules --listener-arn "${LISTENER_ARN}" | jq ".Rules | length")
aws elbv2 create-rule --listener-arn "${LISTENER_ARN}" --cli-input-json "${RULE_TEMPLATE}" --priority "${RULE_COUNT}"

jq是几乎所有基于* nix的系统的一部分的json解析器,我们可以使用它来确定awscli返回的规则数量。您已定义的n + 1规则应有n条规则,以及一个默认规则,AWS始终将其保留为最低默认优先级。因此,根据您的问题,下一个优先级将只是AWS中规则的总数。


编辑:经过一段时间的研究,我发现Amazon不一定会以任何可预测的方式保留优先级。  第一个答案仅在优先级连续且占用最小可能优先级的情况下有效。例如,如果您有n条规则,则代码假定优先级范围始终为1..n。事实证明,尽管Amazon的优先级看似可以是任何东西,但有时AWS在编辑,添加或删除规则时会更改所有优先级编号(但保持所有顺序相同)。

我有一个案例,我有8条规则,Amazon最初按预期给它们1-8的优先级,但是随后通过控制台编辑了规则的顺序后,Amazon决定将规则的优先级更改为{ {1}}。在尝试使用它并尝试学习该系统之后,甚至更糟的是,我最终到达了亚马逊给我优先级2-911-16的地步,这是我放弃并试图找到一个更好的系统的地方。

19-20

此代码基本上可以找到所有不同规则的优先级,将它们放在列表中,在列表中找到最大的优先级并添加一个优先级。如果您的优先级列表像我的一样被淘汰,这应该可以工作,尽管我真的希望AWS可以添加一种简单的添加规则的方法,而不必担心转移其他优先级或解析其JSON找出下一个可用优先级在不连续数组中的位置。