本地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
相关产品推荐
相关产品推荐

