Skip to content

Instantly share code, notes, and snippets.

View jewelsjacobs's full-sized avatar
:octocat:
Working

Julia Jacobs jewelsjacobs

:octocat:
Working
View GitHub Profile
import {
AliasConfiguration,
CloudFrontWebDistribution,
CloudFrontWebDistributionProps,
SecurityPolicyProtocol,
SSLMethod
} from '@aws-cdk/aws-cloudfront';
import route53 = require('@aws-cdk/aws-route53');
import { CloudFrontTarget } from '@aws-cdk/aws-route53-targets';
import s3 = require('@aws-cdk/aws-s3');
@jewelsjacobs
jewelsjacobs / pipeline-stack.ts
Created August 15, 2019 20:24
Pipeline with Github Stage status
import cdk = require('@aws-cdk/core');
import codepipeline = require('@aws-cdk/aws-codepipeline');
import cpActions = require('@aws-cdk/aws-codepipeline-actions');
import codebuild = require('@aws-cdk/aws-codebuild');
import { AwsCustomResource } from '@aws-cdk/custom-resources';
import iam = require('@aws-cdk/aws-iam');
import ec2 = require('@aws-cdk/aws-ec2');
import { GithubStatus } from './github-status';
const capitalize = require('lodash.capitalize');
@jewelsjacobs
jewelsjacobs / index.js
Created August 15, 2019 20:18
github status lambda
const aws = require('aws-sdk');
const axios = require('axios');
const BaseURL = 'https://api.github.com/repos';
const codepipeline = new aws.CodePipeline();
const Password = process.env.ACCESS_TOKEN;
exports.handler = async event => {
@jewelsjacobs
jewelsjacobs / github-status.ts
Created August 15, 2019 20:17
github stage status in codepipeline construct
import lambda = require('@aws-cdk/aws-lambda');
import cdk = require('@aws-cdk/core');
import cp = require('@aws-cdk/aws-codepipeline');
import path = require('path');
import iam = require('@aws-cdk/aws-iam');
import targets = require('@aws-cdk/aws-events-targets');
export interface GithubStatusProps {
stage: cp.IStage;
gitHubSecretArn: string;
@jewelsjacobs
jewelsjacobs / cloudfront-stack.ts
Created August 8, 2019 19:28
Cloudfront Stack
import { App, Stack, StackProps, RemovalPolicy } from '@aws-cdk/core';
import { StaticWebsite } from '@cloudcomponents/cdk-static-website';
/**
* Static site infrastructure, which uses an S3 bucket for the content.
*
* The site redirects from HTTP to HTTPS, using a CloudFront distribution,
* Route53 alias record, and ACM certificate.
*
* The ACM certificate is expected to be created and validated outside of the CDK,
@jewelsjacobs
jewelsjacobs / cloudfront-pipeline.ts
Created August 8, 2019 19:27
Cloudfront Pipeline
import cdk = require('@aws-cdk/core');
import codepipeline = require('@aws-cdk/aws-codepipeline');
import cpActions = require('@aws-cdk/aws-codepipeline-actions');
import codebuild = require('@aws-cdk/aws-codebuild');
import { AwsCustomResource } from '@aws-cdk/custom-resources';
import iam = require('@aws-cdk/aws-iam');
import ec2 = require('@aws-cdk/aws-ec2');
const capitalize = require('lodash.capitalize');
export interface PipelineStackProps extends cdk.StackProps {
@jewelsjacobs
jewelsjacobs / ssm-put-parameter.ts
Created August 2, 2019 16:28
SSMPutParameter Custom Construct
import cfn = require('@aws-cdk/aws-cloudformation');
import lambda = require('@aws-cdk/aws-lambda');
import cdk = require('@aws-cdk/core');
import path = require('path');
import iam = require('@aws-cdk/aws-iam');
export interface SSMPutParameterProps {
Name: string;
Value: string;
}
@jewelsjacobs
jewelsjacobs / index.js
Created August 2, 2019 16:27
ssmPutParam lambda
const aws = require('aws-sdk');
const ssm = new aws.SSM();
const https = require('https');
const { URL } = require('url');
/**
* Upload a CloudFormation response object to S3.
*
* @param {object} event the Lambda event payload received by the handler function
* @param {object} context the Lambda context received by the handler function
@jewelsjacobs
jewelsjacobs / PROBLEM.md
Last active July 26, 2019 17:36
CDK Wish - Simple builds without docker overhead

CDK Wish - Simple builds without docker overhead

I have a front end app that gets built with webpack and I was asked to have the cdk folder in the same directory (top lvl). It looks like this:

├── dist <- compiled static files from build
├── src <- files webpack builds
└── infrastructure <- cdk folder with cloudfront / route53 service stack and pipeline stack with codebuild / codepipeline that also creates an s3 bucket. 
#!/usr/bin/env node
import 'source-map-support/register';
import cdk = require('@aws-cdk/core');
import { VPCStack } from '../lib/vpc-stack';
import { PipelineStack } from '../lib/pipeline-stack';
import { DataStack } from '../lib/data-stack';
import ec2 = require('@aws-cdk/aws-ec2');
const app = new cdk.App();
// example [ 'us-west-1a', 'us-west-1b', 'us-west-1c' ]