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

Terraform忽略aws_dynamodb_table_item的AWS副本属性变更失败

解决Terraform忽略DynamoDB副本属性变更的问题

问题描述

使用以下Terraform代码创建DynamoDB表项:

resource "aws_dynamodb_table_item" "docroot" {
  count = length(XXX)
  table_name = XXXX
  hash_key   = XXXXX

  item = <<EOF
{
  "XXXX":    { "S": "XXXX${count.index}" },
  "XXXX": { "S": "XXXX${count.index}" },
  "XXXX":  { "S": "XXXX${count.index}" }
}
EOF
}

代码可正常运行,但每次执行terraform plan或terraform apply时,Terraform都会检测到AWS自动注入的副本属性变更:

# aws_dynamodb_table_item.docroot[0] will be updated in-place
  ~ resource "aws_dynamodb_table_item" "docroot" {
        
      ~ item       = jsonencode(
          ~ {
              - aws:rep:deleting     = {
                  - BOOL = false
                } -> null
              - aws:rep:updateregion = {
                  - S = "us-west-2"
                } -> null
              - aws:rep:updatetime   = {
                  - N = "1682511411.190001"
                } -> null
                # (3 unchanged elements hidden)
            }
        )
        # (2 unchanged attributes hidden)
    }

尝试添加生命周期规则忽略这些属性时,出现语法错误:

lifecycle {
    ignore_changes=[
      "item.aws:rep:deleting",
    ]
  }

报错信息:

│ Error: Invalid character
│
│   on xxx.tf line 21, in resource "aws_dynamodb_table_item" "docroot":
│   21:       "item.aws:rep:deleting",
│
│ Expected an attribute access or an index operator.

环境版本:

  • Terraform v1.1.6
  • provider registry.terraform.io/hashicorp/aws v4.64.0

错误原因

属性键中的冒号(:)属于Terraform语法的特殊字符,使用点语法(item.aws:rep:deleting)会被Terraform误解析为属性访问分隔符,导致语法错误。

解决方案

使用字符串索引的方式指定包含特殊字符的属性键,修改后的完整配置如下:

resource "aws_dynamodb_table_item" "docroot" {
  count = length(XXX)
  table_name = XXXX
  hash_key   = XXXXX

  item = <<EOF
{
  "XXXX":    { "S": "XXXX${count.index}" },
  "XXXX": { "S": "XXXX${count.index}" },
  "XXXX":  { "S": "XXXX${count.index}" }
}
EOF

  lifecycle {
    ignore_changes = [
      item["aws:rep:deleting"],
      item["aws:rep:updateregion"],
      item["aws:rep:updatetime"],
    ]
  }
}

验证

配置完成后,执行terraform plan,Terraform将不再检测这三个AWS副本属性的变更,也不会提示需要更新表项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 14:30:29