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

如何在CloudFormation中处理Lambda函数名中的随机字符串?

解决CloudFormation仪表板中Lambda指标通配符无效的问题

问题原因

CloudWatch的指标维度(此处为FunctionName)不支持通配符匹配,所以你使用SC-accountNumber-*-FunctionName这种带通配符的维度值配置不会生效,必须指定精确的函数名称才能匹配到指标。

解决方案

1. 直接引用CloudFormation栈内Lambda的物理名称

如果你的Lambda函数和仪表板在同一个CloudFormation栈中创建,直接通过资源引用获取函数的物理名称,完全避免手动填写或担心随机串变化:

# 示例:CloudFormation仪表板指标配置
MyDashboard:
  Type: AWS::CloudWatch::Dashboard
  Properties:
    DashboardBody: !Sub |
      {
        "widgets": [
          {
            "type": "metric",
            "x": 0,
            "y": 0,
            "width": 12,
            "height": 6,
            "properties": {
              "metrics": [
                [ "AWS/Lambda", "Invocations", "FunctionName", "${MyLambdaFunction}" ]
              ],
              "period": 300,
              "stat": "Sum"
            }
          }
        ]
      }
# 栈内的Lambda函数定义
MyLambdaFunction:
  Type: AWS::Lambda::Function
  Properties:
    # 函数的具体配置(代码、角色等)

这里通过!Sub结合Lambda资源的逻辑IDMyLambdaFunction,CloudFormation会自动替换为函数部署后的真实物理名称,无论新版本的随机串如何变化都能正确匹配指标。

2. 用标签聚合Lambda指标

给Lambda函数添加统一标签,然后在CloudWatch仪表板中通过标签过滤指标,无需依赖函数名称:

  • 第一步:为Lambda函数添加自定义标签
MyLambdaFunction:
  Type: AWS::Lambda::Function
  Properties:
    # 其他函数配置...
    Tags:
      - Key: FunctionAlias
        Value: MyApiName
  • 第二步:在仪表板中通过标签匹配指标
DashboardBody: !Sub |
  {
    "widgets": [
      {
        "type": "metric",
        "properties": {
          "metrics": [
            [ "AWS/Lambda", "Invocations", { "tags": { "FunctionAlias": "MyApiName" } } ]
          ],
          "period": 300,
          "stat": "Sum",
          "label": "MyApi相关Lambda调用量"
        }
      }
    ]
  }

这种方式适合需要聚合多个同类型Lambda函数指标的场景,只要标签一致,不管函数名如何变更都能正常采集数据。

3. 使用CloudWatch指标数学表达式(SEARCH函数)

如果必须通过名称模式匹配,可以用CloudWatch的SEARCH函数来匹配符合命名规则的Lambda函数指标:

DashboardBody: !Sub |
  {
    "widgets": [
      {
        "type": "metric",
        "properties": {
          "metrics": [
            [ { "expression": "SEARCH('{AWS/Lambda,FunctionName} SC-${AWS::AccountId}-*-MyApiName', 'Sum', 300)", "label": "匹配Lambda总调用量" } ]
          ],
          "period": 300
        }
      }
    ]
  }

注意:SEARCH函数有使用限制(比如不能结合部分统计类型),且匹配性能依赖于指标数量,适合小规模场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 18:47:18