Easy-to-use CDK constructs for monitoring your AWS infrastructure

Overview

CDK Monitoring Constructs

Gitpod Ready-to-Code NPM version PyPI version NuGet version Maven Central Mergify

Easy-to-use CDK constructs for monitoring your AWS infrastructure.

  • Easily add commonly-used alarms using predefined properties
  • Generate concise Cloudwatch dashboards that indicate your alarms
  • Extend the library with your own extensions or custom metrics
  • Consume the library in multiple languages (see below)

Installation

TypeScript

https://www.npmjs.com/package/cdk-monitoring-constructs

In your package.json:

{
  "dependencies": {
    "cdk-monitoring-constructs": "^1.0.0",

    // peer dependencies
    "@aws-cdk/aws-apigatewayv2-alpha": "^2.18.0-alpha.0",
    "@aws-cdk/aws-appsync-alpha": "^2.18.0-alpha.0",
    "@aws-cdk/aws-redshift-alpha": "^2.18.0-alpha.0",
    "@aws-cdk/aws-synthetics-alpha": "^2.18.0-alpha.0",
    "aws-cdk-lib": "^2.18.0",
    "constructs": "^10.0.5"

    // (your other dependencies)
  }
}
Java

See https://mvnrepository.com/artifact/io.github.cdklabs/cdkmonitoringconstructs

Python

See https://pypi.org/project/cdk-monitoring-constructs/

C#

See https://www.nuget.org/packages/Cdklabs.CdkMonitoringConstructs/

Features

See API for complete auto-generated documentation.

You can also browse the documentation at https://constructs.dev/packages/cdk-monitoring-constructs/

Item Monitoring Alarms Notes
AWS API Gateway (REST API) (.monitorApiGateway()) TPS, latency, errors Latency, error count/rate To see metrics, you have to enable Advanced Monitoring
AWS API Gateway V2 (HTTP API) (.monitorApiGatewayV2HttpApi()) TPS, latency, errors Latency, error count/rate To see route level metrics, you have to enable Advanced Monitoring
AWS AppSync (GraphQL API) (.monitorAppSyncApi()) TPS, latency, errors Latency, error count/rate, low/high TPS
AWS Billing (.monitorBilling()) AWS account cost Requires enabling the Receive Billing Alerts option in AWS Console / Billing Preferences
AWS Certificate Manager (.monitorCertificate()) Certificate expiration Days until expiration
AWS CloudFront (.monitorCloudFrontDistribution()) TPS, traffic, latency, errors Error rate, low/high TPS
AWS CloudWatch Synthetics Canary (.monitorSyntheticsCanary()) Latency, error count/rate Error count/rate, latency
AWS CodeBuild (.monitorCodeBuildProject()) Build counts (total, successful, failed), failed rate, duration Failed build count/rate, duration
AWS DynamoDB (.monitorDynamoTable()) Read and write capacity provisioned / used Consumed capacity, throttling, latency, errors
AWS DynamoDB Global Secondary Index (.monitorDynamoTableGlobalSecondaryIndex()) Read and write capacity, indexing progress, throttled events
AWS EC2 (.monitorEC2Instances()) CPU, disk operations, network
AWS EC2 Auto Scaling Groups (.monitorAutoScalingGroup()) Group size, instance status
AWS ECS (.monitorFargateService(), .monitorEc2Service(), .monitorSimpleFargateService(), monitorSimpleEc2Service(), .monitorQueueProcessingFargateService(), .monitorQueueProcessingEc2Service()) System resources and task health Unhealthy task count, running tasks count, CPU/memory usage, and bytes processed by load balancer (if any) Use for ecs-patterns load balanced ec2/fargate constructs (NetworkLoadBalancedEc2Service, NetworkLoadBalancedFargateService, ApplicationLoadBalancedEc2Service, ApplicationLoadBalancedFargateService)
AWS ElastiCache (.monitorElastiCacheCluster()) CPU/memory usage, evictions and connections
AWS Glue (.monitorGlueJob()) Traffic, job status, memory/CPU usage
AWS Kinesis Data Analytics (.monitorKinesisDataAnalytics) Up/Downtime, CPU/memory usage, KPU usage, checkpoint metrics, and garbage collection metrics Downtime
AWS Kinesis Data Stream (.monitorKinesisDataStream()) Put/Get/Incoming Record/s and Throttling Throttling, iterator max age
AWS Kinesis Firehose (.monitorKinesisFirehose()) Number of records, requests, latency, throttling
AWS Lambda (.monitorLambdaFunction()) Latency, errors, iterator max age Latency, errors, throttles, iterator max age Optional Lambda Insights metrics (opt-in) support
AWS Load Balancing (.monitorNetworkLoadBalancer(), .monitorFargateApplicationLoadBalancer(), .monitorFargateNetworkLoadBalancer(), .monitorEc2ApplicationLoadBalancer(), .monitorEc2NetworkLoadBalancer()) System resources and task health Unhealthy task count, running tasks count, (for Fargate/Ec2 apps) CPU/memory usage Use for FargateService or Ec2Service backed by a NetworkLoadBalancer or ApplicationLoadBalancer
AWS OpenSearch/Elasticsearch (.monitorOpenSearchCluster(), .monitorElasticsearchCluster()) Indexing and search latency, disk/memory/CPU usage Indexing and search latency, disk/memory/CPU usage, cluster status
AWS RDS (.monitorRdsCluster()) Query duration, connections, latency, disk/CPU usage Disk and CPU usage
AWS Redshift (.monitorRedshiftCluster()) Query duration, connections, latency, disk/CPU usage Disk and CPU usage
AWS S3 Bucket (.monitorS3Bucket()) Bucket size and number of objects
AWS SecretsManager (.monitorSecretsManagerSecret()) Days since last rotation Days since last rotation
AWS SNS Topic (.monitorSnsTopic()) Message count, size, failed notifications Failed notifications
AWS SQS Queue (.monitorSqsQueue(), .monitorSqsQueueWithDlq()) Message count, age, size Message count, age, DLQ incoming messages
AWS Step Functions (.monitorStepFunction(), .monitorStepFunctionActivity(), monitorStepFunctionLambdaIntegration(), .monitorStepFunctionServiceIntegration()) Execution count and breakdown per state Duration, failed, failed rate, aborted, throttled, timed out executions
AWS Web Application Firewall (.monitorWebApplicationFirewallAcl()) Allowed/blocked requests
CloudWatch Logs (.monitorLog()) Patterns present in the log group
Custom metrics (.monitorCustom()) Addition of custom metrics into the dashboard (each group is a widget) Supports anomaly detection

Getting started

Create monitoring stack and facade

Important note: Please, do NOT import anything from the /dist/lib package. This is unsupported and might break any time.

Create an instance of MonitoringFacade, which is the main entry point:

export interface MonitoringStackProps extends DeploymentStackProps {
  // ...
}

export class MonitoringStack extends DeploymentStack {
  constructor(parent: App, name: string, props: MonitoringStackProps) {
    super(parent, name, props);

    const monitoring = new MonitoringFacade(this, "Monitoring", {
      // Define all necessary props
    });

    // Setup your monitoring
    monitoring
      .addLargeHeader("Storage")
      .monitorDynamoTable({ /* table1 */ })
      .monitorDynamoTable({ /* table2 */ })
      .monitorDynamoTable({ /* table3 */ })
      // ...and more
  }
}

Set up your monitoring

Once the facade is created, you can use it to call methods like .monitorLambdaFunction() and chain them together to define your monitors.

You can also use facade methods to add your own widgets, headers of various sizes, and more.

Customize actions

Alarms should have an action setup, otherwise they are not very useful. Currently, we support notifying an SNS queue.

const onAlarmTopic = new Topic(this, "AlarmTopic");

const monitoring = new MonitoringFacade(this, "Monitoring", {
  // ...other props
  alarmFactoryDefaults: {
    // ....other props
    action: new SnsAlarmActionStrategy({ onAlarmTopic }),
  },
});

You can override the default topic for any alarm like this:

monitoring
  .monitorSomething(something, {
    addSomeAlarm: {
      Warning: {
        // ...other props
        threshold: 42,
        actionOverride: new SnsAlarmActionStrategy({ onAlarmTopic }),
      }
    }
  });

Custom metrics

For simply adding some custom metrics, you can use .monitorCustom() and specify your own title and metric groups. Each metric group will be rendered as a single graph widget, and all widgets will be placed next to each other. All the widgets will have the same size, which is chosen based on the number of groups to maximize dashboard space usage.

Custom metric monitoring can be created for simple metrics, simple metrics with anomaly detection and search metrics. The first two also support alarming.

Custom monitoring

If you want even more flexibility, you can create your own Dashboard Segment.

This is a general procedure on how to do it:

  1. Extend the Monitoring ckass
  2. Override the widgets() method (and/or similar ones)
  3. Leverage the metric factor and alarm factory, provided by the base class (you can create additional factories, if you will)
  4. Add all alarms to .addAlarm() so they are visible to the user and being placed on the alarm summary dashboard

Both of these monitoring base classes are dashboard segments, so you can add them to your monitoring by calling .addSegment().

Monitoring Scopes

With CDK Monitoring Constructs, you can monitor complete CDK construct scopes. It will automatically discover all monitorable resources within the scope (recursively)) and add them to your dashboard.

monitoring.monitorScope(stack);

You can also specify default alarms for any specific resource and disable automatic monitoring for it as well.

monitoring.monitorScope(stack, {
  lambda: {
    props: {
      addLatencyP50Alarm: {
        Critical: { maxLatency: Duration.seconds(10) },
      },
    },
  },
  billing: { enabled: false },
});

Contributing/Security

See CONTRIBUTING for more information.

License

This project is licensed under the Apache-2.0 License.

Comments
  • Monitoring Construct in Stack in Pipeline Stage

    Monitoring Construct in Stack in Pipeline Stage

    Version

    1.7.0

    Steps and/or minimal code example to reproduce

    My issue is that the monitoring construct runs within a stage and doesn't deploy any resources.

    My steps were:

    1. CDK App has a stack CdkPipeline
    2. CdkPipeline has a stage CdkPipelineStage
    3. CdkPipelineStage includes all stacks
    4. Add monitoring stack in CdkPipelineStage
    export interface Props extends StackProps {
      constructToMonitor: ConstructType;
    }
    export class MonitoringStack extends Stack {
      constructor(parent: Construct, name: string, props: Props) {
        super(parent, name, props);
    
        const { constructToMonitor } = props;
    
        const monitoring = new MonitoringFacade(this, 'monFacade', {
          alarmFactoryDefaults: {
            actionsEnabled: true,
            alarmNamePrefix: 'alarm'
          },
          metricFactoryDefaults: {}
        });
    
        monitoring.monitorScope(constructToMonitor);
        monitoring.monitorBilling();
        monitoring.monitorLambdaFunction({
          lambdaFunction: constructToMonitor.sqsLambdaDlq.consumerLambda
        });
      }
    }
    
    1. Nothing gets deployed except for CDK Metadata

    The same thing happens if I am adding the monitoring construct within an existent stack with other services.

    Is it necessary that I pass the App like in the example or is it also possible when I pass a construct?

    Expected behavior

    Find all resources within my construct and create alarms, dashboards, etc.

    Actual behavior

    Nothing will be deployed.

    Other details

    No response

    bug documentation 
    opened by AlessandroVol23 24
  • feat: Expose protected attributes and methods (only create*Widget) of all monitoring classes to allow users to build custom monitoring more flexibly via composition rather than inheritance.

    feat: Expose protected attributes and methods (only create*Widget) of all monitoring classes to allow users to build custom monitoring more flexibly via composition rather than inheritance.

    feat: Expose protected attributes and methods (only create*Widget) of all monitoring classes to allow users to build custom monitoring more flexibly via composition rather than inheritance.

    See https://github.com/cdklabs/cdk-monitoring-constructs/issues/218


    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

    do-not-merge 
    opened by Dicee 13
  • Moving towards composition rather than inheritance for greater modularity

    Moving towards composition rather than inheritance for greater modularity

    Feature scope

    Everything

    Description

    I'm proposing to expose all immutable properties, as well as methods creating new objects (like widgets) without side-effect on the construct, as public rather than protected (for example, exposing LambdaFunctionMonitoring#faultRateMetric).

    Use Case

    One can extend subclasses of Monitoring (e.g. LambdaFunctionMonitoring) in order to override the widgets, kind of alarms created etc when the construct doesn't do what the user wants by default. This pattern works fairly well for building a construct that can be reused for several use cases. However, it doesn’t work as well for highly customized monitoring.

    For example, the lambda monitoring construct really doesn’t cut it for me. Its dashboard is much too detailed for my simple Lambda and most metrics don’t make sense for me, plus I want to add some of my own, and they only apply to a single Lamba in my application, not any other. Just to show how inappropriate the default behaviour is to my use-case:

    • TPS widget: my lambda gets consistently called at 1 call per minute via a CloudWatch event, so I don't care about TPS
    • Latency widget: the lambda is asynchronous and will typically execute in seconds, I don't care about latency
    • Error rate widget: useful, but not as a rate. Since the lambda executes so rarely, I just want to know if each run was successful or not, I don't care about the rate over a period of time. It has to succeed at every run to be healthy.
    • Throttles and provisioned concurrency: don't care, I don't have any provisioning and it can't throttle as it's called once a minute (unless my latency exceeds a minute with reserved concurrency of 1 but it's impossible because my timeout is 30s)
    • Invocations: don't care, I know it gets called once a minute
    • Iterator: not relevant to the way the lambda is triggered
    • Errors: finally a relevant widget!
    • Business metrics: I need to add them myself

    This is where inheritance and template classes typically fail: they’re too limited, because they impose a template. The more abstract the template, the more customizations are possible, but also the more the abstract class becomes convoluted and hard to make sense of, particularly after several levels of inheritance.

    To fix these shortcomings, I propose moving towards composition rather than inheritance. Imagine code like this:

    public monitorSnapshotGenerationFunction(fn: SecureFunction) {
        const period = SNAPSHOT_POLLING_RATE;
        const lambdaMonitoring = new ContraCogsLambdaMonitoring(this.monitoring, this.serviceHealthAlarmCollector, {
            lambdaFunction: fn,
            addFaultCountAlarm: {
                '': {maxErrorCount: 0 /* exclusive */, evaluationPeriods: 3, datapointsToAlarm: 3, period}
            }
        })
    
        this.monitoring.addSegment(new class {
            widgets() {
                return [
                    lambdaMonitoring.createTitleWidget(),
                    lambdaMonitoring.createErrorCountWidget(DEFAULT_WIDGET_WIDTH, DEFAULT_WIDGET_HEIGHT),
                    createNewSnapshotGeneratedWidget(period), // custom business metric
                ]
            }
    
            alarmWidgets() {return []}
            summaryWidgets() {return []}
        })
    }
    

    This is actual code I have written using a subclass of LambdaMonitoring that exposes its properties and methods. Now I can leverage the code encapsulated in these methods/properties, while having absolute freedom on how to compose them. Pick what's useful, and leave the rest alone. The above is exactly what I need, no more, no less.

    For this reason, I would make all these properties and methods public. Note this doesn’t breach anything in terms of encapsulation, the service-specific knowledge stays in the service-specific constructs and no internal mutable state gets exposed, but this allows the user to compose the perfect monitoring for their use case(s) easily.

    Other information

    No response

    feature-request 
    opened by Dicee 10
  • feat(apigateway): support trimmed stats and latency graph configuration

    feat(apigateway): support trimmed stats and latency graph configuration

    Introduces latency factory methods with latency type parameter in Api Gateway. It will be useful for creating trimmed-mean alarms, etc.

    Closes #65 Closes #47


    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

    opened by voho 7
  • [waf] Support for AWS WAF

    [waf] Support for AWS WAF

    Feature scope

    AWS WAF

    Describe your suggested feature

    AWS Offers Several different firewall tools. Having Web Application Firewall being monitored in this library would be greatly helpful.

    feature-request effort: medium 
    opened by rahul0705 7
  • Monitoring support for AWS DocumentDB

    Monitoring support for AWS DocumentDB

    Feature scope

    DocumentDB

    Describe your suggested feature

    I just installed v1.10.0 and it does appear that there isn't support for monitoring AWS DocumentDB via this library? I am kindly requesting that this be considered and added, if it's not already been planned.

    good first issue feature-request effort: medium 
    opened by chalu 6
  • fix(facade): add return types to MonitoringFacade methods

    fix(facade): add return types to MonitoringFacade methods

    Add return type to MonitoringFacade.addSegment

    Fixes #284


    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

    opened by arturitov 5
  • feat(ec2): allow users to specify EC2 instance IDs to monitor

    feat(ec2): allow users to specify EC2 instance IDs to monitor

    Allows users to specify instance IDs in the EC2 monitoring and combine them with ASG property.

    Fixes #43


    By submitting this pull request, I confirm that my contribution is made under the terms of the Apache-2.0 license

    opened by voho 5
  • chore: move code from internal repo

    chore: move code from internal repo

    Moving code as-is from the current internal repo. The repo was updated few minutes ago, so it should be the latest code version.

    The code was not edited, but there was some re-formatting happening, probably due to a different prettier settings. I have copied prettier params from our package as well, but it does not seem working...

    opened by voho 5
  • [dynamo] Disallow utilization metrics/alarms if a table is using on-demand capacity

    [dynamo] Disallow utilization metrics/alarms if a table is using on-demand capacity

    Version

    v1.14.0

    Steps and/or minimal code example to reproduce

    1. Monitor a DDB table
    2. Note that the Utilization metrics in the dashboards show warnings
    3. Note that you can technically create alarms against utilization metrics

    Expected behavior

    If a DDB table is using on-demand capacity, the utilization metrics should be excluded from the dashboard widgets and alarms should not be able to be created.

    Actual behavior

    Dashboards include metrics and you can create (invalid) alarms.

    Other details

    No response

    bug 
    opened by echeung-amzn 4
  • `add_to_summary_dashboard` does not work on `monitor_custom`

    `add_to_summary_dashboard` does not work on `monitor_custom`

    Version

    1.22.4

    Steps and/or minimal code example to reproduce

    I'm using the python version:

    1. Change dashboard factory to also create the summary
    dashboard_factory=monitoring.DefaultDashboardFactory(
                    self,
                    "DashboardFactory",
                    dashboard_name_prefix="streamProcessors",
                    create_dashboard=True,
                    detail_dashboard_range=aws_cdk.Duration.hours(4),
                ),
    
    1. monitor a custom resource and supply add_to_summary_dashboard=True
    monitoring_obj.monitor_custom(
                alarm_friendly_name="Processor performance",
                add_to_summary_dashboard=True,
                metric_groups=[]
    )
    

    Expected behavior

    Expected to see the custom monitoring widget in the summary like other resources (dynamo DB in this case) I set to be shown in the summary.

    Actual behavior

    monitor_custom contents are not shown in the summary.

    Other details

    No response

    bug 
    opened by Glyphack 3
  • Quota utilization monitoring

    Quota utilization monitoring

    Feature scope

    Resources usage

    Describe your suggested feature

    Add a capability to monitor and configure alarms based on Service Quotas.

    AWS Documentation for quota monitoring: https://docs.aws.amazon.com/AmazonCloudWatch/latest/monitoring/CloudWatch-Quotas-Visualize-Alarms.html

    Impact: Being unaware of exceeding the quota for certain resources can be tragic - e.g. not being able to quickly scale up during an incident. Actively monitoring the quotas can make it easier for service owners to prepare ahead for exceeding the quota.

    feature-request 
    opened by miloszwatroba 0
  • Lambda alarm line not drawn on the widget

    Lambda alarm line not drawn on the widget

    Version

    1.28.0

    Steps and/or minimal code example to reproduce

    facade
          .monitorLambdaFunction({
            lambdaInsightsEnabled: true,
            addEnhancedMonitoringMaxMemoryUtilizationAlarm: {
              Test: { maxUsagePercent: 80 },
            },
    })
    

    Expected behavior

    The alarm is created AND the annotation is drawn on the widget

    Actual behavior

    The alarm is created BUT the annotation is NNOT drawn on the widget

    Other details

    The annotation is populated but never added to the widget

    https://github.com/cdklabs/cdk-monitoring-constructs/blob/main/lib/monitoring/aws-lambda/LambdaFunctionMonitoring.ts#L139

    Should be an easy fix.

    Same goes for time alarms!

    bug 
    opened by vvigilante 0
  • Add Period value from Widget Context in Lambda function for bitmap widget rendering

    Add Period value from Widget Context in Lambda function for bitmap widget rendering

    Version

    1.22.6

    Steps and/or minimal code example to reproduce

    1. Add renderingPreference: DashboardRenderingPreference.INTERACTIVE_AND_BITMAP to generate bitmap dashboards.
    2. Visit the generated Bitmap CW Dashboard in your AWS account.
    3. Set the period value for the dashboard to any value other than the set default value.
    4. Notice that there is no change in the datapoints for the metrics in dashboard widgets.

    Expected behavior

    The metric data for the widgets in bitmap dashboards should align with the set period value of the Bitmap dashboard.

    Actual behavior

    There is no change in the datapoints for the metrics in dashboard widgets.

    Other details

    No response

    bug 
    opened by naveen19991124 2
  • Support for ScheduledFargateTask monitoring

    Support for ScheduledFargateTask monitoring

    Feature scope

    fargate

    Describe your suggested feature

    Some of the aws ecs patterns are already supported for monitoring, such as Fargate service, EC2 Service, but the ScheduledFargateTask is not supported. It does not create a Fargate service, so I can't pass that to the method.

    Expected state:

    • I can just pass .monitorScheduledFargateTask({scheduledFargateTask}) and get the useful metrics with alarms if needed/specified.
    feature-request 
    opened by KoStard 0
  • Allow creating alarms for any metric on a Monitoring scope

    Allow creating alarms for any metric on a Monitoring scope

    Feature scope

    Alarms

    Describe your suggested feature

    Hi all! I'm wondering if it's possible to allow generic alarm creation for any MetricWithAlarmSupport on a given Monitoring scope.

    Context for this question is that I'm setting up some monitoring/alarming for a Kinesis Data Firehose, and the KinesisFirehoseMonitoring class only allows passing addRecordsThrottledAlarm to the constructor, but it creates ~10 metrics that could be alarmed on. It doesnt seem possible/simple to access this without going in a roundabout way that guesses about some internal patterns by calling MonitoringFacade.createdMonitorings() and then for each entry in the returned array checking for some unique public property like title and re-constructing in where you call MonitoringFacade.monitorKinesisFirehose.

    This feels like a pretty fragile way to add alarms for metrics that have been otherwise created, so I was wondering if a feature could be added that did something like take a generic { [key: string]: <GenericAlarmConfigInterface> } prop where each key is one of the MetricWithAlarmSupport fields on a Monitoring instance like incomingBytesMetric on a KinesisFirehoseMonitoring instance.

    This might end up needing to be a 2.0 of this library, but unless I'm missing something in the code it's currently easy to create dashboards, but extremely hard to create alarms for many of the things on those dashboards so it may be worth it.

    I can take a crack at a PR if this is a feature that there's appetite for, but I wanted to at least raise an issue/feature request to gauge appetite before opening a likely large PR.

    An alternate implementation option could be to return segment; in the functions like monitorApiGateway instead of return this; which would allow people to easily access the MetricWithAlarmSupport properties for the resource they are monitoring, but that obviously removes chainability of that function which is also a breaking change.

    feature-request 
    opened by timcosta 0
Releases(v1.30.8)
Learn Web 2.0 and Web 3.0 Development using Next.js, Typescript, AWS CDK, AWS Serverless, Ethereum and AWS Aurora Serverless

Learn Web 2.0 Cloud and Web 3.0 Development in Baby Steps In this course repo we will learn Web 2.0 cloud development using the latest state of the ar

Panacloud Multi-Cloud Internet-Scale Modern Global Apps 89 Jan 3, 2023
CDK constructs for self-hosted GitHub Actions runners

GitHub Self-Hosted Runners CDK Constructs Use this CDK construct to create ephemeral self-hosted GitHub runners on-demand inside your AWS account. Eas

CloudSnorkel 134 Dec 20, 2022
Under the Sea is an official AWS workshop delivered by AWS SAs and AWS Partners to help customers and partners to learn about AIOps with serverless architectures on AWS.

Under the Sea - AIOps with Serverless Workshop Under the Sea is an exciting MMORPG developed by the famous entrepreneur behind Wild Rydes, the most po

AWS Samples 4 Nov 16, 2022
Cloudy is a set of constructs for the AWS Cloud Development Kit that aim to improve the DX by providing a faster and type-safe code environment.

cloudy-ts These packages aren't yet published on npm. This is still highly experimental. Need to figure out a few things before releasing the first ve

Cristian Pallarés 5 Nov 3, 2022
An affordable and easy-to-use monitoring tool for your AWS serverless applications.

AWS Serverless Applications Monitoring Tool Table of Contents Motivation for Project Getting Started AWS End Users Installation and Setup Lambda Metri

OSLabs Beta 54 Sep 21, 2022
An Amazon Kendra REST API CDK example with an API Gateway, including authentication with AWS Cognito and AWS X-Ray Tracing

Amazon Kendra Web Service CDK Sample Amazon Kendra has a robust JSON API for use with the AWS SDK (software development kit), but does not expose endp

AWS Samples 8 Nov 28, 2022
MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are still part of a flow in the AWS cloud remote.

MerLoc MerLoc is a live AWS Lambda function development and debugging tool. MerLoc allows you to run AWS Lambda functions on your local while they are

Thundra 165 Dec 21, 2022
Changd is a open source web monitoring application for monitoring visual site changes using screenshots, XPath's or API's.

Changd is a open source web monitoring application and a free alternative to ChangeTower.com, Hexowatch.com, and other SaaS-based solutions. Changd ca

Paul Aschmann 110 Jan 3, 2023
AWS Lambda & Serverless - Developer Guide with Hands-on Labs. Develop thousands line of aws lambda functions interact to aws serverless services with real-world hands-on labs

AWS Lambda & Serverless - Developer Guide with Hands-on Labs UDEMY COURSE WITH DISCOUNTED - Step by Step Development of this Repository -> https://www

awsrun 35 Dec 17, 2022
AWSGoat : A Damn Vulnerable AWS Infrastructure

AWS GOAT Compromising an organization's cloud infrastructure is like sitting on a gold mine for attackers. And sometimes, a simple misconfiguration or

INE Lab Infrastructure 993 Dec 28, 2022
A sample CICD Deployment Pipeline for your Alexa Skills, using AWS CDK, CodeBuild and CodePipeline

Alexa Skils - CI/CD CDK Pipeline This repository will help you setting up a CI/CD pipeline for your Alexa Skills. This pipeline is powered by AWS Clou

null 5 Nov 23, 2022
Grupprojekt för kurserna 'Javascript med Ramverk' och 'Agil Utveckling'

JavaScript-med-Ramverk-Laboration-3 Grupprojektet för kurserna Javascript med Ramverk och Agil Utveckling. Utvecklingsguide För information om hur utv

Svante Jonsson IT-Högskolan 3 May 18, 2022
Hemsida för personer i Sverige som kan och vill erbjuda boende till människor på flykt

Getting Started with Create React App This project was bootstrapped with Create React App. Available Scripts In the project directory, you can run: np

null 4 May 3, 2022
Kurs-repo för kursen Webbserver och Databaser

Webbserver och databaser This repository is meant for CME students to access exercises and codealongs that happen throughout the course. I hope you wi

null 14 Jan 3, 2023
This project provides a CDK construct creating AWS organizations.

AWS Organizations This project provides a CDK construct creating AWS organizations. Currently, there is no @aws-cdk/aws-organizations available. See t

Pepperize 107 Dec 29, 2022
Sample AWS microservices app with service discovery defined using the CDK. Uses Docker + Fargate & ELB.

AWS Microservices Demo with CDK and Fargate About Simple AWS microservice-based app. Consists of two Spring Boot based services: Name Service GET /nam

Nick Klaene 7 Nov 23, 2022
Example Serverless DynamoDB integration tests using Jest, TypeScript and the AWS CDK

serverless dynamodb integration tests ?? Example Serverless DynamoDB integration tests using Jest, TypeScript and the AWS CDK Introduction How to inte

Lee Gilmore 8 Nov 4, 2022
AWS CDK compiled for web (and Node!)

cdk-web ?? DEMO ?? AWS CDK compiled for web (and Node!) cdk-web and aws-cdk-web are functionally identical packages on npm. read about the differences

Sepehr Laal 44 Dec 5, 2022