Skip to content

Instantly share code, notes, and snippets.

View georgealton's full-sized avatar

George Alton georgealton

View GitHub Profile
@georgealton
georgealton / cfn_events_to_mermaid_timeline.py
Last active December 4, 2024 23:14
CloudFormation Events Timeline Mermaid
#!/usr/bin/env python3
from collections import defaultdict
from datetime import datetime
from boto3 import Session
from argparse import ArgumentParser
parser = ArgumentParser()
parser.add_argument("stack", help="Name of CloudFormation Stack")
@georgealton
georgealton / json_to_github_markdown.sh
Last active June 26, 2024 15:40
JSON to GitHub Table
python -c 'import sys, json, tabulate; print(tabulate.tabulate(json.load(sys.stdin), headers="keys", tablefmt="github"))'
@georgealton
georgealton / cloudformation_outputs.jq
Last active November 4, 2023 00:13
CloudFormation Simple Outputs
JQ_FILTER='map(.key = .OutputKey | .value = .OutputValue | del(.OutputKey, .OutputValue)) | from_entries'
OUTPUTS=$(aws cloudformation describe-stacks --stack-name "$STACK_NAME" --query 'Stacks[0].Outputs' | jq $JQ_FILTER)
OUTPUT_1=$(echo $OUTPUTS | jq '.Output1')
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Deny",
"Action": [
"organizations:LeaveOrganization"
],
"Resource": "*"
}
@georgealton
georgealton / onepassword-fzf.sh
Last active November 7, 2024 16:45
Find and Copy passwords from 1Password to Clipboard
echo -n $(op item get $(op item list | fzf --header-lines=1 --categories Login | cut -d ' ' -f1 ) --fields label=password --reveal) | wl-copy

Keybase proof

I hereby claim:

  • I am georgealton on github.
  • I am georgealton (https://keybase.io/georgealton) on keybase.
  • I have a public key whose fingerprint is EADF 6CC0 7B85 83A0 0B10 FBFB 4DA6 4B76 BA5D A20A

To claim this, I am signing this object:

@georgealton
georgealton / tag_policy_data.sh
Last active February 6, 2023 11:19
Analyze Tag Policy Report Data
#!/bin/bash
local -r BUCKET=$1
local -r PREFIX=$2
local -r QUERY="select count(*) from s3object where ComplianceStatus='false'"
for report in $(aws s3api list-objects-v2 --bucket "$BUCKET" --prefix "$PREFIX" --query 'Contents[].Key' --output 'text'); do
local -r REPORT_DATE=$(echo $report | cut -d '/' -f 3)
local -r COUNT=$(aws s3api select-object-content \
@georgealton
georgealton / missing-dlq-reporter.py
Last active February 18, 2023 00:48
Find Lambda Functions that don't have Dead Letter Configurations
#!/usr/bin/env python3.10
import json
from collections import defaultdict
from operator import itemgetter
from typing import Iterable, TypedDict, NamedTuple, Literal
import botocore
import boto3
@georgealton
georgealton / switch_role.sh
Last active May 9, 2023 20:09
Assume a Role and set the AWS Environment variables
account_id = ""
role_name = ""
session_name = ""
read -r 'AWS_ACCESS_KEY_ID' 'AWS_SECRET_ACCESS_KEY' 'AWS_SESSION_TOKEN' <<<$(aws sts assume-role --role-arn "arn:aws:iam::${account_id}:role/${role_name}" --role-session-name "${session_name}" --output 'text' --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]')
@georgealton
georgealton / template.json
Created December 8, 2022 10:35
Minimal Viable CloudFormation Template
{"Resources":{"A":{"Type":"AWS::CloudFormation::WaitConditionHandle"}}}