Skip to content

Instantly share code, notes, and snippets.

View bashtoni's full-sized avatar

Sam Bashton bashtoni

View GitHub Profile
@bashtoni
bashtoni / snap.sh
Created June 4, 2020 08:26
Create volume with name matching snapshot name
snap=snap-123456789
desc=$(aws ec2 describe-snapshots --snapshot-ids $snap --query Snapshots[].Description --output text)
aws ec2 create-volume --snapshot-id $snap --availability-zone ap-southeast-2c --tag-specifications "[{\"ResourceType\":\"volume\",\"Tags\":[{\"Key\":\"Name\",\"Value\":\"$desc\"}]}]"
@bashtoni
bashtoni / assume_role.sh
Last active May 15, 2023 22:32
AWS assume role on CLI
ROLE_TO_ASSUME="arn:aws:iam::${ACCOUNT_ID}:role/${ROLE_NAME}"
session_token=($(aws sts assume-role --role-arn $ROLE_TO_ASSUME --query 'Credentials.[AccessKeyId,SecretAccessKey,SessionToken]' --role-session-name "$USER-$$" --output text))
export AWS_ACCESS_KEY_ID="${session_token[1]}" AWS_SECRET_ACCESS_KEY="${session_token[2]}" AWS_SESSION_TOKEN="${session_token[3]}"
@bashtoni
bashtoni / gist:cda204308d9730d6420e59d84f55f77e
Created July 4, 2018 10:49
Get HostedZoneId from AWS CLI for a given domain
aws route53 list-hosted-zones-by-name --dns-name example.com --query HostedZones[].Id --output text | cut -d/ -f3
@bashtoni
bashtoni / gist:995c0683bb18fd19eaefdc296a9401d8
Created July 4, 2018 10:48
Find ARN for ACM certificate for a given domain name
aws acm us-east-1 list-certificates --query CertificateSummaryList[].[CertificateArn,DomainName] \
--output text | grep example.com | cut -f1
### Keybase proof
I hereby claim:
* I am bashtoni on github.
* I am sambashton (https://keybase.io/sambashton) on keybase.
* I have a public key whose fingerprint is F008 00FE C6A4 AFB4 2E08 E1B7 E2CB 2ADC 2C3C 437C
To claim this, I am signing this object:
@bashtoni
bashtoni / not-autoscaling.sh
Created January 9, 2018 14:48
List all instances not in an autoscaling group
aws ec2 describe-instances --filter --query 'Reservations[].Instances[?!not_null(Tags[?Key == `aws:autoscaling:groupName`].Value)] | [].[InstanceId]' --output text
@bashtoni
bashtoni / guardduty.sh
Created December 20, 2017 22:02
See all GuardDuty alerts
for detectorid in $(aws guardduty list-detectors --query DetectorIds[] --output text); do
aws guardduty get-findings --detector-id $detectorid \
--finding-ids $(aws guardduty list-findings --detector-id $detectorid --query FindingIds --output text) \
--query 'Findings[*].[Resource.InstanceDetails.InstanceId,Type,Service.Count]' --output text
done
@bashtoni
bashtoni / last-used.sh
Created December 11, 2017 13:32
Find when AWS access keys were last used
#!/bin/bash
for user in $(aws iam list-users --query 'Users[].UserName' --output text); do
for key in $(aws iam list-access-keys --user-name $user --query 'AccessKeyMetadata[].AccessKeyId' --output text); do
aws iam get-access-key-last-used --access-key-id $key --query '[UserName,AccessKeyLastUsed.LastUsedDate]' --output text
done
done
@bashtoni
bashtoni / access_key_used.sh
Created December 11, 2017 13:23
Check if a user has access keys still being used
user=foo
for key in $(aws iam list-access-keys --user-name $foo --query 'AccessKeyMetadata[].AccessKeyId' --output text); do
aws iam get-access-key-last-used --access-key-id $key
done
@bashtoni
bashtoni / rm-iam-user.sh
Created June 26, 2017 07:39
Delete AWS IAM User with MFA
#!/bin/bash
if [ -n $1 ]; then
echo "Usage: $0 <username>"
fi
user=$1
# First, find which groups the user is in and remove them from there
for group in $(aws iam list-groups-for-user --user-name $user --query Groups[].GroupName --output text); do
aws iam remove-user-from-group --user-name $user --group-name $group