Как добавить виджет результатов запроса на панель мониторинга Cloudwatch с помощью aws -cdk - PullRequest
1 голос
/ 26 марта 2020

Как видно из названия, как мне это сделать? Я хочу преобразовать свой dashobard Cloudwatch (который в основном содержит виджет результатов запроса) в cdk. В библиотеке aws -cloudwatch в настоящее время есть только AlarmWidget, GraphWidget, SingleValueWidget и TextWidget.

Если нет прямого способа сделать это, есть ли хоть какой-то взлом?

Спасибо

1 Ответ

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

Если этот тип виджета не поддерживается, вы можете использовать конструкцию CfnDashboard вместо Dashboard. С помощью этой конструкции вы можете установить необработанное тело панели мониторинга как json.

. Если вы предпочитаете более высокий уровень добавления виджетов, вы можете реализовать интерфейс IWidget самостоятельно. Вы не указали, какой язык вы используете, вот пример в python:

from aws_cdk import (
    aws_cloudwatch as cw,
    core
)
import jsii
import json

@jsii.implements(cw.IWidget)
class QueryResultWidget:
    def __init__(self, properties, width=24, height=6):
        self.widget =  {
            "type": "log",
            "width": width,
            "height": height,
            "properties": properties
        }

    def position(self, x, y):
        self.widget["x"] = x
        self.widget["y"] = y

    def to_json(self):
        return [self.widget]

class DashboardStack(core.Stack):
    def __init__(self, app: core.App, id: str, **kwargs) -> None:
        super().__init__(app, id, **kwargs)

        dashboard = cw.Dashboard(self, "Dashboard")

        dashboard.add_widgets(QueryResultWidget({
            "query": "SOURCE '/aws/lambda/some_lambda' | fields @timestamp, @message\n| sort @timestamp desc\n| limit 20",
            "region": "eu-west-1",
            "stacked": False,
            "view": "table"
        }))

app = core.App()
DashboardStack(app, "DashboardStack")
app.synth()
...