import os import json import psycopg2 def main(event, context): pg_dsn = os.environ.get( "PG_DSN", "postgresql://super:BQUF5ruECa1ZFlq4wYt3gPJUEmtBMkA9QNK4MM5Sd8al4ArMDlmT16DIKHYBPyif" "@postgresqlk8s-master.dc5db45d-f8b4-4fd0-ad33-ec4dd017f2d5.svc.cluster.local:5432" "/sqsdb?sslmode=disable", ) # Извлекаем тело сообщения из SQS (POST от sqs-consumer) # event — Flask Request object: используем .data (bytes) или .get_json() try: data = event.get_json(force=True, silent=False) except Exception: raw = getattr(event, "data", None) or getattr(event, "body", b"") if isinstance(raw, (bytes, bytearray)): raw = raw.decode("utf-8") data = json.loads(raw) if raw else {} conn = psycopg2.connect(pg_dsn) try: cur = conn.cursor() cur.execute( """ INSERT INTO weather_metrics (city, country, temperature, feels_like, humidity, pressure, wind_speed, description, recorded_at) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, to_timestamp(%s)) """, ( data["city"], data["country"], data["temperature"], data["feels_like"], data["humidity"], data["pressure"], data["wind_speed"], data["description"], data["owm_timestamp"], ), ) conn.commit() cur.close() finally: conn.close() return {"status": "ok", "city": data["city"], "temp": data["temperature"]}