Oszczędzanie — Akcje oparte o budżet
Jak automatycznie zatrzymywać zasoby AWS gdy przekroczysz budżet — AWS Budgets Actions.
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?
- Uruchomić Lambda — która np. zatrzyma wszystkie instancje EC2 w danym koncie
- Zastosować politykę IAM — odmawiającą dalszych akcji
- 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!