小编Con*_*ery的帖子

Terraform 在不应该的情况下解释本地表达式

我有一个在 AWS ECS 上运行的 Kafka 客户端容器,它应该从容器环境变量中接收要订阅哪些主题的正则表达式。在我的 terraform 中,我定义环境变量,如下所示:

..
      {
        "name": "KAFKA_TOPIC_REGEX",
        "value": "${local.kafka_topic_regex[local.environment]}"
      }
..
Run Code Online (Sandbox Code Playgroud)

在 locals.tf 文件中使用相应的值,如下所示:

..
  kafka_topic_regex = {
    development = "^(ab\..*\..*)$|^(foo\.bar)$"
  }
..
Run Code Online (Sandbox Code Playgroud)

但是我很难让它按预期工作。当我进行地形规划时,显示以下错误:

The symbol "." is not a valid escape sequence selector.
Run Code Online (Sandbox Code Playgroud)

不幸的是,我需要反斜杠,以便正则表达式使用文字点作为主题名称中的字符。我无法逃避反斜杠,因为我实际上需要它存在于正则表达式中。

我同样尝试过正则表达式,如下所示:

^(ab[.].*[.].*)$|^(foo[.]bar)$
Run Code Online (Sandbox Code Playgroud)

同样,Terraform 对此做了一些奇怪的解释,在计划中该值显示为:

^ab.(.*)
Run Code Online (Sandbox Code Playgroud)

这意味着我需要的文字点不在正则表达式中,因为它需要在正则表达式中转义。

看起来 Terraform 正在解释我的字符串并导致计划/应用失败,而它不应该解释它。

任何帮助将不胜感激,谢谢

regex amazon-web-services amazon-ecs terraform

6
推荐指数
2
解决办法
1万
查看次数