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

本地Docker部署Supabase后,配置测试SMS Auth Hook、AWS SNS及HTTP Webhook的方法咨询

本地Docker部署Supabase后,配置测试SMS Auth Hook、AWS SNS及HTTP Webhook的方法咨询

看起来你已经顺利搞定本地Supabase的Google登录集成了,这步完成得很扎实!接下来的Webhook配置、AWS SNS对接以及本地测试确实需要几个关键步骤,我来给你详细拆解一下:

一、配置HTTP Webhook

要让Supabase触发自定义的HTTP Webhook(比如你说的localhost:3000/api/test),需要在docker-compose.override.yml的auth服务环境变量里添加相关配置,注意容器访问本地主机的特殊地址:

services:
  auth:
    environment:
      # 保留你已有的Google登录配置
      GOTRUE_EXTERNAL_GOOGLE_ENABLED: ${ENABLE_GOOGLE_SIGNUP}
      GOTRUE_EXTERNAL_GOOGLE_CLIENT_ID: ${GOOGLE_CLIENT_ID}
      GOTRUE_EXTERNAL_GOOGLE_SECRET: ${GOOGLE_CLIENT_SECRET}
      GOTRUE_EXTERNAL_GOOGLE_REDIRECT_URI: http://localhost:8000/auth/v1/callback
      
      # 新增Webhook核心配置
      GOTRUE_WEBHOOK_URL: http://host.docker.internal:3000/api/test
      # 按需指定触发Webhook的事件,多个用逗号分隔
      GOTRUE_WEBHOOK_EVENTS: "user.created,user.updated,user.deleted"
      # 可选:设置签名密钥,用于验证请求是否来自Supabase
      GOTRUE_WEBHOOK_SECRET: "your-custom-secret-key"

这里要注意host.docker.internal这个地址——Docker容器内部的localhost指向容器自身,所以要访问你的本地主机服务,必须用这个特殊域名(Windows/Mac默认支持,Linux可能需要额外配置extra_hosts)。

二、配置AWS SNS用于短信认证

如果要通过AWS SNS发送短信验证码,需要在auth服务里配置SMS提供商和AWS凭证:

services:
  auth:
    environment:
      # 保留之前的所有配置
      
      # 启用短信认证
      GOTRUE_SMS_ENABLED: true
      # 指定SMS提供商为AWS SNS
      GOTRUE_SMS_PROVIDER: "aws-sns"
      # AWS配置项,建议存在.env文件中引用
      GOTRUE_SMS_AWS_REGION: ${AWS_REGION}
      GOTRUE_SMS_AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
      GOTRUE_SMS_AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
      # 可选:如果需要指定自定义SNS主题ARN,取消注释下面一行
      # GOTRUE_SMS_AWS_SNS_TOPIC_ARN: "arn:aws:sns:your-region:your-account-id:your-topic"

配置要点:

  • 确保AWS IAM用户拥有sns:Publish权限,建议创建专门的IAM用户,仅赋予该权限,避免过度授权
  • 所有AWS相关的敏感信息(密钥、区域)都放在项目根目录的.env文件中,不要硬编码在配置文件里

三、本地测试方法

1. 测试HTTP Webhook

  • 先启动你的本地Webhook服务(比如用Express写个简单的接收端点):
const express = require('express');
const app = express();
app.use(express.json());

app.post('/api/test', (req, res) => {
  console.log('收到Supabase Webhook请求:', req.body);
  res.status(200).send('Webhook接收成功');
});

app.listen(3000, () => console.log('Webhook服务运行在http://localhost:3000'));
  • 重启Supabase服务:docker-compose down && docker-compose up -d
  • 操作Supabase的用户数据(比如创建一个新用户),查看你的Webhook服务控制台,确认是否收到请求
  • 也可以用curl模拟测试端点是否正常:
curl -X POST http://localhost:3000/api/test \
  -H "Content-Type: application/json" \
  -d '{"event": "user.created", "user": {"id": "test-user-id", "email": "test@example.com"}}'

2. 测试AWS SNS短信

  • 确保你的AWS凭证和区域配置正确,且IAM用户权限到位
  • 在Supabase控制台或通过API发起手机号注册/登录请求
  • 如果收不到短信,查看Supabase auth容器的日志排查问题:
docker logs -f supabase-auth
  • 也可以登录AWS控制台,进入SNS服务的“短信”板块,查看发送记录和错误信息

最后提醒:每次修改docker-compose.override.yml后,都需要重启Supabase服务才能让配置生效哦!

内容来源于stack exchange

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.07 10:39:29