SST AWS
SST AWS 部署的环境变量配置
这种配置适用于具有 AWS 服务和合规要求的企业级基础设施。SST 提供基础设施即代码,支持 AWS Lambda、RDS、S3 和其他 AWS 服务。
🚀 核心应用设置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
BETTER_AUTH_SECRET | Better Auth 会话加密的密钥 | your-32-character-secret-key | ✅ |
BETTER_AUTH_URL | 应用程序的基础URL | https://yourdomain.com | ✅ |
NEXT_PUBLIC_APP_URL | 客户端使用的公共URL | https://yourdomain.com | ✅ |
BETTER_AUTH_SECRET
是一个随机字符串,用于加密和生成哈希值,你可以使用以下命令生成一个 32 位安全的密钥:
# 执行命令生成一个 32 位安全的密钥
openssl rand -base64 32
AWS SST 和 Next.js 的核心配置基本一致,除了数据库的配置,因为 AWS RDS 直接内置了 RDS 数据库连接,所以不需要配置 DATABASE_URL
。
如果你需要使用 PostgreSQL 或者其它数据库,那么需要配置 DATABASE_URL
和修改相关代码,你可以参考 Next.js 部署 中的配置。
📧 邮件配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
RESEND_API_KEY | Resend 邮件服务的API密钥 | re_123456789 | ❌ |
RESEND_AUDIENCE_ID | 新闻简报功能的受众ID | aud_123456789 | ❌ |
如果需要开启账号密码登录功能,需要发送邮件来验证邮箱,那么需要设置 RESEND_API_KEY
。如果需要开启 newsletter 功能,需要设置 RESEND_AUDIENCE_ID
。
如果只开启社交媒体登录功能,不需要交易邮件或者 newsletter 功能,那么不需要设置 RESEND_API_KEY
和 RESEND_AUDIENCE_ID
。
更多关于 Email 相关的配置,请参考:
邮件
配置邮件模板和新闻简报功能以进行用户沟通。
🔐 OAuth 提供商设置
GitHub OAuth
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
GITHUB_CLIENT_ID | GitHub App 客户端ID | a629723d24c123456 | ❌ |
GITHUB_CLIENT_SECRET | GitHub App 客户端密钥 | abc123def456ghi789jkl012 | ❌ |
如果需要开启 GitHub 登录功能,那么需要设置 GITHUB_CLIENT_ID
和 GITHUB_CLIENT_SECRET
。
Google OAuth
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
GOOGLE_CLIENT_ID | Google OAuth 客户端ID | 123456789-abc123.apps.googleusercontent.com | ❌ |
GOOGLE_CLIENT_SECRET | Google OAuth 客户端密钥 | GOCSPX-abc123def456ghi789 | ❌ |
如果需要开启 Google 登录功能,那么需要设置 GOOGLE_CLIENT_ID
和 GOOGLE_CLIENT_SECRET
。
更多关于 OAuth 相关的配置,请参考:
身份验证
设置用户身份验证和授权,支持 OAuth 等多种提供商。
💳 支付集成 (Stripe)
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
STRIPE_SECRET_KEY | 服务器端操作的 Stripe 密钥 | sk_test_123... 或 sk_live_123... | ❌ |
STRIPE_WEBHOOK_SECRET | Stripe 事件的 Webhook 端点密钥 | whsec_123456789 | ❌ |
NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY | 月度专业版计划的 Stripe 价格ID | price_123456789 | ❌ |
NEXT_PUBLIC_PRICE_ID_PRO_YEARLY | 年度专业版计划的 Stripe 价格ID | price_987654321 | ❌ |
NEXT_PUBLIC_PRICE_ID_LIFETIME | 终身计划的 Stripe 价格ID | price_555666777 | ❌ |
更多关于支付相关的配置,请参考:
支付
集成 Stripe 来处理支付和订阅,提供灵活的定价计划。
📁 存储配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_AVATARS_BUCKET_NAME | 头像上传的 S3 存储桶名称 | my-app-avatars | ❌ |
AWS SST 的 S3 无需配置环境变量,直接使用 SST 中创建的 AWS S3 服务。
更多关于存储相关的配置,请参考:
存储
为您的应用程序资产和用户上传设置文件存储解决方案。
📊 分析配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID | Google Analytics 网站ID | G-xxx | ❌ |
NEXT_PUBLIC_UMAMI_WEBSITE_ID | Umami Analytics 网站ID | xxx | ❌ |
NEXT_PUBLIC_UMAMI_SCRIPT_URL | Umami Analytics 脚本URL | https://xxx.js | ❌ |
NEXT_PUBLIC_PLAUSIBLE_DOMAIN | Plausible Analytics 域名 | xxx | ❌ |
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL | Plausible Analytics 脚本URL | https://xxx.js | ❌ |
更多关于分析相关的配置,请参考:
分析
使用集成的分析解决方案跟踪用户行为和应用程序性能。
💰 联盟营销配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID | Affonso 推广ID | xxx | ❌ |
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID
是 Affonso 推广ID,用于跟踪推广效果。
更多关于推广相关的配置,请参考:
推广
集成 Affonso 来处理推广效果。
Cloudflare DNS 配置
变量 | 描述 | 示例 | 必需 |
---|---|---|---|
CLOUDFLARE_API_TOKEN | Cloudflare API 令牌 | xxx | ❌ |
CLOUDFLARE_DEFAULT_ACCOUNT_ID | Cloudflare 账户ID | xxx | ❌ |
如果你使用 Cloudflare 的 DNS 服务,那么需要配置 CLOUDFLARE_API_TOKEN
和 CLOUDFLARE_DEFAULT_ACCOUNT_ID
。
如果你使用 AWS 的 Route 53 服务,那么不需要配置 CLOUDFLARE_API_TOKEN
和 CLOUDFLARE_DEFAULT_ACCOUNT_ID
。只需要在 sst.config.ts
中配置 domain
即可。
📝 .env 文件示例
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
BETTER_AUTH_SECRET=
BETTER_AUTH_URL=http://localhost:3000
NEXT_PUBLIC_APP_URL=http://localhost:3000
# ---------Email----------
RESEND_API_KEY=
RESEND_AUDIENCE_ID=
# ---------Auth----------
GITHUB_CLIENT_ID=
GITHUB_CLIENT_SECRET=
GOOGLE_CLIENT_ID=
GOOGLE_CLIENT_SECRET
# ---------Payment----------
STRIPE_SECRET_KEY=sk_test_
STRIPE_WEBHOOK_SECRET=whsec_
NEXT_PUBLIC_PRICE_ID_PRO_MONTHLY=price_
NEXT_PUBLIC_PRICE_ID_PRO_YEARLY=price_
NEXT_PUBLIC_PRICE_ID_LIFETIME=price_
# ---------Analytics----------
NEXT_PUBLIC_GOOGLE_ANALYTICS_ID=G-xxx
# Umami Analytics
NEXT_PUBLIC_UMAMI_WEBSITE_ID=
NEXT_PUBLIC_UMAMI_SCRIPT_URL=
# Plausible Analytics
NEXT_PUBLIC_PLAUSIBLE_DOMAIN=
NEXT_PUBLIC_PLAUSIBLE_SCRIPT_URL=
# ---------Affiliate----------
NEXT_PUBLIC_AFFILIATE_AFFONSO_ID=
# Optional for Cloudflare dns
CLOUDFLARE_API_TOKEN=
CLOUDFLARE_DEFAULT_ACCOUNT_ID=
🛠️ 开发环境 vs 生产环境
开发环境
- 本地URL使用
http://localhost:3000
- 使用 Stripe 测试密钥(以
sk_test_
开头) - OAuth 重定向URI应指向 localhost
生产环境
- 所有URL使用实际域名
- 使用 Stripe 生产密钥(以
sk_live_
开头) - 为 OAuth 提供商配置生产重定向URI
- 确保所有密钥都得到适当保护并定期轮换
密钥管理
您可以使用 sst secret
命令来管理生产环境密钥。
npx sst secret set BETTER_AUTH_SECRET xxx
npx sst secret set STRIPE_SECRET_KEY xxx
npx sst secret set RESEND_API_KEY xxx