Skip to content

Instantly share code, notes, and snippets.

@douglampe
douglampe / pipeline-resources.yaml
Created January 22, 2022 04:03
A better SAM pipeline bootstrap template
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
Environment:
Type: String
Default: Dev
Description: Environment identifier
Identifier:
Type: String
Default: StreetlightBlog
@douglampe
douglampe / authService.ts
Last active January 19, 2022 19:13
OATH2 Provider for React
import axios, { AxiosRequestConfig } from 'axios';
import jwtDecode from 'jwt-decode';
import AccessToken from '../types/AccessToken';
import AuthData from '../types/AuthData';
import IdToken from '../types/IdToken';
const getAuthData = () : AuthData =>
<AuthData>JSON.parse(window?.localStorage?.getItem('authData'));
const setAuthData = data =>
@douglampe
douglampe / pipeline-snippet.yaml
Last active January 14, 2022 19:53
Create CloudFormation stack from template for branch in GitHub Action
- name: Create dev stack
run: |
aws cloudformation deploy --stack-name feature-$(echo ${GITHUB_REF##*/} | tr -cd '[a-zA-Z0-9-]') \
--template-body file://cloudformation/site-resources.yml \
--parameters ParameterKey=Environment,ParameterValue=Dev
--tags Key=environment,Value=dev
@douglampe
douglampe / delete-everything.sh
Created November 26, 2021 00:42
Delete all versions from an S3 bucket
aws s3api delete-objects \
--bucket ${bucket_name} \
--delete "$(aws s3api list-object-versions \
--bucket "${bucket_name}" \
--output=json \
--query='{Objects: Versions[].{Key:Key,VersionId:VersionId}}')"
@douglampe
douglampe / vpc-nat-eip.yaml
Created November 15, 2021 23:43
CloudFormation for VPC with NAT and EIP
AWSTemplateFormatVersion: 2010-09-09
VpcCidr:
Type: String
Default: 10.192.0.0/16
PublicSubnetCidr:
Type: String
Default: 10.192.10.0/24
PrivateSubnetCidr:
Type: String
Default: 10.192.20.0/24
@douglampe
douglampe / postgres-stack.yml
Created November 6, 2021 21:02
CloudFormation Template for EC2 running Postgres on Docker
AWSTemplateFormatVersion: '2010-09-09'
Parameters:
PostgresVpcId:
Type: 'AWS::EC2::VPC::Id'
Subnet1:
Type: String
Subnet2:
Type: String
HostedZoneId:
Type: String
@douglampe
douglampe / github-actions-sam-pipeline.yaml
Created October 25, 2021 15:58
Pipeline for GitHub created by sam pipeline init
name: Pipeline
on:
push:
branches:
- 'main'
- 'feature**'
env:
PIPELINE_USER_ACCESS_KEY_ID: ${{ secrets.AWS_ACCESS_KEY_ID }}
@douglampe
douglampe / sam-bootstrap-stack-named.yaml
Last active November 5, 2021 21:59
CloudFormation Template for SAM pipeline with names
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Description: >
This template deploys resources required for deploying a Lambda function via SAM. This template was initially
created by running sam pipeline bootstrap. This command creates a CloudFormation stack and deploys it to
a specific account. Therefore, this template can be updated to match future SAM requirements by running
sam pipeline bootstrap and then capturing the template from the generated stack.
The names of resources have been set in this template to allow for reuse across multiple Lambda deployments.
The GitHub actions workflow included in this project uses default values for resources which match the naming
@douglampe
douglampe / sam-pipeline-bootstrap.yaml
Created October 25, 2021 14:56
CloudFormation Template generated by sam pipeline bootstrap
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31
Parameters:
PipelineUserArn:
Type: String
PipelineExecutionRoleArn:
Type: String
CloudFormationExecutionRoleArn:
Type: String
@douglampe
douglampe / find-mkdocs-components.sh
Created August 16, 2021 17:51
Find all folders named ./components/[folder]/docs and copy contents to ./docs/components/[folder]
#!/bin/bash
find . | grep -E "^\./components/(.*)/docs$" | while read -r path; do
folder=$(echo "$path" | sed 's/^.\/components\(.*\)\/docs$/\1/')
mkdir -p ./docs/components/$folder
cp -r $path/* ./docs/components/$folder
done