2016-03-22 2 views
5

Ich brauche ein Ereignis Trigger auf meiner RDS Postgres-Datenbank. Letztendlich muss ich benachrichtigt werden, wenn sich das Schema ändert. In einfachen alten Postgres (d. H. Einer Nicht-RDS-Instanz) funktioniert das gut. die folgenden in RDS läuft jedoch:Erstellen Postgres Event Trigger in AWS-RDS

CREATE EVENT TRIGGER audit ON ddl_command_start EXECUTE PROCEDURE stat_audit();

Ergebnisse in:

ERROR: permission denied to create event trigger 
HINT: Must be superuser to create an event trigger. 

Soweit ich die privilegierte Rolle auf RDS verstehen ist rds_superuser. Ich habe rds_superuser meinem Konto zugewiesen (z. B. grant rds_superuser to someuser;). Trotzdem kann ich den Ereignisauslöser nicht erstellen. Ich verstehe, dass der rds_superuser nicht genau dieselbe Rolle wie der pg-Superuser ist (was entweder durch Ausführen von: SHOW is_superuser oder SELECT * FROM pg_user bestätigt werden kann). Ich verstehe auch, warum RDS wahre Superuser-Privilegien sperren kann, aber es scheint eine ziemlich signifikante Einschränkung zu sein, wenn ich nicht auf Ereignis-Trigger zugreifen kann. Fehle ich etwas? Ist es möglich, einen Event-Trigger in Postgres auf RDS zu setzen? Wenn nicht, gibt es eine Alternative, die gleiche Funktionalität nachzuahmen? Ich kenne RDS-Ereignisbenachrichtigungen, aber es scheint keine Option zum Abonnieren von Schemaänderungsereignissen zu geben.

+0

gleiche Problem hier:/haben herausgefunden, Sie eine Lösung? – arod

+0

@arod meine Forschung in der Gemeinschaft (einschließlich Amazon) fand keine Optionen. Ich habe nichts Konkretes gefunden, was in RDS nicht möglich ist. Es scheint, dass Sie einen pg-Super-User benötigen, um pg-Event-Trigger zu setzen. In RDS ist dies nicht möglich (nur rds_superuser). Ich war gezwungen, einen anderen Weg zu gehen. – scottjustin5000

+0

Welchen Weg haben Sie genommen? – arod

Antwort

1

Ich weiß, das ist eine alte Frage, aber das scheint jetzt unterstützt zu werden.

PostgreSQL-Versionen 9.4.9 und höher sowie Version 9.5.4 und später Unterstützung von Ereignis-Triggern und Amazon RDS unterstützen Ereignis für diese Versionen auslöst. Das Hauptbenutzerkonto kann verwendet werden, um Ereignisauslöser zu erstellen, zu ändern, umzubenennen und zu löschen. Ereignisauslöser befinden sich auf der Instanz-Ebene DB und können daher auf alle Datenbanken einer Instanz angewendet werden. Für Weitere Informationen zu PostgreSQL-Ereignisauslösern auf Amazon RDS finden Sie unter Ereignisauslöser für PostgreSQL auf Amazon RDS.

http://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/CHAP_PostgreSQL.html#PostgreSQL.Concepts.General.FeatureSupport.EventTriggers