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

如何在CloudFormation的CloudWatch Dashboard中动态引用AWS HTTP API(v2)的ID

解决Serverless框架中动态引用HTTP API ID到CloudWatch Dashboard的问题

问题场景

使用Serverless框架构建AWS HTTP API(API Gateway v2)时,需通过CloudFormation模板创建CloudWatch Dashboard展示该API的监控指标。但HTTP API的CloudWatch指标仅支持通过API ID查询,而API ID在每次部署时可能变更,无法硬编码到模板中,需要动态获取并传递这个ID。

解决方案

Serverless框架在创建HTTP API时,会自动生成名为HttpApi的CloudFormation资源。可以通过CloudFormation的字符串替换函数Fn::Sub动态引用该资源的ID,实现部署时自动注入当前API的ID,无需硬编码。

修改后的完整代码示例

provider:
  httpApi:
    metrics: true

resources:
  Resources:
    MyDashboard:
      Type: AWS::CloudWatch::Dashboard
      Properties: 
        DashboardName: MyDashboard
        DashboardBody: !Sub |
          {
            "widgets": [
              {
                "type": "metric",
                "properties": {
                  "metrics": [
                    [
                      "AWS/ApiGateway",
                      "4xx",
                      "Resource",
                      "/{proxy+}",
                      "Stage",
                      "$default",
                      "Method",
                      "ANY",
                      "ApiId",
                      "${HttpApi}",
                      {
                        "yAxis": "left"
                      }
                    ]
                  ],
                  "view": "bar",
                  "stacked": false,
                  "region": "us-west-2",
                  "period": 300,
                  "stat": "Sum",
                  "setPeriodToTimeRange": true
                }
              }
            ]
          }

关键说明

  • !Sub函数会自动将字符串中的${HttpApi}替换为Serverless创建的HTTP API的实际ID。
  • 使用|符号保留JSON字符串的格式,避免因换行或空格导致语法错误。
  • 确保provider.httpApi.metrics设为true,保证HTTP API自动向CloudWatch推送指标数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:06:25