Перейти к содержимому

Истечение API-ключей и лицензий

API-ключи многих сервисов имеют expiry, и тихо умрут в неудобный момент. Заведите единый «реестр истекающих секретов» и поставьте scheduled-функцию:

import os, datetime, json, requests
ITEMS = json.load(open("expirations.json"))
# [{"name":"OpenAI prod key","expires":"2026-08-01"}, ...]
def handler(event, context):
today = datetime.date.today()
for it in ITEMS:
exp = datetime.date.fromisoformat(it["expires"])
days = (exp - today).days
for thr in (30, 7, 1, 0):
flag = f"/tmp/exp-{it['name']}-{thr}-{exp}.flag"
if days <= thr and not os.path.exists(flag):
prio = 10 if thr <= 1 else (8 if thr == 7 else 5)
push(f"⏳ {it['name']}: {days} дн.",
f"Истекает {exp.isoformat()}. Ротируйте/продлите.",
prio)
open(flag, "w").close()
break
return {"statusCode": 200}
def push(t, m, p):
requests.post(f"{os.environ['NOTIFLY_URL']}/message",
params={"token": os.environ["NOTIFLY_TOKEN"]},
json={"title": t, "message": m, "priority": p}, timeout=5)

Для SSL-сертификатов есть отдельный готовый активный монитор kind: tls — алёрт за N дней до expiry без своего кода.