【问题标题】:How should I specify the arguments of getMetricData in AWS Lambda to get CloudFront metric for CloudWatch我应该如何在 AWS Lambda 中指定 getMetricData 的参数以获取 CloudWatch 的 CloudFront 指标
【发布时间】:2020-03-04 22:00:38
【问题描述】:

我正在尝试从我的 Cloudfront 实例获取请求数。目前,我在Javascripts中使用aws-sdk提供的函数getMetricData。但是,当我使用 lambda 查询指标数据时,总是得到没有任何值的响应,而当我在浏览器上查看 CloudWatch 的指标页面时,我可以清楚地看到有请求。

我已经检查了CloudWatch API document。但是,我并不是 100% 清楚获取“请求”度量数据所需的论据。这是一些类似于我所做的代码。

const AWS = require('aws-sdk');

exports.handler = async(event) => {
    // TODO implement
    let endDate = "2020-03-04T13:14:18.546Z";
    let startDate = "2020-02-28T13:14:18.546Z";
    let cloudwatch = new AWS.CloudWatch();
    var params = {
        "StartTime": startDate,
        "EndTime": endDate,
        "MetricDataQueries": [{
            "Id": "m1",
            "MetricStat": {
                "Metric": {
                    "Namespace": "AWS/CloudFront",
                    "MetricName": "Requests",
                    "Dimensions": [{
                        "Name": "DistributionId",
                        "Value": "EG12345678" <-- I made this up
                    }]
                },
                "Period": 60,
                "Stat": "Sum",
                "Unit": "Count"
            }
        }]
    };
    const response = await cloudwatch.getMetricData(params).promise();
    return response
}

我确信在开始日期和结束数据之间有超过 100 个请求。但是,返回值数组只是空的。

提前致谢

【问题讨论】:

    标签: amazon-web-services aws-sdk-js


    【解决方案1】:

    好的,我只是忘记在维度字段中指定区域

    这里是固定的

    const AWS = require('aws-sdk');
    
    exports.checkHealth = async(event) => {
        // TODO implement
        let endDate = new Date;
        let startDate = new Date(endDate - 20 * 60 * 1000);
        let cloudwatch = new AWS.CloudWatch();
        //let startDate = "2020-02-28T13:00:00.000Z";
        //let endDate = "2020-02-28T15:30:00.000Z";
        var params = {
            "StartTime": startDate,
            "EndTime": endDate,
            "MetricDataQueries": [{
                "Id": "m1",
                "MetricStat": {
                    "Metric": {
                        "Namespace": "AWS/CloudFront",
                        "MetricName": "TotalErrorRate",
                        "Dimensions": [{
                            "Name": "DistributionId",
                            "Value": "EG12345678"
                        },
                        {
                            "Name": "Region", // <------ this fix things
                            "Value": "Global" // <------ this fix things
                        }]
                    },
                    "Period":60,
                    "Stat": "Average"
                }
            }]
        };
        const response = await cloudwatch.getMetricData(params).promise();
        return response;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-15
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2014-10-14
      • 2021-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多