Как мне указать аргументы getMetricData в AWS Lambda, чтобы получить CloudFront metri c для CloudWatch - PullRequest
0 голосов
/ 04 марта 2020

Я пытаюсь получить количество запросов от моего экземпляра Cloudfront. В настоящее время я использую функцию getMetricData, предоставленную aws-sdk в Javascripts. Тем не менее, я всегда получаю ответ без каких-либо значений, когда я использую лямбду для запроса данных metri c, тогда как я ясно вижу, что есть запросы, когда я проверяю страницу Metri c CloudWatch в браузере.

Я уже проверяю Документ API CloudWatch . Тем не менее, я не на 100% уверен в аргументах, которые мне нужны для получения «запросов» данных metri c. Вот код, похожий на то, что я сделал.

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 запросов. Однако массив возвращаемых значений просто пуст.

Заранее спасибо

1 Ответ

0 голосов
/ 04 марта 2020

Хорошо, я просто забываю указать регион в поле измерения

здесь фиксированный

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;
}
...