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

Terraform报错‘对象无属性’:AWS SES资源创建问题排查

问题原因及解决方案

我来帮你分析这个问题,这是Terraform 0.12.31版本中for_each使用的常见误区导致的:

你遇到的"object with no attributes"错误,核心原因是在aws_ses_domain_dkim资源中,你重复使用变量集合来定义for_each,而不是依赖已经创建的aws_ses_domain_identity资源实例。虽然变量值看起来完全一致,但Terraform 0.12在处理这种独立的for_each集合时,无法确保两个资源的实例键完全同步,进而无法正确解析目标资源的属性。

修复方案

修改aws_ses_domain_dkim的配置,让它的for_each直接引用aws_ses_domain_identity.ses_domain_per_tenant的实例集合,这样既保证了键的一致性,也明确了资源间的依赖关系:

resource "aws_ses_domain_dkim" "dkim_domain_per_tenant" {
  for_each = aws_ses_domain_identity.ses_domain_per_tenant
  domain   = each.value.domain
}

为什么这样有效?

当你用已创建的资源实例作为for_each源时,Terraform会自动继承第一个资源的实例键,并且明确知道每个DKIM资源必须依赖对应的域名身份资源。这样Terraform就能正确识别并访问each.value.domain属性,不会再出现找不到属性的错误。

至于你的aws_route53_record资源能正常运行,可能是Terraform对该资源的依赖解析逻辑更宽松,但这并不是最佳实践。统一使用已创建资源实例作为关联资源的for_each源,能避免这类同步问题,让配置更健壮。

内容的提问来源于stack exchange,提问作者João Amaro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 10:40:39