telemetry-events-aws-dynamodb v2.1.2
telemetry-events-aws-dynamodb
Stability: 1 - Experimental
telemetry-events instrumentation for AWS SDK DynamoDB module.
Contributors
Contents
Installation
npm install telemetry-events-aws-dynamodbUsage
To run the below example run:
npm run readme"use strict";
const AWS = require("aws-sdk");
const events = require("events");
const LogTelemetryEvents = require("telemetry-events-log");
const pkg = require("../package.json");
const QuantifyTelemetryEvents = require("telemetry-events-quantify");
const TelemetryEvents = require("telemetry-events");
const instrument = require("../index.js");
const emitter = new events.EventEmitter();
const telemetryEmitter = new TelemetryEvents(
{
emitter: emitter,
package: pkg
}
);
const logs = new LogTelemetryEvents(
{
telemetry: telemetryEmitter
}
);
const metrics = new QuantifyTelemetryEvents(
{
telemetry: telemetryEmitter
}
);
let dynamodb = new AWS.DynamoDB(
{
region: "us-east-1"
});
dynamodb = instrument(
dynamodb,
AWS.VERSION,
[
"getItem", "putItem", "deleteItem"
],
{
logs,
metrics
}
);
let documentClient = new AWS.DynamoDB.DocumentClient(
{
region: "us-east-1"
}
);
documentClient = instrument.DocumentClient(
documentClient,
AWS.VERSION,
[
"createSet", "get"
],
{
logs,
metrics
}
);
console.log(typeof dynamodb.instrumentedGetItem);
// function
console.log(typeof dynamodb.instrumentedPutItem);
// function
console.log(typeof dynamodb.instrumentedDeleteItem);
// function
console.log(typeof documentClient.instrumentedCreateSet);
// function
console.log(typeof documentClient.instrumentedGet);
// functionTests
npm testDocumentation
instrument(dynamodb, version, methods, telemetry)
dynamodb: Object Already created AWS.DynamoDB instance.version: String AWS module version (useAWS'sVERSIONparameter).methods: Array Array of methods to instrument.telemetry: Object Telemetry helpers.logs: Objecttelemetry-events-loginstance.metrics: Objecttelemetry-events-quantifyinstance.
- Return: Object AWS.DynamoDB instance with additional instrumented methods.
For every specified method in methods creates an instrumented variant on the passed in dynamodb instance. For example, if methods = ["getItem"], the returned dynamodb object will have a dynamodb.instrumentedGetItem method.
instrument.DocumentClient(client, version, methods, telemetry)
client: Object Already created AWS.DynamoDB.DocumentClient instance.version: String AWS module version (useAWS'sVERSIONparameter).methods: Array Array of methods to instrument.telemetry: Object Telemetry helpers.logs: Objecttelemetry-events-loginstance.metrics: Objecttelemetry-events-quantifyinstance.
- Return: Object AWS.DynamoDB.DocumentClient instance with additional instrumented methods.
For every specified method in methods creates an instrumented variant on the passed in client instance. For example, if methods = ["get"], the returned client object will have a client.instrumentedGet method.
instrumentedMethod(params, context, callback)
params: Object Parameters to call the instrumented method with.contextObject Call context.metadata: Object (Default:undefined) Metadata to include in events.parentSpan: Object (Default:undefined)telemetry-events-tracingparent span to create a child tracing span from.paramsToLog: Object (Default:params) Parameters to log instead ofparams.
callback: Functionfunction (error, data, context){}Callback that will be called with the results of the instrumented method.error: Error Error from instrumented method result, if any.data: Object Data form instrumented method result, if any.context: Object Result context containing target (instrumented method) metadata.targetMetadata: Object Target (instrumented method) metadata.
This is an example of an instrumented method signature (actual method names would be instrumentedGetItem, instrumentedPutItem, etc.).
Releases
We follow semantic versioning policy (see: semver.org):
Given a version number MAJOR.MINOR.PATCH, increment the:
MAJOR version when you make incompatible API changes, MINOR version when you add functionality in a backwards-compatible manner, and PATCH version when you make backwards-compatible bug fixes.
