AWS Commands

General

Eliminar paginación cli

export AWS_PAGER=""

Conseguir número cuenta

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

EC2

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

<code>aws s3 ls s3://$BUCKET_DEST/ --recursive --profile default|awk {'print $4'}|xargs -I {} aws s3api put-object-acl --bucket </code><code>$BUCKET_DEST</code> --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

<code>aws ec2 describe-volumes --query 'sum(Volumes[].Size)'</code>

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

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]'

Links