在AWS-RDS中创建Postgres事件触发器

时间:2016-03-22 15:29:56

标签: postgresql amazon-web-services aws-rds

我的RDS Postgres数据库需要一个事件触发器。最终,我需要在架构发生变化时得到通知。在普通的Postgres(即非RDS实例)中,这很好用。但是,在RDS中运行以下内容:

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

结果:

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

据我所知,RDS上最具特权的角色是rds_superuser。我已将rds_superuser授予我的帐户(例如grant rds_superuser to someuser;)。但我仍然无法创建事件触发器。我确实理解rds_superuser与pg超级用户的角色不同(可以通过运行:SHOW is_superuserSELECT * FROM pg_user来确认)。 我也理解为什么RDS可能会锁定真正的超级用户权限,但如果我无法访问事件触发器,这似乎是一个非常重要的限制。我错过了什么吗?是否可以在RDS上的Postgres中设置事件触发器?如果没有,是否有任何替代模仿相同的功能?我知道RDS事件通知,但似乎没有任何选项来订阅架构更改事件。

1 个答案:

答案 0 :(得分:1)

我知道这是一个老问题,但现在似乎得到了支持。

  

PostgreSQL版本9.4.9及更高版本以及9.5.4及更高版本   支持事件触发器,Amazon RDS支持事件触发器   这些版本。主用户帐户可用于创建,修改,   重命名,并删除事件触发器。事件触发器位于DB   实例级别,因此它们可以应用于实例上的所有数据库。对于   有关Amazon RDS上的PostgreSQL事件触发器的更多信息,请参阅   Amazon RDS上PostgreSQL的事件触发器。

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