Skip to content

An L3 AWS CDK construct to send AQI notifications via SMS.

Notifications You must be signed in to change notification settings

rubenrangel/aqi-notifier-lambda-cdk

Repository files navigation

Build Status

aqi-notifier-lambda-cdk

aqi-notifier-lambda-cdk is an L3 AWS CDK construct. It creates a Lambda function to send an AQI score for a specified zipcode. It leverages the AirNow API and Twilio SMS for functionality.

Installation

npm i aqi-notifier-lambda-cdk

Usage

There are two ways to instantiate the Lambda, which provide flexibility for different situations.

ENV var configuration

This will configure the application via environment variables. This can be handy for some proof of concept work. Of course, you don't want to store secrets in source control. Creating the construct with empty strings for keys will still allow you to set the values in the console, however, deploying the construct will eliminate any drift in the values.

import * as cdk from '@aws-cdk/core';
import { EnvLambda } from 'aqi-notifier-lambda-cdk';

export class CdkTestHarnessStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new EnvLambda(this, 'AqiNotifier', {
      openAirApiKey: '',
      toPhoneNumber: '+11234567890',
      twilioAccountSid: '1234567890abcdefghijklmn1234567890',
      twilioAuthToken: '',
      twilioFromPhoneNumber: '+11234567890',
      zipCode: '97216',
    });
  }
}

AWS SSM Parameter Store and Secrets Manager

This configuration will use AWS SSM Parameter store for general configuration, and Secrets Manager for sensitive info. The CDK Construct cannot set the SecretString value , but you can set this afterwards, in a secure process. The paramAndSecretRoot property allows for namespacing secrets, to keep instantiations independent.

import * as cdk from '@aws-cdk/core';
import { AwsConfigLambda } from 'aqi-notifier-lambda-cdk';

export class CdkTestHarnessStack extends cdk.Stack {
  constructor(scope: cdk.Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    new AwsConfigLambda(this, 'AqiNotifier', {
      paramAndSecretRoot: '/aqi-lambda',
      openAirApiKey: '',
      toPhoneNumber: '+11234567890',
      twilioAccountSid: '1234567890abcdefghijklmn1234567890',
      twilioAuthToken: '',
      twilioFromPhoneNumber: '+11234567890',
      zipCode: '97216',
    });
  }
}

About

An L3 AWS CDK construct to send AQI notifications via SMS.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published