You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform import命令中this的用法解析(EKS访问条目场景)

关于Terraform导入EKS访问条目时this["xxx"]用法的解析

1. this到底是什么?

在Terraform模块里,如果你用for_each(基于映射/集合批量创建资源),通常会把资源块的名字设为this,比如:

resource "aws_eks_access_entry" "this" {
  for_each = local.access_entries
  # 其他配置,用each.value取映射里的参数
}

这里的this就是个资源集合的代号,用来指代通过for_each生成的所有aws_eks_access_entry实例的整体。当你要引用集合里的单个实例时,就得用this["键名"],这里的键就是local.access_entries映射里的key,比如iam_identity_center_admin_role。

2. 为什么两种导入命令结果不一样?

  • 失败的命令:terraform import module.base.module.eks.aws_eks_access_entry.iam_identity_center_admin_role mycluster:principal arn
    你没显式定义过名为iam_identity_center_admin_role的独立aws_eks_access_entry资源,Terraform状态里根本没这个标识,自然找不到对应的资源去导入,所以报错。

  • 成功的命令:terraform import 'module.base.module.eks.aws_eks_access_entry.this["iam_identity_center_admin_role"]' my-cluster:principal arn
    这个命令精准指向了for_each生成的资源集合里,对应local.access_entries中iam_identity_center_admin_role这个键的实例。Terraform能识别这种集合内的实例定位方式,所以能把外部创建的EKS访问条目正确导入到状态里。

3. 显式定义资源能导入的原因

当你单独写了aws_eks_access_entry.iam_identity_center_admin_role的资源块时,这个名称就成了Terraform状态里的独立资源标识,和批量创建的this集合是两个不同的资源组,所以直接用这个名称导入就能匹配上。

内容的提问来源于stack exchange,提问作者Jatin Mehrotra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 23:21:23