带有特殊字符的 terraform 标签值

Posted

技术标签:

【中文标题】带有特殊字符的 terraform 标签值【英文标题】:terraform tag value with special characters 【发布时间】:2022-01-07 14:44:14 【问题描述】:

虽然尝试通过 Web 控制台更新 AWS 接受低于标记值,但是使用 terraform 很难完成任务。

我想针对我的资源更新的标签是:

1. "IT R&D & DATA - 7777"
2. "Example Team, Inc. - 001"

在 terraform 应用期间,每次不同的尝试都会出现以下错误(但预览始终显示正确的数据)。有什么解决方法吗?

Error: error updating LB (arn:aws:elasticloadbalancing:us-west-1:xxxx:loadbalancer/app/LB-DEV/f4c252) 
  tags: error tagging resource (arn:aws:elasticloadbalancing:us-west-1:xxxx:loadbalancer/app/LB-DEV/f4c252): 
  ValidationError: 1 validation error detected: Value 'Example Team, Inc. - 001' at 'tags.1.member.value' 
  failed to satisfy constraint: Member must satisfy regular expression pattern: ^([\pL\pZ\pN_.:/=+\-@]*)$
resource "aws_lb" "lb" 

    internal           = "true"
    load_balancer_type = "application"
    name               = format("%s%s","LB-",var.name)
    subnets            = data.aws_subnet_ids.subnet.ids
    security_groups    = [
        data.aws_security_group.sec_group.id
    ]

    tags = 
        business_unit       = "IT R//&D //& DATA //- 7777"
        legal_entity        = replace("Example Team, Inc. - 001", "/(['\\*])/", "//$1")
    

【问题讨论】:

【参考方案1】:

& 不允许在标签中。来自docs:

一般来说,允许的字符是字母、数字、可以用 UTF-8 表示的空格,以及以下字符:_。 : / = + - @.

【讨论】:

抱歉回复晚了。甚至“,”也会产生问题,但如果您从网络上尝试它不会抱怨。我们仍在为网络上的所有资源更新带有逗号的标签。但是为了让 terraform 工作,我删除了 & 和 ","

以上是关于带有特殊字符的 terraform 标签值的主要内容,如果未能解决你的问题,请参考以下文章

使用带有特殊字符的 Django 的 url 模板标签

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

PostMan发送请求参数带有路径特殊字符会返回400错误(与URL字符及URL编码值有关)

如何使用带有编解码器值的 python .replace 来删除特殊字符?

从带有特殊字符的字符串转换为数字

java如何转换富文本框中的中文编码格式,且把标签变成特殊字符