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

是否可在AWS Amplify Auth的override.ts中读取环境变量

结论

override.ts运行在Node.js环境下,原生支持读取环境变量,不需要硬编码client id、client secret这类敏感信息。

环境变量读取实现步骤
  • 首先将.env加入项目.gitignore文件,避免敏感文件被提交到版本库
  • 在override.ts文件所在的同级目录创建.env文件,按键值对格式写入敏感配置:
GOOGLE_CLIENT_ID=xxx
GOOGLE_CLIENT_SECRET=xxx
FACEBOOK_APP_ID=xxx
FACEBOOK_APP_SECRET=xxx
  • 在override.ts顶部引入依赖加载.env配置,注意要正确指定.env文件路径,避免执行时因工作目录不同读不到值:
import * as path from 'path';
import * as dotenv from 'dotenv';
// 加载当前文件同级目录下的.env
dotenv.config({ path: path.resolve(__dirname, '.env') });

export function override(props: AmplifyAuthProps) {
  // 直接通过process.env读取对应值即可
  const googleClientId = process.env.GOOGLE_CLIENT_ID;
  const googleClientSecret = process.env.GOOGLE_CLIENT_SECRET;

  // 写入社交身份提供商配置
  props.userPool.identityProviders.google = {
    clientId: googleClientId,
    clientSecret: googleClientSecret,
    authorizeScopes: ['openid', 'email', 'profile'],
  }
}
  • 团队协作场景可以在同目录放一份.env.example模板,只保留配置键名不填真实值,同步给团队成员参考。
其他可行替代方案
  • 使用Amplify内置密钥管理
    直接执行amplify secret add命令,按照交互提示把client id、secret这类敏感值存入Amplify云端密钥存储,不需要本地维护.env文件。配置完成后在override逻辑中可以直接通过Amplify提供的上下文接口读取密钥值,本地执行amplify push、CI/CD流水线部署时都能自动拉取对应值,不会出现环境不一致读不到配置的问题。
  • CI/CD环境变量注入
    如果走自动化流水线部署,可以直接把敏感配置项加为流水线的环境变量,执行amplify push时Node.js运行时会自动继承流水线环境变量,不需要额外加载dotenv,直接读取process.env就能拿到对应值,生产环境推荐用这种方式,本地不需要留存生产密钥。
  • 部署后控制台手动配置
    可以在override.ts中只配置社交登录的非敏感参数,跳过client secret这类敏感字段,等amplify push完成资源部署后,手动到Cognito控制台对应用户池的身份提供商配置页填写敏感值。后续只要不在override逻辑中覆盖对应身份提供商的配置字段,手动填写的值不会被Amplify覆盖,这种方式完全不需要在代码侧存储任何敏感信息。

注意:无论使用哪种方案,都不要将包含真实密钥的配置文件提交到公共或内部代码仓库,敏感密钥要定期轮换,遵循权限最小化原则配置访问规则。

内容的提问来源于stack exchange,提问作者jaehoon ha

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 22:12:50