gpt4 book ai didi

amazon-web-services - 从文件中读取 terraform 变量

转载 作者:行者123 更新时间:2023-12-04 17:07:24 26 4
gpt4 key购买 nike

在 terraform 中,可以按如下方式指定长键:

resource "aws_iam_role_policy" "foo-policy" {
role = "${aws_iam_role.foo-role.name}"
name = "foo-policy"

policy = <<EOF
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"logs:CreateLogGroup",
"logs:CreateLogStream",
"logs:PutLogEvents",
"logs:DescribeLogStreams"
],
"Resource": [
"arn:aws:logs:*:*:*"
]
}
]
}
EOF
}

这是 IAM 策略文档的常见模式。该方法记录在 here并且是 AWS IAM role policy page on terraform 中给出的示例.有没有办法从外部文件中读取文档?

这有很多优点:
  • 您可以使用工具生成策略
  • 您可以使用 linting 工具来验证策略 JSON。编辑器语法突出显示也将起作用,显示 JSON 错误,如尾随逗号。
  • 您可以使用更高级的工具来验证策略文档语法
  • 最佳答案

    您可以使用 terraform 的 template_file为此的数据源。只需将您的策略​​写入 terraform 脚本可以访问的路径中的文件,然后创建引用它的 template_file 数据源。例如:

    data "template_file" "policy" {
    template = "${file("somepath/my-policy.json")}"
    }

    然后,在 foo-policy 中,你会像这样渲染它:
    policy = "${data.template_file.policy.rendered}"

    template_file 的另一个好处是您可以在引用的文件中插入变量。例如,您可以有像 ${IAMUser} 这样的变量。或 ${AWSAccountNumber}在您的策略中并通过 template_file vars 选项将其传递,这将允许您重用策略文件。

    延伸阅读
  • Terraform Docs - Configuring Data Sources
  • 关于amazon-web-services - 从文件中读取 terraform 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43526544/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com