Terraform 如何设置计算的局部变量

Terraform 如何设置计算的局部变量,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我有一个tf.json文件,它声明了一组局部变量。其中一个变量是复杂对象的数组,如下所示: { "locals": [ { "ordered_cache_behaviors": [ { "path_pattern": "/poc-app-angular*", "s3_target": "dev-ui-stat

我有一个
tf.json
文件,它声明了一组局部变量。其中一个变量是复杂对象的数组,如下所示:

{
  "locals": [
    {
      "ordered_cache_behaviors": [
        {
          "path_pattern": "/poc-app-angular*",
          "s3_target": "dev-ui-static",
          "ingress": "external"
        }
      ]
    }
  ]
}
这是我想做的。。。我希望这是一个计算值,而不是在我的文件中静态声明变量
ordered\u cache\u behaviors
。我将从
S3
bucket获取此配置,并在此处设置值。因此,静态值将仅为一个空数组
[]
,在从
S3
获取数据后,我将使用脚本附加到该数组


每次
地形计划
地形应用
之前,都需要执行此逻辑。最好的方法是什么?我假设我需要使用供应器来启动脚本?如果是,那么如何在此处设置局部变量?

如果缓存配置数据可以采用JSON格式,则可以使用plus函数作为替代方法:

将缓存配置数据作为
cache config.json
上传到
poc-app-cache-config
存储桶,然后使用以下命令让Terraform从S3下载该文件,并将其解析为本地
有序缓存行为
变量:

data "aws_s3_bucket_object" "cache_configuration" {
  bucket = "poc-app-cache-config"
  key    = "cache-config.json" # JSON-formatted cache configuration map
}

...

locals {
  ordered_cache_behaviors = jsondecode(aws_s3_bucket_object.cache_configuration.body)
}

太棒了,谢谢!!