【问题标题】:Default Value for Listener Priority in AWS ELB RulesAWS ELB 规则中侦听器优先级的默认值
【发布时间】:2017-09-01 12:32:23
【问题描述】:

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

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

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

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

【问题讨论】:

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


    【解决方案1】:

    我自己遇到了这个问题,并想我会分享我的解决方案,因为这个问题已经将近一年没有得到回答了。据我所知,仅使用 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 规则应该有 n + 1 规则以及 AWS 始终保持为最低默认优先级的默认规则。因此,根据您的问题,下一个优先级将只是 AWS 中的规则总数。


    编辑: 在处理这个问题多一点时间后,我发现亚马逊不一定以任何可预测的方式保持优先级。 第一个答案只有在优先级是连续的并且占据尽可能小的优先级时才有效。例如,如果您有n 规则,则代码假定优先级范围始终为1..n。事实证明,亚马逊的优先级似乎可以是任何东西,有时 AWS 会在编辑、添加或删除规则时更改所有优先级编号(但保持所有内容的顺序相同)。

    我有一个案例,我有 8 条规则,亚马逊最初按预期给了它们 1-8 的优先级,但是在通过控制台编辑规则的顺序后,亚马逊决定将规则的优先级更改为 2-9 .更糟糕的是,在玩弄它并尝试学习该系统后,我最终达到了亚马逊给我优先级11-1619-20 的地步,我放弃了并试图找出更好的系统。

    RULE_COUNT=$(aws elbv2 describe-rules --listener-arn "${LISTENER_ARN}" | jq -r '[.Rules[].Priority][0:-1] | map(.|tonumber) | max + 1')
    aws elbv2 create-rule --listener-arn "${LISTENER_ARN}" --cli-input-json "${RULE_TEMPLATE}" --priority "${RULE_COUNT}"
    

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

    【讨论】:

    • 谢谢,非常感谢;不幸的是,AWS 没有在后台处理这件事。
    猜你喜欢
    • 2016-05-06
    • 2019-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-23
    • 1970-01-01
    • 2010-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多