取决于AWS SSM参数数据源时,“无法计算计数值”

时间:2018-08-29 22:14:52

标签: terraform terraform-provider-aws

我有一个使用AWS Systems Manager Parameters配置的Terraform项目。想象一个具有以下crypto_secretstream...的Terraform项目:

variables.tf

variable "stack_name" { type = "string" default = "stack" } variable "vpc_cidr_block" { type = "string" } variable "subnet_config_public_subnets" { type = "list" } variable "subnet_config_private_subnets" { type = "list" } 可能看起来像这样:

terraform.tfvars

相反,假设vpc_cidr_block = "10.1.0.0/16" subnet_config_public_subnets = ["10.1.2.0/24", "10.1.4.0/24", "10.1.6.0/24"] subnet_config_private_subnets = ["10.1.1.0/24", "10.1.3.0/24", "10.1.5.0/24"] 包含以下内容:

variables.tf

现在,只要我为SSM参数设置了正确的名称,我就可以在项目的任何地方使用variable "stack_name" { type = "string" default = "stack" } data "aws_ssm_parameter" "vpc_cidr_block" { name = "/terraform/${var.stack_name}/vpc_cidr_block" } data "aws_ssm_parameter" "subnet_config_public_subnets" { name = "/terraform/${var.stack_name}/subnet_config_public_subnets" } data "aws_ssm_parameter" "subnet_config_private_subnets" { name = "/terraform/${var.stack_name}/subnet_config_private_subnets" } locals { vpc_cidr_block = "${data.aws_ssm_parameter.vpc_cidr_block.value}" subnet_config_public_subnets = "${split(",", data.aws_ssm_parameter.subnet_config_public_subnets.value)}" subnet_config_private_subnets = "${split(",", data.aws_ssm_parameter.subnet_config_private_subnets.value)}" } 而不是${local.vpc_cidr_block}

只要我正在使用现有资源和现有状态文件,这将完全有效。也就是说,如果我使用第一个变量/ tfvars文件创建我的资源,然后切换到SSM数据源。但是,如果我从头开始使用SSM版本,则会从依赖于${var.vpc_cidr_block}value of 'count' cannot be computed的资源中得到${length(local.subnet_config_private_subnets)}错误。

我不知道为什么会发生这种情况,尤其是当值对现有资源运行${length(local.subnet_config_public_subnets)}refreshplan不会造成任何麻烦时。

非常感谢提供有关如何深入研究的帮助和/或建议。

0 个答案:

没有答案