08 Apr 2023
Uno de los riesgos más significativos que se presentan cuando usamos AWS es la posibilidad de que un día nos aparezca una factura con un importe fuera de nuestro alcance. Afortunadamente, AWS pone a nuestra disposición algunos mecanismos para mitigar ese riesgo. En este post voy a explicar esos métodos y cómo configurarlos para dormir un poco más tranquilos.
Sea que estés abriendo una nueva cuenta o ya tengas una, el contenido de este post debería ayudarte a recibir facturas de AWS dentro de lo que esperamos.
Hay muchos ejemplos en la web sobre cómo alguien recibió una factura de AWS cuyo importe estaba por encima de 10.000 dólares siendo que habitualmente pagaba 100 dólares. Estos accidentes pueden ser causados por una brecha de seguridad, en la que un atacante obtuvo acceso a nuestra cuenta y se puso a crear recursos, o bien por un bug en alguna de nuestras aplicaciones (ej: una función lambda recursiva que se autoinvoque indefinidamente).
AWS nos permite configurar una alarma de facturación, para recibir un aviso en nuestro correo, o nuestro teléfono o algún endpoint vía http/https, si los costos del mes en curso superan un cierto límite. Si bien esto no impide que la factura siga creciendo, al menos nos da la chance de reaccionar rápidamente e investigar qué está sucediendo con nuestra cuenta, cuáles recursos son los que están consumiendo más de lo esperado, si alguien se ha metido en nuestra cuenta, etc.
Para configurar una alerta de facturación, vamos al servicio “Billing”:
En el menú lateral, hacemos scroll hasta “Preferencias de facturación” o “Billing preferences”:
Marcamos los dos checkboxes, “Reciba alertas de uso de nivel gratuito” y “Reciba alertas de facturación”. En el primero, especificamos además una casilla de correo.
Ya tenemos todo listo para configurar nuestra primer alarma. Podemos hacerlo por la consola, con el cli o con algún software de infraestructura como código (ejemplo: Terraform, Cloudformation).
Para hacerlo a través de la consola, te recomiendo seguir el paso a paso en la documentación de AWS.
Los pasos para configurar una alarma son:
Es importante destacar que la región especificada en todos los comandos debe ser Virginia (us-east-1) ya que allí es donde se almacenan las métricas de facturación independientemente de la región en donde tengamos nuestros recursos.
Vamos con el paso a paso.
aws sns create-topic --name alertas-de-facturacion --region us-east-1 --profile myprofile
La salida de este comando contiene el ARN del tema, el cual necesitaremos para el siguiente comando, así que lo copiamos:
{
"TopicArn": "arn:aws:sns:us-east-1:<account id>:alertas-de-facturacion"
}
Podemos crear suscripciones para diferentes protocolos. Dejo un par de ejemplos para crear suscripciones por email y por sms:
# email
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:<account id>:alertas-de-facturacion \
--protocol email \
--notification-endpoint my@email.com \
--return-subscription-arn \
--profile myprofile \
--region us-east-1
# sns
aws sns subscribe \
--topic-arn arn:aws:sns:us-east-1:<account id>:alertas-de-facturacion \
--protocol sms \
--notification-endpoint +54-1234567890 \
--return-subscription-arn \
--profile myprofile \
--region us-east-1
Esta es la salida del comando subscribe:
{
"SubscriptionArn": "arn:aws:sns:us-east-1:<account id>:alertas-de-facturacion:<uuid>"
}
Este comando crea la suscripción, pero todavía no está confirmada. Para confirmarla, podemos ir a nuestro correo, si creamos una suscripción por email, como en nuestro ejemplo o desde nuestro teléfono, si hemos indicado SMS como protocolo.
aws cloudwatch put-metric-alarm \
--alarm-name alerta-de-facturacion \
--namespace "AWS/Billing" \
--actions-enabled \
--alarm-actions arn:aws:sns:us-east-1:<account id>:alertas-de-facturacion \
--metric-name EstimatedCharges \
--statistic Maximum \
--threshold 10 \
--dimensions Name=currency,Value=USD \
--comparison-operator GreaterThanThreshold \
--period 21600 \
--evaluation-periods 1 \
--profile myprofile \
--region us-east-1
Vamos a ver qué significa cada parámetro de este comando:
Con esto ya tenemos una alarma que nos avisará cuando la facturación supere la marca que hemos elegido. Cabe aclarar que podemos crear varias alarmas, con distintos umbrales, es decir, distintos niveles de sensibilidad. A su vez podemos tener varias suscripciones para que más miembros del equipo puedan estar atentos a estas notificaciones.
En este post vimos cómo podemos crear una o más alarmas de facturación y asociarle distintos medios de comunicación para enterarnos si la factura que vamos a recibir de AWS supera cierto límite que hayamos configurado.
Existen otros métodos para monitoreo de costos que ofrecen cobertura a más casos de uso, que nos permiten enterarnos de anomalías en el uso de recursos de nuestra nube y actuar sin tener que esperar que salte nuestra alarma de facturación. Estoy hablando de los Budgets y Cost Anomaly Detection, para los cuales escribiré algún post.
¡Tu mensaje fue recibido! Una vez que sea aprobado, estará visible para los demás visitantes.
Cerrar