Node.JS в AWS Lambda не помещает данные пользовательских метрик в Cloudwatch - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть следующий фрагмент кода

const AWS = require('aws-sdk');
exports.handler = async (event, context) => {
  // Set the region 
  console.log('line1');
  AWS.config.update({region: 'cn-north-1'});
  console.log('line2');

  // Create CloudWatch service object
  var cw = new AWS.CloudWatch({apiVersion: '2010-08-01'});
  console.log('line3');

  //Create parameters JSON for putMetricData
  var params = {
    MetricData: [
      {
        MetricName: 'PAGES_VISITED',
        Dimensions: [
          {
            Name: 'UNIQUE_PAGES',
            Value: 'URLS'
          },
        ],
        Unit: 'None',
        Value: 1.0
      },
    ],
    Namespace: 'SITE/TRAFFIC'
  };
  console.log('line4');

  if (cw){
    console.log('cw is not null');
  }else{
    console.log('cw is null');
  }

  cw.putMetricData(params, function(err, data) {
    console.log('callback function');
    if (err) {
      console.log("Error", err);
    } else {
      console.log("Success", JSON.stringify(data));
    }
  });
  console.log('line5');

  return "the result";
};

После того, как я проверил его в консоли Lambda.Я вижу, как создаются эти журналы Cloudwatch.Однако я не вижу, чтобы создавалась метрика Cloudwatch.

Я установил роль лямбды для политики Cloudwatch: PutMetricData

1 Ответ

0 голосов
/ 27 февраля 2019

Причина, по которой он не работает, заключается в том, что у вас нет обратного вызова, но вы объявили функцию async.

Вариант 1: удалите «async» в строке 2, и он будет работать.

exports.handler = (event,context) => {...

Вариант 2. Оставьте его асинхронным, добавьте обратный вызов в качестве параметра и вызовите обратный вызов в конце вашей лямбда-функции.Строка 2 нуждается в обратном вызове в качестве параметра:

exports.handler = async (event,context,callback) => {...

Затем добавьте это внизу:

callback(null, true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...