【问题标题】:How to use a heredoc in a security group description如何在安全组描述中使用heredoc
【发布时间】:2019-06-08 00:51:48
【问题描述】:

我正在尝试这个:

resource "aws_security_group" "mysg" {
  description = <<EOF
this is a very long descirpltion slkfjsldkfjsdf
skdfjlskdfjlksdjlfksdjlfksjdlfksjdlfkjsdlkfjsldkf
sdlkfjsldkfjsldkfjsldkfjlksdjflskdfjlksdjflksdjflksdf
EOF
}

得到这个

aws_security_group.mysq:创建安全组时出错:InvalidParameterValue:安全组描述无效。有效描述是来自以下集合的少于 256 个字符的字符串:a-zA-Z0-9。 _-:/()#,@[]+=&;{}!$*

它完全在 char 限制之内,我认为它正在添加回车或其他东西?如何让它不在字符串中添加换行符?

我还尝试了- 的变体,但无济于事https://github.com/hashicorp/hcl/issues/144

【问题讨论】:

  • 不接受return (\n)。
  • 这是什么意思,我做错了什么,有解决办法吗?我也尝试使用-
  • 您是否阅读了您粘贴的答案(最后一条评论)? github.com/hashicorp/hcl/issues/144#issuecomment-435455048
  • 是的,这不起作用,而且根据开发人员的说法,他使用的语法甚至都不正确

标签: amazon-web-services terraform aws-security-group terraform-provider-aws


【解决方案1】:

作为您粘贴的链接,last comment 提供了解决方法。

resource "aws_security_group" "mysg" {
  description = <<-EOF
this is a very long descirpltion slkfjsldkfjsdf
skdfjlskdfjlksdjlfksdjlfksjdlfksjdlfkjsdlkfjsldkf
sdlkfjsldkfjsldkfjsldkfjlksdjflskdfjlksdjflksdjflksdf
-EOF
}

这是试运行的输出

An execution plan has been generated and is shown below.
Resource actions are indicated with the following symbols:
  + create

Terraform will perform the following actions:

  + aws_security_group.mysg
      id:                     <computed>
      arn:                    <computed>
      description:            "this is a very long descirpltion slkfjsldkfjsdf\nskdfjlskdfjlksdjlfksdjlfksjdlfksjdlfkjsdlkfjsldkf\nsdlkfjsldkfjsldkfjsldkfjlksdjflskdfjlksdjflksdjflksdf\n"
      egress.#:               <computed>
      ingress.#:              <computed>
      name:                   <computed>
      owner_id:               <computed>
      revoke_rules_on_delete: "false"
      vpc_id:                 <computed>


Plan: 1 to add, 0 to change, 0 to destroy.

【讨论】:

  • 并且您确认这对您有用,因为正如我的帖子中所述,它不适合我
  • 你运行的是什么 terraform 版本?
  • Terraform v0.11.10
  • 应该很好,很有趣。
  • 哦,试运行会成功,计划对我有用,但申请失败。我可以稍后再试以确认我的缩进中没有错字或其他内容
【解决方案2】:

是的,heredoc 的使用似乎打破了这里的长度限制。你可以不使用heredoc,但如果你喜欢冗长......

为你的作品添加一个名为 description.txt 的文件:

例如

This is a very long descirpltion slkfjsldkfjsdf
skdfjlskdfjlksdjlfksdjlfksjdlfksjdlfkjsdlkfjsldkf
sdlkfjsldkfjsldkfjsldkfjlksdjflskdfjlksdjflksdjflksdf

然后将您的代码更改为:

data "local_file" "foo" {
    filename = "${path.module}/description.txt"
}

resource "aws_security_group" "mysg" {
  description = "${data.local_file.foo.content}"
}

填满你的靴子。

【讨论】:

    猜你喜欢
    • 2017-03-15
    • 2019-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-06
    • 2019-03-10
    • 2011-02-18
    相关资源
    最近更新 更多