Appendix. Fast Fixes

These useful small bits of code will help you save time and get the most out of AWS.

Set your AWS_ACCOUNT_ID to a bash variable:

export AWS_ACCOUNT_ID=$(aws sts get-caller-identity \
--query Account --output text)

Get the most recently created CloudWatch log group name:

aws logs describe-log-groups --output=yaml \
--query 'reverse(sort_by(logGroups,&creationTime))[:1].{Name:logGroupName}'

Tail the logs for the CloudWatch group:

aws logs tail <<LOGGROUPNAME>> --follow --since 10s

Delete all log groups that match a text pattern and prompt yes/no for confirmation:

aws logs describe-log-groups | \
jq ".logGroups[].logGroupName" | grep -i <<pattern>> | \
xargs -p -I % aws logs delete-log-group --log-group-name %

Stop all running instances for your current working Region (H/T: Curtis Rissi):

aws ec2 stop-instances \
--instance-ids $(aws ec2 describe-instances \
--filters "Name=instance-state-name,Values=running" --query "Reservations[].Instances[].[InstanceId]"
--output text | tr '\n' ' ')

Determine the user making CLI calls:

aws sts get-caller-identity --query UserId --output text

Generate YAML input for your CLI command and use it:

aws ec2 create-vpc --generate-cli-skeleton yaml-input > input.yaml
#Edit input.yaml - at a minimum modify CidrBlock, DryRun, ResourceType, and Tags
aws ec2 create-vpc --cli-input-yaml file://input.yaml

List the AWS Region names and endpoints in a table format:

aws ec2 describe-regions --output table

Find interface VPC endpoints ...

Get AWS Cookbook now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.