Oszczędzanie — Akcje oparte o budżet

Jak automatycznie zatrzymywać zasoby AWS gdy przekroczysz budżet — AWS Budgets Actions.

Oszczędzanie — Akcje oparte o budżet

Inny sposób oszczędzania w AWS?

Wyobraź sobie, że budujesz środowisko, które ma ograniczony budżet — np. tzw. Sandbox, czy inaczej piaskownicę. Ty (lub Twój zespół) bawicie się w niej, tworząc coraz nowsze rozwiązania, ale… właśnie, przecież masz ograniczony czasowo (np. miesięcznie) budżet na takie zabawy.

AWS Budgets Actions

AWS Budgets pozwala nie tylko monitorować koszty, ale i automatycznie reagować na ich przekroczenie. To właśnie AWS Budgets Actions.

Co możemy zrobić gdy budżet zostanie przekroczony?

  1. Uruchomić Lambda — która np. zatrzyma wszystkie instancje EC2 w danym koncie
  2. Zastosować politykę IAM — odmawiającą dalszych akcji
  3. Zastosować SCP w AWS Organizations — blokując całe konto

Krok 1: Utwórz budżet

W konsoli AWS Budgets utwórz nowy budżet:

Typ: Cost Budget
Kwota: $50 USD (lub inna)
Okres: Miesięcznie

Krok 2: Skonfiguruj akcję

Po przekroczeniu np. 90% budżetu:

Opcja A — Polityka IAM (najprostsza)

Dołącz politykę odmawiającą uruchamiania nowych zasobów:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Deny",
      "Action": [
        "ec2:RunInstances",
        "rds:CreateDBInstance",
        "lambda:CreateFunction"
      ],
      "Resource": "*"
    }
  ]
}

Opcja B — Lambda zatrzymująca EC2

import boto3

def lambda_handler(event, context):
    ec2 = boto3.client('ec2')

    # Pobierz wszystkie uruchomione instancje
    response = ec2.describe_instances(
        Filters=[{'Name': 'instance-state-name', 'Values': ['running']}]
    )

    instance_ids = []
    for reservation in response['Reservations']:
        for instance in reservation['Instances']:
            instance_ids.append(instance['InstanceId'])

    if instance_ids:
        ec2.stop_instances(InstanceIds=instance_ids)
        print(f"Zatrzymano instancje: {instance_ids}")

    return {'statusCode': 200, 'body': f"Zatrzymano {len(instance_ids)} instancji"}

Krok 3: Alerty przez SNS

Nie zapomnij o alertach przez SNS — e-mail lub SMS gdy zbliżasz się do limitu:

Próg 1: 50% budżetu → alert informacyjny
Próg 2: 80% budżetu → alert ostrzegawczy
Próg 3: 100% budżetu → alert krytyczny + akcja

Dobre praktyki dla Sandbox

  • Twórz osobne konto AWS dla Sandbox (AWS Organizations)
  • Ustaw SCP blokujące drogie usługi (np. SageMaker, Redshift) jeśli nie są potrzebne
  • Automatycznie wyłączaj zasoby po godzinach pracy (EventBridge + Lambda)
  • Taguj wszystkie zasoby i monitoruj koszty po tagach

Podsumowanie

AWS Budgets Actions to proste i skuteczne narzędzie do kontroli kosztów. W środowiskach deweloperskich i sandboxach może uchronić przed nieprzyjemnymi niespodziankami na fakturze. Koszt samego AWS Budgets? Dwa pierwsze budżety są darmowe!

← Wróć do Receptury