nomadblacky / cdk-datadog-resources Goto Github PK
View Code? Open in Web Editor NEWManage Datadog Monitor etc. with AWS CDK.
License: Apache License 2.0
Manage Datadog Monitor etc. with AWS CDK.
License: Apache License 2.0
DatadogCredentials should not be mandatory in monitors, and possibly elsewhere.
CloudFormation extensions can define a JSON block that is "injected" into stacks, and that can refer to the secrets. The Datadog configuration schema does indeed do this:
eg, once this is defined in the AWS console, then credentials are not needed to be in the stack.
{
"DatadogCredentials": {
"ApiKey": "{{resolve:secretsmanager:datadog-cloudformation-extensions:SecretString:api-key}}",
"ApplicationKey": "{{resolve:secretsmanager:datadog-cloudformation-extensions:SecretString:application-key}}",
"ApiURL": "https://api.datadoghq.eu"
}
I tried to create Datadog::Monitors::Downtime
v3.0.0 but it failed with the following error.
0:27:21 | CREATE_FAILED | Datadog::Monitors::Downtime | TestDowntime
Properties validation failed for resource TestDowntime with message:
#: extraneous key [DatadogCredentials] is not permitted
import { CfnResource, Construct } from '@aws-cdk/core';
import * as camelcaseKeys from 'camelcase-keys';
import { DatadogCredentials } from '../common/properties';
export interface DatadogDowntimeProps {
/** Credentials for the Datadog API */
readonly datadogCredentials: DatadogCredentials;
/** Whether or not this downtime is currently active */
readonly active?: boolean;
/** POSIX Timestamp of cancellation of this downtime (null if not canceled) */
readonly canceled?: number;
/** Id of the user who created this downtime */
readonly creatorId?: number;
/** Whether or not this downtime is disabled */
readonly disabled?: boolean;
/** Type of this downtime */
readonly downtimeType?: number;
/** POSIX timestamp to end the downtime. If not provided, the downtime is in effect indefinitely (i.e. until you cancel it). */
readonly end?: number;
/** Id of this downtime */
readonly id?: number;
/** Message on the downtime */
readonly message?: string;
/** A single monitor to which the downtime applies. If not provided, the downtime applies to all monitors. */
readonly monitorId?: number;
/** A comma-separated list of monitor tags, to which the downtime applies. The resulting downtime applies to monitors that match ALL provided monitor tags. */
readonly monitorTags?: string[];
/** The ID of the parent downtime to this one */
readonly parentId?: number;
/** The scope(s) to which the downtime applies */
readonly scope: string[];
/** POSIX timestamp to start the downtime. If not provided, the downtime starts the moment it is created. */
readonly start?: number;
/** The timezone for the downtime */
readonly timezone?: string;
/** Id of the user who updated this downtime */
readonly updaterId?: number;
}
/**
* Datadog Monitor Downtime 3.0.0
*/
export class DatadogDowntime {
constructor(scope: Construct, id: string, props: DatadogDowntimeProps) {
const cfnProperties = camelcaseKeys(props, {
deep: true,
pascalCase: true,
});
new CfnResource(scope, id, {
type: 'Datadog::Monitors::Downtime',
properties: { ...cfnProperties },
});
}
}
I would love to use this library. Love the idea of being able to setup Datadog monitors in AWS CDK code.
In my current project, I'm using more recent "aws-cdk"@ "2.46.0" as dependency. Unfortunately, this leads to dependency conflicts.
"aws-cdk" is already on "constructs": "10.1.133"
cdk-datadog-resources still relies on constructs@"^3.2.27"
Any plans to upgrade?
(--legacy-peer-deps does not solve the issue as there are real incompatibilies involved.)
A CDK application should be able to reference the properties of DatadogMonior
.
For example, when want to display the id of the created monitor.
const stack = new Stack();
const monitor = new DatadogMonitor(stack, 'TestMonitor', {
datadogCredentials: {
apiKey: 'DATADOG_API_KEY',
applicationKey: 'DATADOG_APP_KEY',
},
query: 'avg(last_1h):sum:system.cpu.system{host:host0} > 100',
type: 'query alert',
name: 'Test Monitor',
options: {
thresholds: {
critical: 100,
warning: 80,
oK: 90,
},
notifyNoData: true,
evaluationDelay: 60,
},
});
new CfnOutput(stack, 'OutputTestMonitorId', {
value: monitor.monitorId,
});
The required properties are here.
Any roadmap for supporting cdk v2?
I would really love to use this project but I use AWS-CDK V2 for new projects.
Would it be thinkable to support it?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.