UNPKG

cdk-monitoring-constructs

Version:

[![NPM version](https://badge.fury.io/js/cdk-monitoring-constructs.svg)](https://badge.fury.io/js/cdk-monitoring-constructs) [![Maven Central](https://maven-badges.herokuapp.com/maven-central/io.github.cdklabs/cdkmonitoringconstructs/badge.svg)](https://m

71 lines 9.46 kB
"use strict"; var _a; Object.defineProperty(exports, "__esModule", { value: true }); exports.BitmapWidgetRenderingSupport = void 0; const JSII_RTTI_SYMBOL_1 = Symbol.for("jsii.rtti"); const path = require("path"); const aws_cdk_lib_1 = require("aws-cdk-lib"); const aws_iam_1 = require("aws-cdk-lib/aws-iam"); const aws_lambda_1 = require("aws-cdk-lib/aws-lambda"); const aws_logs_1 = require("aws-cdk-lib/aws-logs"); const constructs_1 = require("constructs"); const CustomWidget_1 = require("./CustomWidget"); /** * Support for rendering bitmap widgets on the server side. * It is a custom widget lambda with some additional roles and helper methods. */ class BitmapWidgetRenderingSupport extends constructs_1.Construct { constructor(scope, id) { super(scope, id); this.handler = new aws_lambda_1.Function(this, "Lambda", { code: aws_lambda_1.Code.fromAsset(path.join(__dirname, "..", "..", "..", "assets", "BitmapWidgetRenderingSupport")), description: "Custom Widget Render for Bitmap Widgets (cdk-monitoring-constructs)", handler: "index.handler", memorySize: 128, runtime: aws_lambda_1.determineLatestNodeRuntime(this), timeout: aws_cdk_lib_1.Duration.seconds(60), logGroup: new aws_logs_1.LogGroup(this, "LambdaLogs", { retention: aws_logs_1.RetentionDays.ONE_DAY, removalPolicy: aws_cdk_lib_1.RemovalPolicy.RETAIN_ON_UPDATE_OR_DELETE, }), }); this.handler.addToRolePolicy(new aws_iam_1.PolicyStatement({ actions: ["cloudwatch:GetMetricWidgetImage"], effect: aws_iam_1.Effect.ALLOW, resources: ["*"], })); aws_cdk_lib_1.Tags.of(this.handler).add("cw-custom-widget", "describe:readOnly"); } asBitmap(widget) { const props = this.getWidgetProperties(widget); // remove the title from the graph and remember it const { title, ...graph } = props; return new CustomWidget_1.CustomWidget({ // move the original title here title, width: widget.width, height: widget.height, // empty the inner title since we already have it on the whole widget handlerParams: { graph: { ...graph, title: " " } }, handler: this.handler, updateOnRefresh: true, updateOnResize: true, updateOnTimeRangeChange: true, }); } getWidgetProperties(widget) { const graphs = widget.toJson(); if (graphs.length != 1) { throw new Error("Number of objects in the widget definition must be exactly one."); } const graph = graphs[0]; if (!graph.properties) { throw new Error("No graph properties: " + graph); } return graph.properties; } } exports.BitmapWidgetRenderingSupport = BitmapWidgetRenderingSupport; _a = JSII_RTTI_SYMBOL_1; BitmapWidgetRenderingSupport[_a] = { fqn: "cdk-monitoring-constructs.BitmapWidgetRenderingSupport", version: "9.15.2" }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQml0bWFwV2lkZ2V0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiQml0bWFwV2lkZ2V0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsNkJBQTZCO0FBRTdCLDZDQUE0RDtBQUU1RCxpREFBOEQ7QUFDOUQsdURBS2dDO0FBQ2hDLG1EQUErRDtBQUMvRCwyQ0FBdUM7QUFFdkMsaURBQThDO0FBRTlDOzs7R0FHRztBQUNILE1BQWEsNEJBQTZCLFNBQVEsc0JBQVM7SUFHekQsWUFBWSxLQUFnQixFQUFFLEVBQVU7UUFDdEMsS0FBSyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsQ0FBQztRQUVqQixJQUFJLENBQUMsT0FBTyxHQUFHLElBQUkscUJBQVEsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFO1lBQzFDLElBQUksRUFBRSxpQkFBSSxDQUFDLFNBQVMsQ0FDbEIsSUFBSSxDQUFDLElBQUksQ0FDUCxTQUFTLEVBQ1QsSUFBSSxFQUNKLElBQUksRUFDSixJQUFJLEVBQ0osUUFBUSxFQUNSLDhCQUE4QixDQUMvQixDQUNGO1lBQ0QsV0FBVyxFQUNULHFFQUFxRTtZQUN2RSxPQUFPLEVBQUUsZUFBZTtZQUN4QixVQUFVLEVBQUUsR0FBRztZQUNmLE9BQU8sRUFBRSx1Q0FBMEIsQ0FBQyxJQUFJLENBQUM7WUFDekMsT0FBTyxFQUFFLHNCQUFRLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztZQUM3QixRQUFRLEVBQUUsSUFBSSxtQkFBUSxDQUFDLElBQUksRUFBRSxZQUFZLEVBQUU7Z0JBQ3pDLFNBQVMsRUFBRSx3QkFBYSxDQUFDLE9BQU87Z0JBQ2hDLGFBQWEsRUFBRSwyQkFBYSxDQUFDLDBCQUEwQjthQUN4RCxDQUFDO1NBQ0gsQ0FBQyxDQUFDO1FBRUgsSUFBSSxDQUFDLE9BQU8sQ0FBQyxlQUFlLENBQzFCLElBQUkseUJBQWUsQ0FBQztZQUNsQixPQUFPLEVBQUUsQ0FBQyxpQ0FBaUMsQ0FBQztZQUM1QyxNQUFNLEVBQUUsZ0JBQU0sQ0FBQyxLQUFLO1lBQ3BCLFNBQVMsRUFBRSxDQUFDLEdBQUcsQ0FBQztTQUNqQixDQUFDLENBQ0gsQ0FBQztRQUVGLGtCQUFJLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxHQUFHLENBQUMsa0JBQWtCLEVBQUUsbUJBQW1CLENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBRUQsUUFBUSxDQUFDLE1BQWU7UUFDdEIsTUFBTSxLQUFLLEdBQUcsSUFBSSxDQUFDLG1CQUFtQixDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQy9DLGtEQUFrRDtRQUNsRCxNQUFNLEVBQUUsS0FBSyxFQUFFLEdBQUcsS0FBSyxFQUFFLEdBQUcsS0FBSyxDQUFDO1FBRWxDLE9BQU8sSUFBSSwyQkFBWSxDQUFDO1lBQ3RCLCtCQUErQjtZQUMvQixLQUFLO1lBQ0wsS0FBSyxFQUFFLE1BQU0sQ0FBQyxLQUFLO1lBQ25CLE1BQU0sRUFBRSxNQUFNLENBQUMsTUFBTTtZQUNyQixxRUFBcUU7WUFDckUsYUFBYSxFQUFFLEVBQUUsS0FBSyxFQUFFLEVBQUUsR0FBRyxLQUFLLEVBQUUsS0FBSyxFQUFFLEdBQUcsRUFBRSxFQUFFO1lBQ2xELE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTztZQUNyQixlQUFlLEVBQUUsSUFBSTtZQUNyQixjQUFjLEVBQUUsSUFBSTtZQUNwQix1QkFBdUIsRUFBRSxJQUFJO1NBQzlCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFUyxtQkFBbUIsQ0FBQyxNQUFlO1FBQzNDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxNQUFNLEVBQUUsQ0FBQztRQUMvQixJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksQ0FBQyxFQUFFO1lBQ3RCLE1BQU0sSUFBSSxLQUFLLENBQ2IsaUVBQWlFLENBQ2xFLENBQUM7U0FDSDtRQUNELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUN4QixJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsRUFBRTtZQUNyQixNQUFNLElBQUksS0FBSyxDQUFDLHVCQUF1QixHQUFHLEtBQUssQ0FBQyxDQUFDO1NBQ2xEO1FBQ0QsT0FBTyxLQUFLLENBQUMsVUFBVSxDQUFDO0lBQzFCLENBQUM7O0FBdkVILG9FQXdFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIHBhdGggZnJvbSBcInBhdGhcIjtcblxuaW1wb3J0IHsgRHVyYXRpb24sIFJlbW92YWxQb2xpY3ksIFRhZ3MgfSBmcm9tIFwiYXdzLWNkay1saWJcIjtcbmltcG9ydCB7IElXaWRnZXQgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWNsb3Vkd2F0Y2hcIjtcbmltcG9ydCB7IEVmZmVjdCwgUG9saWN5U3RhdGVtZW50IH0gZnJvbSBcImF3cy1jZGstbGliL2F3cy1pYW1cIjtcbmltcG9ydCB7XG4gIENvZGUsXG4gIGRldGVybWluZUxhdGVzdE5vZGVSdW50aW1lLFxuICBGdW5jdGlvbixcbiAgSUZ1bmN0aW9uLFxufSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxhbWJkYVwiO1xuaW1wb3J0IHsgTG9nR3JvdXAsIFJldGVudGlvbkRheXMgfSBmcm9tIFwiYXdzLWNkay1saWIvYXdzLWxvZ3NcIjtcbmltcG9ydCB7IENvbnN0cnVjdCB9IGZyb20gXCJjb25zdHJ1Y3RzXCI7XG5cbmltcG9ydCB7IEN1c3RvbVdpZGdldCB9IGZyb20gXCIuL0N1c3RvbVdpZGdldFwiO1xuXG4vKipcbiAqIFN1cHBvcnQgZm9yIHJlbmRlcmluZyBiaXRtYXAgd2lkZ2V0cyBvbiB0aGUgc2VydmVyIHNpZGUuXG4gKiBJdCBpcyBhIGN1c3RvbSB3aWRnZXQgbGFtYmRhIHdpdGggc29tZSBhZGRpdGlvbmFsIHJvbGVzIGFuZCBoZWxwZXIgbWV0aG9kcy5cbiAqL1xuZXhwb3J0IGNsYXNzIEJpdG1hcFdpZGdldFJlbmRlcmluZ1N1cHBvcnQgZXh0ZW5kcyBDb25zdHJ1Y3Qge1xuICByZWFkb25seSBoYW5kbGVyOiBJRnVuY3Rpb247XG5cbiAgY29uc3RydWN0b3Ioc2NvcGU6IENvbnN0cnVjdCwgaWQ6IHN0cmluZykge1xuICAgIHN1cGVyKHNjb3BlLCBpZCk7XG5cbiAgICB0aGlzLmhhbmRsZXIgPSBuZXcgRnVuY3Rpb24odGhpcywgXCJMYW1iZGFcIiwge1xuICAgICAgY29kZTogQ29kZS5mcm9tQXNzZXQoXG4gICAgICAgIHBhdGguam9pbihcbiAgICAgICAgICBfX2Rpcm5hbWUsXG4gICAgICAgICAgXCIuLlwiLFxuICAgICAgICAgIFwiLi5cIixcbiAgICAgICAgICBcIi4uXCIsXG4gICAgICAgICAgXCJhc3NldHNcIixcbiAgICAgICAgICBcIkJpdG1hcFdpZGdldFJlbmRlcmluZ1N1cHBvcnRcIixcbiAgICAgICAgKSxcbiAgICAgICksXG4gICAgICBkZXNjcmlwdGlvbjpcbiAgICAgICAgXCJDdXN0b20gV2lkZ2V0IFJlbmRlciBmb3IgQml0bWFwIFdpZGdldHMgKGNkay1tb25pdG9yaW5nLWNvbnN0cnVjdHMpXCIsXG4gICAgICBoYW5kbGVyOiBcImluZGV4LmhhbmRsZXJcIixcbiAgICAgIG1lbW9yeVNpemU6IDEyOCxcbiAgICAgIHJ1bnRpbWU6IGRldGVybWluZUxhdGVzdE5vZGVSdW50aW1lKHRoaXMpLFxuICAgICAgdGltZW91dDogRHVyYXRpb24uc2Vjb25kcyg2MCksXG4gICAgICBsb2dHcm91cDogbmV3IExvZ0dyb3VwKHRoaXMsIFwiTGFtYmRhTG9nc1wiLCB7XG4gICAgICAgIHJldGVudGlvbjogUmV0ZW50aW9uRGF5cy5PTkVfREFZLFxuICAgICAgICByZW1vdmFsUG9saWN5OiBSZW1vdmFsUG9saWN5LlJFVEFJTl9PTl9VUERBVEVfT1JfREVMRVRFLFxuICAgICAgfSksXG4gICAgfSk7XG5cbiAgICB0aGlzLmhhbmRsZXIuYWRkVG9Sb2xlUG9saWN5KFxuICAgICAgbmV3IFBvbGljeVN0YXRlbWVudCh7XG4gICAgICAgIGFjdGlvbnM6IFtcImNsb3Vkd2F0Y2g6R2V0TWV0cmljV2lkZ2V0SW1hZ2VcIl0sXG4gICAgICAgIGVmZmVjdDogRWZmZWN0LkFMTE9XLFxuICAgICAgICByZXNvdXJjZXM6IFtcIipcIl0sXG4gICAgICB9KSxcbiAgICApO1xuXG4gICAgVGFncy5vZih0aGlzLmhhbmRsZXIpLmFkZChcImN3LWN1c3RvbS13aWRnZXRcIiwgXCJkZXNjcmliZTpyZWFkT25seVwiKTtcbiAgfVxuXG4gIGFzQml0bWFwKHdpZGdldDogSVdpZGdldCkge1xuICAgIGNvbnN0IHByb3BzID0gdGhpcy5nZXRXaWRnZXRQcm9wZXJ0aWVzKHdpZGdldCk7XG4gICAgLy8gcmVtb3ZlIHRoZSB0aXRsZSBmcm9tIHRoZSBncmFwaCBhbmQgcmVtZW1iZXIgaXRcbiAgICBjb25zdCB7IHRpdGxlLCAuLi5ncmFwaCB9ID0gcHJvcHM7XG5cbiAgICByZXR1cm4gbmV3IEN1c3RvbVdpZGdldCh7XG4gICAgICAvLyBtb3ZlIHRoZSBvcmlnaW5hbCB0aXRsZSBoZXJlXG4gICAgICB0aXRsZSxcbiAgICAgIHdpZHRoOiB3aWRnZXQud2lkdGgsXG4gICAgICBoZWlnaHQ6IHdpZGdldC5oZWlnaHQsXG4gICAgICAvLyBlbXB0eSB0aGUgaW5uZXIgdGl0bGUgc2luY2Ugd2UgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSB3aG9sZSB3aWRnZXRcbiAgICAgIGhhbmRsZXJQYXJhbXM6IHsgZ3JhcGg6IHsgLi4uZ3JhcGgsIHRpdGxlOiBcIiBcIiB9IH0sXG4gICAgICBoYW5kbGVyOiB0aGlzLmhhbmRsZXIsXG4gICAgICB1cGRhdGVPblJlZnJlc2g6IHRydWUsXG4gICAgICB1cGRhdGVPblJlc2l6ZTogdHJ1ZSxcbiAgICAgIHVwZGF0ZU9uVGltZVJhbmdlQ2hhbmdlOiB0cnVlLFxuICAgIH0pO1xuICB9XG5cbiAgcHJvdGVjdGVkIGdldFdpZGdldFByb3BlcnRpZXMod2lkZ2V0OiBJV2lkZ2V0KTogYW55IHtcbiAgICBjb25zdCBncmFwaHMgPSB3aWRnZXQudG9Kc29uKCk7XG4gICAgaWYgKGdyYXBocy5sZW5ndGggIT0gMSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBcIk51bWJlciBvZiBvYmplY3RzIGluIHRoZSB3aWRnZXQgZGVmaW5pdGlvbiBtdXN0IGJlIGV4YWN0bHkgb25lLlwiLFxuICAgICAgKTtcbiAgICB9XG4gICAgY29uc3QgZ3JhcGggPSBncmFwaHNbMF07XG4gICAgaWYgKCFncmFwaC5wcm9wZXJ0aWVzKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXCJObyBncmFwaCBwcm9wZXJ0aWVzOiBcIiArIGdyYXBoKTtcbiAgICB9XG4gICAgcmV0dXJuIGdyYXBoLnByb3BlcnRpZXM7XG4gIH1cbn1cbiJdfQ==