AWS Aliases
Some handy, awscli
commands I use.
#!/bin/bash
aws-who-am-i() {
# aws-who-am-i
aws sts get-caller-identity --output text "${@}"
}
aws-eks-update-config() {
# aws-update-eks-config eu-west-1 my-aws-kube-cluster
aws eks --region "${1}" update-kubeconfig --name "${2}" --alias "${2}"
}
aws-ec2-running-instances() {
aws ec2 describe-instances \
--region "${1}" \
--filter Name=instance-state-name,Values=running \
--output table \
--query 'Reservations[].Instances[].{ID: InstanceId,Hostname: PublicDnsName,Name: Tags[?Key==`Name`].Value | [0],Type: InstanceType, Platform: Platform || `Linux`}'
}
aws-ec2-list-sgs() {
aws ec2 describe-security-groups --region "${1}" --query "SecurityGroups[].[GroupId, GroupName]" --output table
}
aws-ec2-get-ebs() {
# aws-get-ebs eu-west-2
aws ec2 describe-volumes --filters Name=status,Values=available --region "${1}" | jq --raw-output ".Volumes[].VolumeId"
}
aws-ec2-cleanup-ebs() {
# aws-cleanup-ebs eu-west-2
aws ec2 describe-volumes --filters Name=status,Values=available --region "${1}" | jq --raw-output ".Volumes[].VolumeId" | while read VOLUME_ID; do \
aws ec2 delete-volume --volume-id $VOLUME_ID --region "${1}"
done
}
aws-eks-list-clusters() {
# aws-list-clusters us-west-1
aws eks list-clusters --region "${1}" \
| jq -r '.clusters[]'
}
aws-ecr-login() {
# aws-ecr-login eu-west-1
endpoint=$(aws ecr get-authorization-token --query 'authorizationData[].proxyEndpoint' --region "${1}" --output text)
passwd=$(aws ecr get-authorization-token --query 'authorizationData[].authorizationToken' --region "${1}" --output text | base64 --decode | cut -d: -f2)
docker login -u AWS -p $passwd $endpoint
}
aws-rotate-access-keys() {
# aws-rotate-access-keys user-account-name aws-profile
AWS_USERNAME=$1
AWS_PROFILE=${2:-default}
echo "Using $AWS_PROFILE..."
CURRENT_ACCESS_KEYS=$(aws iam list-access-keys --profile $AWS_PROFILE --user-name ${AWS_USERNAME})
# Test amount of keys
if [[ $(echo $CURRENT_ACCESS_KEYS | jq -r '.AccessKeyMetadata | length') -gt 1 ]]; then
echo "You've got multiple Access keys within your account. Please remove the unused key"
exit 1
fi
CURRENT_ACCESS_KEY=$(echo $CURRENT_ACCESS_KEYS | jq -r '.AccessKeyMetadata[].AccessKeyId')
echo "Current access list $CURRENT_ACCESS_KEY"
echo "Creating new AWS Access key..."
NEW_ACCESS_KEY=$(aws iam create-access-key --profile $AWS_PROFILE --user-name $AWS_USERNAME)
echo $NEW_ACCESS_KEY
NEW_ACCESS_KEY_ID=$(echo "${NEW_ACCESS_KEY}" | jq -r '.AccessKey.AccessKeyId')
NEW_SECRET_ACCESS_KEY=$(echo "${NEW_ACCESS_KEY}" | jq -r '.AccessKey.SecretAccessKey')
echo "New AccessKeyId: $NEW_ACCESS_KEY_ID"
echo "Setting old $CURRENT_ACCESS_KEY to inactive"
AWS_PAGER='' aws iam update-access-key --profile $AWS_PROFILE --access-key-id $CURRENT_ACCESS_KEY --status Inactive --user-name $AWS_USERNAME
echo "Replacing old access keys in ~/.aws/credentials"
aws configure --profile $AWS_PROFILE <<EOM
$NEW_ACCESS_KEY_ID
$NEW_SECRET_ACCESS_KEY
eu-west-1
json
EOM
echo "Keys rotated..."
}
i use alaises loads, which live in my home directory under ~/.alias
then inside my .zshrc
I have the following to make sure they’re sourced.
# source alises
for f in $(find $HOME/.alias/*.alias -type f); do source $f; done