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

如何通过React Amplify和Amplify CLI在React应用中获取环境名称?

解决AWS Amplify构建时获取环境名称的可靠方案

方法1:通过Amplify CLI命令直接获取当前环境名

使用amplify env get命令直接从Amplify配置中读取当前激活的环境名称,这是最可靠的方式,不受分支变量的影响:

frontend:
  phases:
    preBuild:
      commands:
        # 从Amplify CLI获取当前环境名
        - export AMPLIFY_ENV=$(amplify env get --name current --json | jq -r '.name')
        # 写入.env文件
        - echo "REACT_APP_AMPLIFY_ENV=${AMPLIFY_ENV}" > .env
        - npm ci

说明:Amplify托管的构建镜像默认已安装jq,如果遇到缺失的情况,可以在命令前添加yum install jq -y(Amazon Linux镜像)或apt-get install jq -y(Ubuntu镜像)来安装。

方法2:直接读取Amplify本地配置文件

Amplify会在本地amplify/.config/local-env-info.json文件中存储当前环境信息,直接读取这个文件可以跳过CLI调用,更轻量:

frontend:
  phases:
    preBuild:
      commands:
        # 从本地配置文件读取环境名
        - export AMPLIFY_ENV=$(cat amplify/.config/local-env-info.json | jq -r '.envName')
        - echo "REACT_APP_AMPLIFY_ENV=${AMPLIFY_ENV}" > .env
        - npm ci

方法3:分支变量兜底方案

如果仍想保留分支变量的逻辑,可以添加兜底判断,当USER_BRANCH为空时自动切换到CLI获取的环境名:

frontend:
  phases:
    preBuild:
      commands:
        - export AMPLIFY_ENV=$USER_BRANCH
        # 当USER_BRANCH为空时,用CLI命令获取环境名
        - if [ -z "$AMPLIFY_ENV" ]; then AMPLIFY_ENV=$(amplify env get --name current --json | jq -r '.name'); fi
        - echo "REACT_APP_AMPLIFY_ENV=${AMPLIFY_ENV}" > .env
        - npm ci

在React应用中使用环境名

完成上述配置后,在React代码中可以通过process.env.REACT_APP_AMPLIFY_ENV直接访问环境名称:

console.log("当前Amplify环境:", process.env.REACT_APP_AMPLIFY_ENV);

为什么之前的方法会失效?
USER_BRANCH变量依赖于Amplify托管的分支映射规则,在手动触发构建、分支名称与环境名不匹配、或者某些特殊构建场景下,该变量可能为空。而直接从Amplify的环境配置或本地文件获取环境名,是直接关联到当前部署的Amplify环境,可靠性更高。

内容的提问来源于stack exchange,提问作者Avi Weiss

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 16:10:08