Ser*_*rey 4 amazon-ec2 amazon-web-services amazon-elb
我正在尝试通过 JavaScript SDK 在 AWS ELB 中创建多个侦听器规则。必填priority
字段要求您添加优先级。而且我不想每次添加新规则时都必须检查现有规则的优先级。
我想知道是否有人知道设置默认值的方法。假设我有优先级规则1 2 3
,有没有办法设置它,以便我添加的下一个规则的优先级为 4?
我尝试了一种解决方法,将优先级设置为一个非常高的数字,在 AWS 中,它会将其推回到规则 1 2 3。但在系统本身中,优先级仍然存储为那个大数字 i给它。
createRule()
我正在使用的功能可以在这里找到
Bra*_*son 10
我自己遇到了这个问题,并认为我会分享我的解决方案,因为这个问题已经快一年没有得到回答了。据我所知,仅使用 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}"
Run Code Online (Sandbox Code Playgroud)
jq
是几乎所有基于 *nix 的系统的一部分的 json 解析器,我们可以使用它来确定awscli
返回的规则数量。应该有n + 1
针对n
您定义的规则的规则以及 AWS 始终保持为最低的默认优先级的一条默认规则。因此,根据您的问题,下一个优先级将只是 AWS 中的规则总数。
编辑:经过一段时间的工作后,我发现亚马逊不一定以任何可预测的方式保持优先级。第一个答案只有在优先级是连续的并且占据尽可能低的优先级时才有效。例如,如果您有n
规则,则代码假定优先级范围始终为1..n
。事实证明,亚马逊的优先级似乎可以是任何东西,有时 AWS 会在编辑、添加或删除规则时更改所有优先级编号(但保持所有内容的顺序相同)。
我有一个案例,我有 8 条规则,Amazon 最初1-8
按预期给了它们优先级,但是在通过控制台编辑规则顺序后,Amazon 决定将规则的优先级更改为2-9
. 更糟糕的是,在玩弄它并尝试学习该系统后,我最终达到了亚马逊给我优先考虑的地步,11-16
而19-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}"
Run Code Online (Sandbox Code Playgroud)
这段代码基本上找到所有不同规则的优先级,将它们放在一个列表中,在列表中找到最大的优先级并添加一个。如果您的优先级列表像我的一样被抛出异常,这应该可以工作,尽管我真的希望 AWS 只添加一种简单的添加规则的方法,而不必关心转移其他所有内容的优先级或解析它们的 JSON找出下一个可用优先级在非连续数组中的位置。
归档时间: |
|
查看次数: |
1500 次 |
最近记录: |