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

Terraform创建CloudFormation AnomalySubscription报插值错误如何解决

问题原因

你在CloudFormation模板字符串内直接插值了each.value.NotificationsEmail这个列表类型的复杂结构,Terraform无法自动将嵌套的列表/对象结构转换为符合YAML语法的字符串,因此触发了「需要字符串类型」的插值错误。

解决方案

使用Terraform内置的jsonencode函数对复杂结构进行编码,由于YAML完全兼容JSON语法,编码后的内容可以被CloudFormation正常识别,无需额外调整结构。

修改后的resource.tf配置如下:

resource "aws_cloudformation_stack" "anomaly_detection" {
  name = "${var.StackName}${each.value.Key}"

  for_each = { for i in local.anomalies : "${i.Key}" => i }

  template_body = <<EOF
AWSTemplateFormatVersion: "2010-09-09"
Description: Cost Anomaly Detection
Resources:
  CostExplorer:
    Type: AWS::CE::AnomalySubscription
    Properties:
      Frequency: DAILY
      MonitorArnList: [!Ref CostExplorerServiceAnomalyMonitor]
      Subscribers: ${jsonencode(each.value.NotificationsEmail)}
      SubscriptionName: DailyAnomalySubscription
      Threshold: ${jsonencode(each.value.Threshold)}
EOF
}

这里同时对Threshold也使用了jsonencode,是为了避免数值类型被自动转为字符串导致CloudFormation识别类型错误的额外问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:00