Tips AWS-CLI Básicos

Hola compañeros de la shell,

En esta entrada vamos a revisar el listado de comandos que me han resultado útiles para trabajar con la CLI de AWS. Por supuesto, para tener el detalle completo, nada mejor que revisar la documentación oficial:

https://docs.aws.amazon.com/index.html

Sin más preámbulos, comenzamos:

# Muestra UserID Account ID y ARN de la cuenta AWS

aws sts get-caller-identity

# Describe instancias, filtra por nombre de la instancia y consulta el InstanceId

aws ec2 describe-instances --filters 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].InstanceId'

# Consulta instancias por nombre y filtra para obtener VolumeID

aws ec2 describe-instances --filter 'Name=tag:Name,Values=Processor' --query 'Reservations[0].Instances[0].BlockDeviceMappings[0].Ebs.{VolumeId:VolumeId}'

# Consulta los recursos de la cuenta filtrando por tag

aws resourcegroupstaggingapi get-resources --tag-filters "Key=Name_Of_Key,Values=Value_of_Key"
# Crea una imagen de una instancia EC2

aws ec2 create-image --name WebServer --instance-id i-033bd534173166dfb

# Para una instancia EC2

aws ec2 stop-instances --instance-ids i-0301ce898aa6d218c

#Espera hasta que la instancia para

aws ec2 wait instance-stopped --instance-id i-0301ce898aa6d218c

# Crear snapshot de volumen

aws ec2 create-snapshot --volume-id vol-054f2702f39cbf5fc
{
    "Description": "",
    "Tags": [],
    "Encrypted": false,
    "VolumeId": "vol-054f2702f39cbf5fc",
    "State": "pending",
    "VolumeSize": 8,
    "StartTime": "2021-04-15T10:41:38.000Z",
    "Progress": "",
    "OwnerId": "546933575165",
    "SnapshotId": "snap-08c5b1d429ce5a2ab"
}

# Esperar hasta que el snapshot se haya completado

aws ec2 wait snapshot-completed --snapshot-id snap-08c5b1d429ce5a2ab

# Arrancar instancia:

aws ec2 start-instances --instance-ids i-0301ce898aa6d218c

# Esperar a que la instancia esté arrancada

aws ec2 wait instance-running --instance-id i-0301ce898aa6d218c

# Crear un cronjob para guardar snapshot de datos cada minuto

echo "* * * * *  aws ec2 create-snapshot --volume-id vol-054f2702f39cbf5fc 2>&1 >> /tmp/cronlog" > cronjob

# To schule the previous created cron job

crontab cronjob

# Detiene el job crontab

crontab -r

# Para comprobar los snapshots que se van creando de ese volumen

aws ec2 describe-snapshots --filters "Name=volume-id,Values=vol-054f2702f39cbf5fc"

# Lista los snapshots que corresponden a un volumen

aws ec2 describe-snapshots --filters "Name=volume-id, Values=vol-054f2702f39cbf5fc" --query 'Snapshots[*].SnapshotId'



# Eliminar AMI y sus EBS asociados

	SNAPSHOTS=`aws ec2 describe-images --image-ids AMI-ID --region eu-west-1 --query 'Images[*].BlockDeviceMappings[*].Ebs.SnapshotId' --output text`

	aws ec2 deregister-image --image-id AMI-ID

	for SNAPSHOT in $SNAPSHOTS ; do aws ec2 delete-snapshot --snapshot-id $SNAPSHOT; done

# Eliminar Volume por volume id

aws ec2 delete-volume --volume-id

# Activar versionado en bucket

aws s3api put-bucket-versioning --bucket my-bucket --versioning-configuration Status=Enabled

# Copia de fichero en bucket a local

aws s3 cp s3://lab_ema_test/fichero.txt ./
# Copia el contenido del directorio actual al bucket s3

aws s3 sync --delete . s3://test-lab-ema

# Copia el contenido del directorio actual al bucket s3 (y elimina los ficheros/directorios no presentes)

aws s3 sync --delete . s3://test-lab-ema

# Lista las versiones de ficheros de un bucket

aws s3api list-object-versions --bucket test-lab-ema

# Recupera una versión de un fichero de un bucket s3

 aws s3api get-object --bucket test-lab-ema file3.txt_recuperado --key file3.txt --version-id  ZP2BktVf3vEcLwAcY4Nnl.q5ddEg5IRW
 
# Contenido del bucket s3 remoto

aws s3 ls s3://test-lab-ema/

# Describe los volumenes de tu cuenta

aws ec2 describe-volumes

# Destruye instancias EC2 pasadas por parámetro

aws ec2 terminate-instances --instance-ids INSTANCE_ID

# Obtener log de una instancia EC2:

ec2 get-console-output --instance-id %id%

# Describe el nombre de las instancias EC2 de la cuenta

aws ec2 describe-instances --instance-ids %id% --query "Reservations[*].Instances[*].PublicDnsName"

# Describe el status de la instancia

aws ec2 describe-instance-status

## COST COMMANDS

# Coste mensual agrupado por servicio

aws ce get-cost-and-usage --time-period Start=2022-01-01,End=2022-11-01 --granularity MONTHLY --metrics "UnblendedCost" --group-by Type=DIMENSION,Key=SERVICE

# Coste Mensual para la cuenta (Ejemplo mes de Septiembre)

aws ce get-cost-and-usage --time-period Start="2022-09-01,End=2022-09-30" --granularity MONTHLY --metrics "BlendedCost"

# Coste Estimado (fecha de inicio debe ser al menos el dia de hoy)

aws ce get-cost-forecast --time-period Start="2022-10-01,End=2022-10-30" --granularity MONTHLY --metric "BLENDED_COST"

# Coste Mensual de la cuenta (Ejemplo mes de Septiembre) desagregado por servicios AWS

aws ce get-cost-and-usage --time-period Start="2022-09-01,End=2022-09-30" --granularity MONTHLY --metrics "BlendedCost" --group-by Type=DIMENSION,Key=SERVICE

# Coste Mensual Desagregado por TAG (el nombre de la tag por la que desagregamos en el ejemplo es "Name")

aws ce get-cost-and-usage --time-period Start="2022-09-01,End=2022-09-30" --granularity MONTHLY --metrics "BlendedCost" --group-by Type=TAG,Key=Name

# Coste mensual filtrado por S3 

aws ce get-cost-and-usage \
--time-period Start=2022-09-01,End=2022-09-30 \
--granularity MONTHLY \
--metrics "BlendedCost" "UnblendedCost" "UsageQuantity" \
--group-by Type=DIMENSION,Key=SERVICE Type=TAG,Key=Environment \
--filter '{ "Dimensions": { "Key": "SERVICE", "Values": [ "Amazon Simple Storage Service" ] }}'

## END COST COMMANDS

Espero que os sirva.

Nos vemos al otro lado de la pantalla negra.

Publicado en Sin categoría | Deja un comentario