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

CloudFormation转Terraform:CloudWatch告警AlarmActions与Dimensions配置

CloudWatch 告警配置从 CloudFormation 到 Terraform 的字段适配

Dimensions 字段转换

Terraform 的 aws_cloudwatch_metric_alarm 资源通过 dimensions 映射块实现与 CloudFormation 同名字段的等效能力。

  • CloudFormation 中定义的 FunctionName 维度,在 Terraform 中直接以键值对形式写入映射即可:
dimensions = {
  FunctionName = "${var.lbd_services_b_info_function_name}-${var.env_name}"
}
  • 原 CloudFormation 中通过 !Sub 拼接的「Lambda函数名+环境标识」值,在 Terraform 中直接通过字符串插值拼接已定义的输入变量即可,逻辑完全等价。

AlarmActions 字段转换

Terraform 资源中通过 alarm_actions 字符串列表参数实现与 CloudFormation AlarmActions 完全一致的触发逻辑:当告警进入 ALARM 状态时,会按列表顺序执行对应动作。

  • 原 CloudFormation 中通过 !ImportValue 跨栈导入的 SNS 主题 ARN,在 Terraform 中根据实际取数逻辑传入即可:
alarm_actions = [
  # 若从其他 Terraform 工作栈获取共享通知主题的 ARN,可直接引用远程状态输出值
  data.terraform_remote_state.base_resources.outputs.cw_notification_topic_arn
]

补全后完整等效配置

将上述两个字段补入已编写的 Terraform 配置后,完整的资源定义为:

resource "aws_cloudwatch_metric_alarm" "lbdServicesBInfoDurationAlarm" {
  alarm_name                = "lbdServicesBInfoDurationAlarm"
  comparison_operator       = "GreaterThanThreshold"
  evaluation_periods        = "1"
  metric_name               = "Duration"
  namespace                 = "AWS/Lambda"
  period                    = "300"
  statistic                 = "Sum"
  threshold                 = "30000"
  alarm_description         = "Alarm if elapsed wall clock time is too high"
  treat_missing_data        = "missing"
  insufficient_data_actions = []

  dimensions = {
    FunctionName = "${var.lbd_services_b_info_function_name}-${var.env_name}"
  }

  alarm_actions = [
    data.terraform_remote_state.base_resources.outputs.cw_notification_topic_arn
  ]
}

若环境中未通过 Terraform 远程状态管理跨栈资源,可将 alarm_actions 列表内的引用值替换为实际的 SNS 主题 ARN 字符串,效果与 CloudFormation 的 ImportValue 逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 03:36:07