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

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

<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