Lista de comandos de consola de AWS

La AWS CLI (Command Line Interface) es una herramienta poderosa que te permite interactuar con los servicios de AWS desde tu terminal. Ya sea que estés automatizando tareas, gestionando recursos o simplemente explorando tus servicios, esta lista de comandos esenciales te puede ayudar a moverte con soltura por el ecosistema de AWS con la consola.

General

Eliminar paginación cli

export AWS_PAGER=""

Conseguir número cuenta

 aws sts get-caller-identity --query 'Account' --output text --profile admin

EC2

Cómo saber que versión de AMZ Linux AMI tengo

cat /etc/os-release

NAME="Amazon Linux AMI"
VERSION="2017.03"
ID="amzn"
ID_LIKE="rhel fedora"
VERSION_ID="2017.03"
PRETTY_NAME="Amazon Linux AMI 2017.03"
ANSI_COLOR="0;33"
CPE_NAME="cpe:/o:amazon:linux:2017.03:ga"
HOME_URL="http://aws.amazon.com/amazon-linux-ami/"

Version 2017.03 equivale a Linux AMI 1

cat /etc/os-release

NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"

Versión 2 equivale a Linux AMI 2

Listar EC2 con AZ, ID

aws ec2 describe-instances --query 'Reservations[].Instances[].{Instance:InstanceId,AZ:Placement.AvailabilityZone,Name:Tags[?Key==Name]|[0].Value}' --output table

Listar EC2 y mostrar SecurityGroupID

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[SecurityGroups[*].GroupId]' --output text | awk 'BEGIN { OFS="\n"}; {$1=$1; print $0 }'| sort | uniq 

mismo comando pero también mostrando las características del SG

aws ec2 describe-instances --query 'Reservations[*].Instances[*].[SecurityGroups[*].GroupId]' --output text | awk 'BEGIN { OFS="\n"}; {$1=$1; print $0 }'| sort | uniq | xargs aws ec2 describe-security-groups --group-id

LAMBDA

Listar funciones agrupadas por Runtime

aws lambda list-functions | jq ".Functions | group_by(.Runtime)|[.[]|{ (.[0].Runtime): [.[]|{ name: .FunctionName, timeout: .Timeout, memory: .MemorySize }] }]"

S3

Cambiar owner de todos los objetos

aws s3 ls s3://$BUCKET_DEST/ --recursive --profile default|awk {'print $4'}|xargs -I {} aws s3api put-object-acl --bucket $BUCKET_DEST --acl bucket-owner-full-control --key {} --profile default

Cambiar un objeto s3 de Glacier a STANDARD

Tenemos una lista de objetos que tenemos que recuperar del Vault de Glacier y moverlos a S3 STANDAR.

Paso 1, recuperar los archivos. Iniciar una serie de peticiones a S3 para habilitar los archivos durante unos días.

for ... (whatever);
do
aws s3api restore-object --bucket $BUCKET --key $OBJECT --restore-request '{"Days":25,"GlacierJobParameters":{"Tier":"Standard"}}'
done

Una vez hemos hecho las llamadas hemos de esperar.

Cuando el tiempo pase, si accedemos por consola veremos que S3 permite hacer un “Download” del fichero. Lo bajamos a local.

for object in whatever;
aws s3 cp s3://$BUCKET/$object .
done

Ahora solo faltaría volverlo a subir, es decir, sobreescribiendo y configurando la clase STANDARD.

for object in whatever;
do
aws s3 cp $object s3://$BUCKET/$object --storage-class STANDARD;
done

Recurso

EBS

Mostrar el volumen total usado en Gigabytes de la cuenta

aws ec2 describe-volumes --query 'sum(Volumes[].Size)'

RDS

Listar identificadores de RDS

aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier]' --output text

Listar snapshots y filtrar por algún tipo de string

aws rds describe-db-snapshots | jq '.DBSnapshots[]|.DBSnapshotIdentifier' |grep beta

List all instances queriyng multiples attributes

aws rds describe-db-instances --query 'DBInstances[*].{ID:DBInstanceIdentifier,Name:DBName,EngineName:Engine,Version:EngineVersion,
   Public:PubliclyAccessible,Type:DBInstanceClass,OptionGroup:OptionGroupMemberships[*].OptionGroupName|[0],VpcId:DBSubnetGroup.VpcId}' --output text

Listar security groups únicos en RDS

for sg in $(for rds in $(aws rds describe-db-instances --query 'DBInstances[*].[DBInstanceIdentifier]' --output text);do aws rds describe-db-instances --db-instance-identifier $rds --query 'DBInstances[*].[VpcSecurityGroups]' --output text|awk 'BEGIN { OFS="\n"}; {$1=$1; print $0 }'|grep -v active|sort;done); do echo $sg; done | uniq

IAM

Listar keys

for user in $(aws iam list-users --output text | awk '{print $NF}'); do
    aws iam list-access-keys --user $user --output text
done

Listar IAM Roles y buscar string

aws iam list-roles --profile sts | jq -r '.Roles[] | [.Arn]' |grep scaling

aws iam get-role --role-name nombre-del-role --profile sts | jq -r '.Role.AssumeRolePolicyDocument.Statement[].Principal.Service'

aws iam list-roles --profile sts | jq -r '.Roles[].AssumeRolePolicyDocument.Statement[].Principal.Service'|grep -w "^application-autoscaling.amazonaws.com"

Codepipeline

Listar codepipeline

aws  codepipeline list-pipelines |grep name|awk {'print $2'}|sed 's/,$//' |tr -d \"

ECS

aws ecs describe-tasks --cluster beta --tasks cc04414fea7b4ab29aab5b6de981d087 --profile sts |jq -r '.tasks[] | [.taskArn, .lastStatus,.healthStatus,.group]'

ECR

Filtrar imágenes en el repositorio y obtener las últimas que fueron subidas

aws ecr describe-images --repository-name base-tomcat/java7-tomcat8 --query 'sort_by(imageDetails,& imagePushedAt)[-1].imagePushedAt' --output text --profile prod --region eu-west-1 |sort -nr |head -1

Links

Leave a Reply

Your email address will not be published. Required fields are marked *