第08天:Terraform 中的元参数

发布: (2025年12月2日 GMT+8 14:04)
2 min read
原文: Dev.to

Source: Dev.to

元参数

Terraform 提供了五个元参数来控制资源行为:

  • depends_on
  • count
  • for_each
  • provider
  • lifecycle

count

count 用于遍历一个值列表。

// variables.tf
variable "bucket_count_list" {
  type    = list(string)
  default = [
    "bhaskaratejabulusu-bucket-day-08-list-1",
    "bhaskaratejabulusu-bucket-day-08-list-2"
  ]
}

// main.tf
resource "aws_s3_bucket" "bucket1" {
  count  = length(var.bucket_count_list)
  bucket = var.bucket_count_list[count.index] // iterates from 0 to count‑1
}

for_each

for_each 遍历值或键‑值对。它适用于映射(map)和集合(set);变量的类型必须是 mapset

集合示例

// variables.tf
variable "bucket_count_set" {
  type    = set(string)
  default = [
    "bhaskaratejabulusu-bucket-day-08-set-1",
    "bhaskaratejabulusu-bucket-day-08-set-2"
  ]
}

// main.tf
resource "aws_s3_bucket" "bucket2" {
  for_each = var.bucket_count_set
  bucket   = each.value // iterates over the set
}

映射示例

// variables.tf
variable "bucket_count_map" {
  type = map(string)
  default = {
    bucket1 = "bhaskaratejabulusu-bucket-day-08-map-1",
    bucket2 = "bhaskaratejabulusu-bucket-day-08-map-2"
  }
}

// main.tf
resource "aws_s3_bucket" "bucket3" {
  for_each = var.bucket_count_map
  bucket   = each.value
}

depends_on

depends_on 明确声明资源之间的依赖关系,确保 Terraform 按正确的顺序创建它们。

// main.tf
resource "aws_s3_bucket" "bucket1" {
  count  = length(var.bucket_count_list)
  bucket = var.bucket_count_list[count.index]
}

resource "aws_s3_bucket" "bucket2" {
  for_each = var.bucket_count_set
  bucket   = each.value

  depends_on = [aws_s3_bucket.bucket1]
}

在此示例中,bucket2 依赖于 bucket1;Terraform 会在创建 bucket2 之前等待 bucket1 完成创建。

Back to Blog

相关文章

阅读更多 »

切换账户

@blink_c5eb0afe3975https://dev.to/blink_c5eb0afe3975 正如大家所知,我正重新开始记录我的进展,我认为最好在一个不同的…

Strands 代理 + Agent Core AWS

入门指南:Amazon Bedrock AgentCore 目录 - 前置要求(requisitos‑previos) - 工具包安装(instalación‑del‑toolkit) - 创建…