在 AWS-RDS 中创建 Postgres 事件触发器
Create Postgres Event Trigger in 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_superuser
或 SELECT * FROM pg_user
确认)。
我也理解为什么 RDS 可能会锁定真正的超级用户权限,但如果我无法访问事件触发器,这似乎是一个非常重要的限制。我错过了什么吗?是否可以在 RDS 上的 Postgres 中设置事件触发器?如果没有,是否有替代方法来模拟相同的功能?我知道 RDS 事件通知,但似乎没有任何选项可以订阅架构更改事件。
我知道这是一个老问题,但现在似乎得到了支持。
PostgreSQL versions 9.4.9 and later and version 9.5.4 and later
support event triggers, and Amazon RDS supports event triggers for
these versions. The master user account can be used to create, modify,
rename, and delete event triggers. Event triggers are at the DB
instance level, so they can apply to all databases on an instance. For
more information about PostgreSQL event triggers on Amazon RDS, see
Event Triggers for PostgreSQL on Amazon 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_superuser
或 SELECT * FROM pg_user
确认)。
我也理解为什么 RDS 可能会锁定真正的超级用户权限,但如果我无法访问事件触发器,这似乎是一个非常重要的限制。我错过了什么吗?是否可以在 RDS 上的 Postgres 中设置事件触发器?如果没有,是否有替代方法来模拟相同的功能?我知道 RDS 事件通知,但似乎没有任何选项可以订阅架构更改事件。
我知道这是一个老问题,但现在似乎得到了支持。
PostgreSQL versions 9.4.9 and later and version 9.5.4 and later support event triggers, and Amazon RDS supports event triggers for these versions. The master user account can be used to create, modify, rename, and delete event triggers. Event triggers are at the DB instance level, so they can apply to all databases on an instance. For more information about PostgreSQL event triggers on Amazon RDS, see Event Triggers for PostgreSQL on Amazon RDS.