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

如何通过AWS API获取指定区域内特定Transit Gateway的BytesOut指标?

解决方法

你的代码已经通过Dimensions中的TransitGateway维度指定了具体TGW ID来获取指标,要实现单个区域内特定Transit Gateway的BytesOut指标查询,只需做以下调整:

1. 参数化TGW ID,替换硬编码值

修改函数,新增tgwId参数来接收目标TGW的ID,替代原代码中硬编码的XXXXXXX:

async getCloudWatchMetrics({ 
  startTime, 
  endTime = new Date(),
  tgwId
}: { 
  startTime: Date; 
  endTime?: Date;
  tgwId: string;
}): Promise<MetricDataResults> {
    const params = {
      StartTime: startTime,
      EndTime: endTime,
      MetricDataQueries: [
        {
          Id: "bytesout0",
          Label: `BytesOut-${tgwId}`, // 标签带上TGW ID,便于区分结果
          MetricStat: {
            Metric: {
              Namespace: "AWS/TransitGateway",
              MetricName: "BytesOut",
              Dimensions: [
                {
                  Name: "TransitGateway",
                  Value: tgwId, // 使用传入的目标TGW ID
                },
              ],
            },
            Period: 300,
            Stat: "Average",
          },
        },
      ],
    };
    const res = await this.CloudWatch.getMetricData(params).promise();

    return res.MetricDataResults;
  }

2. 确保CloudWatch客户端绑定目标区域

由于你每个区域使用独立密钥,初始化CloudWatch客户端时必须指定目标区域,这样查询的才是该区域内的TGW指标:

import { CloudWatch } from 'aws-sdk';

// 初始化对应区域的CloudWatch客户端
const cloudWatchClient = new CloudWatch({
  region: '目标区域ID', // 例如 'us-west-2'
  credentials: { /* 该区域对应的密钥信息 */ }
});

// 调用函数时传入指定TGW ID
const metrics = await cloudWatchClient.getCloudWatchMetrics({
  startTime: new Date(Date.now() - 3600000), // 查询过去1小时的数据
  tgwId: 'tgw-12345678' // 目标Transit Gateway的ID
});

3. (可选)先获取区域内所有TGW列表

如果不确定目标区域内有哪些TGW,可通过EC2 API先获取该区域的TGW清单,再筛选出目标ID:

import { EC2 } from 'aws-sdk';

const ec2Client = new EC2({
  region: '目标区域ID',
  credentials: { /* 对应区域的密钥 */ }
});

// 获取当前区域内所有Transit Gateway
const tgwList = await ec2Client.describeTransitGateways().promise();
console.log('区域内的Transit Gateway清单:', tgwList.TransitGateways.map(tgw => ({
  ID: tgw.TransitGatewayId,
  名称: tgw.Tags?.find(tag => tag.Key === 'Name')?.Value || '无名称标签'
})));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 18:07:11