首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Terraform使用count循环变量和if语句来创建资源

Terraform使用count循环变量和if语句来创建资源
EN

Stack Overflow用户
提问于 2022-11-29 13:36:07
回答 1查看 15关注 0票数 0

我有一个只需要根据变量的值创建的资源(如果环境== "prod"),同样的资源也在s3上创建多个文件夹。获取另一个变量(列表)并遍历它以创建文件夹。

这些都是资源:

代码语言:javascript
运行
复制
variable "s3_folders" {
  type        = list
  description = "The list of S3 folders to create"
  default     = ["ron", "al", "ted"]
}

resource "aws_s3_object" "smcupdater-folder-new-out" {
    count  = "${length(var.s3_folders)}"
    count      = var.environment == "prod" ? 1 : 0
    bucket = var.bucketname-smc-updater-upgrades
    acl    = "private"
    key    = "UpdaterActions/${var.s3_folders[count.index]}/NewActionsFiles/out-smcupdater/"
    source = "/dev/null"
    server_side_encryption = "AES256"
}

但是我显然不能用两次计数,我也试着为每一个,但这也是不允许的,有其他方法做它,我错过了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-29 13:37:32

是的,您只需更新三元表达式即可:

代码语言:javascript
运行
复制
resource "aws_s3_object" "smcupdater-folder-new-out" {
    count  = var.environment == "prod" ? length(var.s3_folders) : 0
    bucket = var.bucketname-smc-updater-upgrades
    acl    = "private"
    key    = "UpdaterActions/${var.s3_folders[count.index]}/NewActionsFiles/out-smcupdater/"
    source = "/dev/null"
    server_side_encryption = "AES256"
}

这样,您将检查环境是否为prod,如果是,则将count元参数设置为变量s3_folders的长度。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74614952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档