You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Aurora PostgreSQL与AWS SQS集成:如何用触发器推送新插入数据

在Aurora PostgreSQL中实现插入行推送至AWS SQS的触发器

1. 配置IAM权限

  • 为Aurora PostgreSQL集群关联的IAM角色创建并附加以下权限策略,允许其向目标SQS队列发送消息:
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": "sqs:SendMessage",
            "Resource": "arn:aws:sqs:<你的AWS区域>:<你的账户ID>:<目标队列名称>"
        }
    ]
}
  • 确保Aurora集群已启用IAM数据库认证,且上述角色已绑定到集群。

2. 安装AWS PostgreSQL扩展

在Aurora PostgreSQL中执行SQL,安装官方提供的AWS服务调用扩展:

CREATE EXTENSION IF NOT EXISTS aws_commons;
CREATE EXTENSION IF NOT EXISTS aws_sqs;

3. 创建触发器函数

编写PL/pgSQL函数,将插入的行数据序列化为JSON并推送至SQS:

CREATE OR REPLACE FUNCTION send_row_to_sqs()
RETURNS TRIGGER AS $$
DECLARE
    target_queue_url TEXT := 'https://sqs.<你的AWS区域>.amazonaws.com/<你的账户ID>/<目标队列名称>';
    msg_body JSON;
BEGIN
    -- 将新插入的行转换为JSON格式
    msg_body := row_to_json(NEW);
    
    -- 调用SQS发送消息,使用集群关联的IAM角色认证
    PERFORM aws_sqs.send_message(
        target_queue_url,
        msg_body::TEXT,
        aws_commons.create_aws_credentials('<IAM角色ARN>', '')
    );
    
    RETURN NEW;
EXCEPTION
    WHEN OTHERS THEN
        -- 可选:记录错误到自定义日志表,避免触发器失败导致插入回滚
        RAISE NOTICE 'SQS推送失败: %', SQLERRM;
        RETURN NEW; -- 即使推送失败,仍允许插入操作完成
END;
$$ LANGUAGE plpgsql;
  • 替换target_queue_url和<IAM角色ARN>为实际值;若集群使用默认服务角色,可留空credentials参数,Aurora会自动使用绑定的IAM角色。

4. 创建触发器

将函数绑定到目标表的INSERT事件上:

CREATE TRIGGER trigger_after_insert_to_sqs
AFTER INSERT ON <你的目标表名称>
FOR EACH ROW
EXECUTE FUNCTION send_row_to_sqs();

关键注意事项

  • 性能影响:同步触发器会增加插入操作的延迟,对性能敏感的场景,可改用异步方案(比如先写入本地消息表,再通过Lambda批量推送)。
  • 数据定制:若无需整行数据,可手动构造JSON对象,例如json_build_object('id', NEW.id, 'content', NEW.content)。
  • 错误策略:示例中捕获异常并允许插入成功,可根据业务需求调整(比如抛出错误终止插入)。

内容的提问来源于stack exchange,提问作者Archana Chaudhary

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 06:54:57