How to publish FROM an AWS lambda to a cloud watch metric in Node.js

if you want to avoid the latency impact that introducing a sync cloudwatch call would introduce, you could use Metric Filters on the asynchronous logs that are being published.

Ref: https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/MonitoringLogData.html


Yes, that is possible:

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

const metric = {
  MetricData: [ /* required */
    {
      MetricName: 'YOUR_METRIC_NAME', /* required */
      Dimensions: [
        {
          Name: 'URL', /* required */
          Value: url /* required */
        },
      /* more items */
      ],
      Timestamp: new Date(),
      Unit: 'Count',
      Value: SOME_VALUE
    },
    /* more items */
  ],
  Namespace: 'YOUR_METRIC_NAMESPACE' /* required */
};

const cloudwatch = new AWS.CloudWatch({region: 'eu-west-1'});
cloudwatch.putMetricData(metric, (err, data) => {


if (err) {
    console.log(err, err.stack); // an error occurred
  } else {
    console.log(data);           // successful response
}
});

First your create the data that you want to store as a metric, the you use the CloudWatch API to send it to CloudWatch. (Of course the function must have permission to write to CloudWatch.)

More documentation is here: https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/CloudWatch.html