-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
946d6a2
commit acedad6
Showing
1 changed file
with
138 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1,138 @@ | ||
# HerbsAndSpices | ||
# HerbsAndSpices | ||
|
||
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 for the Region you are currently using: | ||
``` | ||
aws ec2 describe-vpc-endpoint-services \ | ||
--query ServiceDetails[*].ServiceName | ||
``` | ||
|
||
Populate data into a DynamoDB table: | ||
``` | ||
aws ddb put table_name '[{key1: value1}, {key2: value2}]' | ||
``` | ||
|
||
Determine the current supported versions for a particular database engine (e.g., aurora-postgresql): | ||
``` | ||
aws rds describe-db-engine-versions --engine aurora-postgresql \ | ||
--query "DBEngineVersions[].EngineVersion" | ||
``` | ||
|
||
Delete network interfaces associated with a security group and prompt for each delete (answer yes/no to delete or skip): | ||
``` | ||
aws ec2 describe-network-interfaces \ | ||
--filters Name=group-id,Values=$SecurityGroup \ | ||
--query NetworkInterfaces[*].NetworkInterfaceId \ | ||
--output text | tr '\t' '\n' | xargs -p -I % \ | ||
aws ec2 delete-network-interface --network-interface-id % | ||
``` | ||
|
||
Find your default VPC (if you have one) for a Region: | ||
``` | ||
aws ec2 describe-vpcs --vpc-ids \ | ||
--query 'Vpcs[?IsDefault==`true`]' | ||
``` | ||
|
||
Enable encryption by default for new EBS volumes in a Region: | ||
``` | ||
aws ec2 enable-ebs-encryption-by-default | ||
``` | ||
|
||
List all AWS Regions: | ||
``` | ||
aws ssm get-parameters-by-path \ | ||
--path /aws/service/global-infrastructure/regions \ | ||
--output text --query Parameters[*].Name | tr "\t" "\n" | ||
``` | ||
|
||
List all AWS services: | ||
``` | ||
aws ssm get-parameters-by-path \ | ||
--path /aws/service/global-infrastructure/services \ | ||
--output text --query Parameters[*].Name \ | ||
| tr "\t" "\n" | awk -F "/" '{ print $6 }' | ||
``` | ||
|
||
List all services available in a region (e.g., us-east-1): | ||
``` | ||
aws ssm get-parameters-by-path \ | ||
--path /aws/service/global-infrastructure/regions/us-east-1/services \ | ||
--output text --query Parameters[*].Name | tr "\t" "\n" \ | ||
| awk -F "/" '{ print $8 }' | ||
``` | ||
|
||
List all Regions that have a particular service available (e.g., SNS): | ||
``` | ||
aws ssm get-parameters-by-path \ | ||
--path /aws/service/global-infrastructure/services/sns/regions \ | ||
--output text --query Parameters[*].Value | tr "\t" "\n" | ||
``` | ||
|
||
Create a presigned URL for an object in S3 that expires in a week: | ||
``` | ||
aws s3 presign s3://<<BucketName>>/<<FileName>> \ | ||
--expires-in 604800 | ||
``` | ||
|
||
Find Availability Zone IDs for a Region that are consistent across accounts: | ||
``` | ||
aws ec2 describe-availability-zones --region $AWS_REGION | ||
``` | ||
|
||
Set the Region by grabbing the value from an EC2 instance’s metadata: | ||
``` | ||
export AWS_DEFAULT_REGION=$(curl --silent http://169.254.169.254/latest/dynamic/instance- | ||
identity/document \ | ||
| awk -F'"' ' /region/ {print $4}') | ||
``` |