如何使用Ruby基于指定字符串前缀搜索AWS ASG名称
解答
首先明确:Ruby原生支持字符串匹配检索,筛选以指定前缀开头的ASG名称非常简单,有两种常用实现方式:
- 方式一:使用
start_with?方法(推荐)
这是Ruby专门为前缀匹配场景设计的原生字符串方法,可读性好、执行效率高,没有正则的额外开销。
示例代码:
执行后# 此处替换为你实际拉取到的全量ASG名称数组 all_asgs = [ "digital-microservice-app1-20220627062026999600000001", "digital-microservice-app2-20220627062026999600000001", "digital-microservice-app3-20220627062026999600000001", "unrelated-resource-test-20220601000000" ] target_asgs = all_asgs.filter { |name| name.start_with?("digital-microservice-") }target_asgs会返回所有符合前缀要求的ASG名称,自动过滤掉其他不相关的资源。 - 方式二:使用正则匹配
如果后续你需要叠加更复杂的匹配规则(比如校验名称中间的应用编号、后缀的时间戳格式),可以用正则实现,灵活性更高。
示例代码:# \A 表示匹配字符串的起始位置,避免出现字符串中间包含目标字段的误匹配 pattern = /\Adigital-microservice-/ target_asgs = all_asgs.filter { |name| name.match?(pattern) }
如果你是通过云厂商SDK调用接口获取ASG列表,绝大多数SDK本身就支持在请求参数中指定名称前缀做服务端过滤,不需要拉取全量数据到本地再筛选,性能会更好,可根据你使用的SDK对应配置即可。本地处理全量数据时,上面两种Ruby原生方案都可以直接使用,无需引入第三方依赖。
涉及的ASG命名样例参考:
"digital-microservice-app1-20220627062026999600000001" "digital-microservice-app2-20220627062026999600000001" "digital-microservice-app3-20220627062026999600000001"
内容的提问来源于stack exchange,提问作者RoyalMan
相关产品推荐
相关产品推荐

