amazon-web-services - AWS ELB 规则中监听器优先级的默认值

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

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

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

我尝试了一种解决方法,我将优先级设置为一个非常高的数字,在 AWS 中,它会将其推回到规则 1 2 3。但在系统本身中,优先级仍然存储为那个大数字我给它。
createRule()可以找到我正在使用的函数 here

最佳答案

我自己遇到了这个问题,并认为我会分享我的解决方案,因为这个问题已经快一年没有得到回答了。据我所知,仅使用 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 中的规则总数。

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

我有一个案例,我有 8 条规则,而亚马逊最初给它们的优先级是 1-8正如预期的那样,但是在通过控制台编辑规则顺序后,Amazon 决定将规则的优先级更改为 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找出下一个可用优先级在非连续数组中的位置。

关于amazon-web-services - AWS ELB 规则中监听器优先级的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46000378/

相关文章:

python - AWS Glue 作业中的互联网访问

amazon-web-services - 如何在 Amazon S3 存储桶上设置公共(public)只读访问权限?

amazon-web-services - 将 war 从S3部署到AWS Elastic Beanstalk

amazon-ec2 - VPC 中的 Amazon ELB

amazon-web-services - 使用AWS CloudWatch Insights按字段值聚合日志并绘制为多个系列的图

amazon-web-services - 重新创建 CloudFormation 构建桶

r - 在 Amazon Linux EC2 实例上安装 R 包

postgresql - pg_dump : how to install on Amazon Linux for PostgreSQL 9. 5.2?

amazon-web-services - AWS Route 53-到应用程序负载平衡器不同端​​口的域名路由

amazon-web-services - AWS Cloudformation - 如何将 vpc 链接/NLB 附加到 api 网关中的方法?