Pular para o conteúdo
Skillpedia
Automações48 mil · #2240

aws-cost-cleanup

Automatiza a limpeza de recursos que não estão sendo usados na AWS. Isso ajuda a reduzir os custos da sua conta na nuvem.

O que ela faz

Esta ferramenta ajuda a encontrar e remover recursos da Amazon Web Services (AWS) que você não está usando. Isso evita que você pague por coisas que não precisa, economizando dinheiro.

Quando usar

  • ✓Quando você quer reduzir seus gastos na AWS.
  • ✓Quando você tem certeza de que alguns recursos não são mais necessários.
  • ✓Para organizar sua conta AWS e evitar acúmulo de itens esquecidos.

Exemplo do que pedir para a IA

“Encontre recursos não utilizados na minha conta AWS e me diga quanto posso economizar.”

Quer saber mais? Abra as seções abaixo.

Como usar

O jeito mais fácil: copie a mensagem abaixo e cole no Claude, ChatGPT, Cursor ou outra IA. Ela lê a skill e segue as instruções.

Link da skill

https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/aws-cost-cleanup/SKILL.md

Mensagem pronta para colar

Use esta skill para me ajudar: https://github.com/sickn33/agentic-awesome-skills/blob/main/plugins/agentic-awesome-skills-claude/skills/aws-cost-cleanup/SKILL.md Leia o arquivo SKILL.md desse link e siga as instruções dele na minha tarefa.
Como funciona

A ferramenta verifica sua conta AWS em busca de recursos como discos de armazenamento sem uso, instâncias paradas há muito tempo e endereços de IP que não estão conectados a nada. Ela lista esses itens e estima a economia de custos.

Instalação

Jeito mais fácil: copie o link da skill e cole no Claude, ChatGPT ou Cursor pedindo para seguir as instruções.

No terminal (Claude Code, Codex, Cursor), na pasta do projeto:

npx skills add sickn33/agentic-awesome-skills --skill aws-cost-cleanup

Ou baixe só o arquivo:

curl -L https://raw.githubusercontent.com/sickn33/agentic-awesome-skills/main/plugins/agentic-awesome-skills-claude/skills/aws-cost-cleanup/SKILL.md -o SKILL.md
Conteúdo técnico (SKILL.md)

Tradução do texto original do autor no GitHub. Os comandos e códigos estão como no original.

Limpeza de Custos na AWS

Automatize a identificação e remoção de recursos AWS não utilizados para eliminar desperdícios.

Quando Usar Esta Habilidade

Use esta habilidade quando precisar limpar automaticamente recursos AWS não utilizados para reduzir custos e eliminar desperdícios.

Alvos de Limpeza Automatizada

Armazenamento

  • Volumes EBS não anexados
  • Snapshots EBS antigos (>90 dias)
  • Uploads multipart S3 incompletos
  • Versões S3 antigas em buckets versionados

Computação

  • Instâncias EC2 paradas (>30 dias)
  • AMIs não utilizadas e snapshots associados
  • IPs Elásticos não utilizados

Rede

  • Load Balancers Elásticos não utilizados
  • NAT Gateways não utilizados
  • ENIs órfãs

Scripts de Limpeza

Limpeza Segura (Primeiro Dry-Run)

#!/bin/bash
# cleanup-unused-ebs.sh

echo "Finding unattached EBS volumes..."
VOLUMES=$(aws ec2 describe-volumes \
  --filters Name=status,Values=available \
  --query 'Volumes[*].VolumeId' \
  --output text)

for vol in $VOLUMES; do
  echo "Would delete: $vol"
  # Uncomment to actually delete:
  # aws ec2 delete-volume --volume-id $vol
done
#!/bin/bash
# cleanup-old-snapshots.sh

CUTOFF_DATE=$(date -d '90 days ago' --iso-8601)

aws ec2 describe-snapshots --owner-ids self \
  --query "Snapshots[?StartTime<='$CUTOFF_DATE'].[SnapshotId,StartTime,VolumeSize]" \
  --output text | while read snap_id start_time size; do
  
  echo "Snapshot: $snap_id (Created: $start_time, Size: ${size}GB)"
  # Uncomment to delete:
  # aws ec2 delete-snapshot --snapshot-id $snap_id
done
#!/bin/bash
# release-unused-eips.sh

aws ec2 describe-addresses \
  --query 'Addresses[?AssociationId==null].[AllocationId,PublicIp]' \
  --output text | while read alloc_id public_ip; do
  
  echo "Would release: $public_ip ($alloc_id)"
  # Uncomment to release:
  # aws ec2 release-address --allocation-id $alloc_id
done

Automação de Ciclo de Vida do S3

# Apply lifecycle policy to transition old objects to cheaper storage
cat > lifecycle-policy.json <<EOF
{
  "Rules": [
    {
      "Id": "Archive old objects",
      "Status": "Enabled",
      "Transitions": [
        {
          "Days": 90,
          "StorageClass": "STANDARD_IA"
        },
        {
          "Days": 180,
          "StorageClass": "GLACIER"
        }
      ],
      "NoncurrentVersionExpiration": {
        "NoncurrentDays": 30
      },
      "AbortIncompleteMultipartUpload": {
        "DaysAfterInitiation": 7
      }
    }
  ]
}
EOF

aws s3api put-bucket-lifecycle-configuration \
  --bucket my-bucket \
  --lifecycle-configuration file://lifecycle-policy.json

Calculadora de Impacto de Custo

#!/usr/bin/env python3
# calculate-savings.py

import boto3
from datetime import datetime, timedelta

ec2 = boto3.client('ec2')

# Calculate EBS volume savings
volumes = ec2.describe_volumes(
    Filters=[{'Name': 'status', 'Values': ['available']}]
)

total_size = sum(v['Size'] for v in volumes['Volumes'])
monthly_cost = total_size * 0.10  # $0.10/GB-month for gp3

print(f"Unattached EBS Volumes: {len(volumes['Volumes'])}")
print(f"Total Size: {total_size} GB")
print(f"Monthly Savings: ${monthly_cost:.2f}")

# Calculate Elastic IP savings
addresses = ec2.describe_addresses()
unused = [a for a in addresses['Addresses'] if 'AssociationId' not in a]

eip_cost = len(unused) * 3.65  # $0.005/hour * 730 hours
print(f"\nUnused Elastic IPs: {len(unused)}")
print(f"Monthly Savings: ${eip_cost:.2f}")

print(f"\nTotal Monthly Savings: ${monthly_cost + eip_cost:.2f}")
print(f"Annual Savings: ${(monthly_cost + eip_cost) * 12:.2f}")

Lambda de Limpeza Automatizada

import boto3
from datetime import datetime, timedelta

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')
    
    # Delete unattached volumes older than 7 days
    volumes = ec2.describe_volumes(
        Filters=[{'Name': 'status', 'Values': ['available']}]
    )
    
    cutoff = datetime.now() - timedelta(days=7)
    deleted = 0
    
    for vol in volumes['Volumes']:
        create_time = vol['CreateTime'].replace(tzinfo=None)
        if create_time < cutoff:
            try:
                ec2.delete_volume(VolumeId=vol['VolumeId'])
                deleted += 1
                print(f"Deleted volume: {vol['VolumeId']}")
            except Exception as e:
                print(f"Error deleting {vol['VolumeId']}: {e}")
    
    return {
        'statusCode': 200,
        'body': f'Deleted {deleted} volumes'
    }

Fluxo de Trabalho de Limpeza

  1. Fase de Descoberta (Somente leitura)
    • Execute todos os comandos describe

…

Perguntas frequentes

Quais tipos de recursos a ferramenta pode encontrar?

Ela pode encontrar volumes de disco (EBS) não anexados, snapshots antigos, uploads de S3 incompletos, versões antigas de arquivos no S3, instâncias paradas por mais de 30 dias, AMIs não utilizadas, IPs elásticos não utilizados, balanceadores de carga, gateways NAT e interfaces de rede (ENIs) órfãs.

A ferramenta exclui os recursos automaticamente?

A ferramenta pode ser configurada para excluir recursos, mas é recomendado fazer um 'dry-run' (simulação) primeiro para ver o que seria excluído. Ela também oferece scripts para exclusão manual ou configuração de regras de ciclo de vida para o S3.

Como posso ter certeza de que não vou excluir algo importante?

É crucial seguir o 'checklist de segurança'. Sempre execute em modo de simulação primeiro, verifique se os recursos não têm dependências, confira as tags para identificar o dono, notifique as partes interessadas e, se possível, teste em um ambiente de não produção antes de excluir permanentemente.

Detalhes

Descrição original do autor

Automated cleanup of unused AWS resources to reduce costs

repo: sickn33/agentic-awesome-skills

Popularidade

Estrelas no GitHub
48 mil
Posição no ranking
#2240
Licença
MIT
Atualizada em
15/10/2026

Essa skill é útil?

0

Entre para votar.

Comentários

  • …

Mais skills deste repositório

Skills parecidas