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

React Native+AWS Amplify环境下Dev/Prod(含DynamoDB)分离方案咨询

React Native + AWS Amplify 多环境(Dev/Prod)分离方案

核心思路

和你之前用Java/Oracle环境文件控制的逻辑一致,AWS Amplify原生支持多环境部署,每个环境对应独立的DynamoDB、Cognito、Lambda等AWS资源,通过命令行切换环境,自动加载对应配置。

步骤1:创建并管理Amplify多环境

  • 进入现有Amplify项目后,执行以下命令添加Dev环境:
    amplify env add
    
    按提示输入环境名(比如dev),Amplify会自动为该环境创建独立的后端配置。
  • 同理添加Prod环境:
    amplify env add
    
    输入环境名prod即可。
  • 切换环境使用:
    amplify env checkout dev  # 切换到开发环境
    amplify env checkout prod # 切换到生产环境
    
    切换后,本地的aws-exports.js会自动更新为当前环境的所有资源配置(包括DynamoDB端点、Cognito用户池ID等)。

步骤2:确保DynamoDB及其他资源的环境隔离

  • 当你在Dev环境执行amplify add storage选择NoSQL数据库(DynamoDB)时,Amplify会自动为Dev环境创建带后缀的表(比如UserTable-dev);切换到Prod环境执行amplify push后,会创建UserTable-prod,无需手动修改表名或连接配置。
  • 其他服务(Cognito、S3、Lambda、SNS)同理,每个环境都会生成独立的资源:
    • Cognito用户池/身份池:每个环境独立,用户数据完全隔离
    • S3存储桶:名称带环境后缀,资源不互通
    • Lambda函数:每个环境有独立的函数实例,可配置不同的环境变量(比如Dev用测试SNS主题,Prod用正式主题)

步骤3:本地环境变量适配(可选,贴合你的Java习惯)

如果你需要自定义额外的环境变量(比如业务参数),可以配合react-native-dotenv实现类似Java的多环境配置文件:

  1. 安装依赖:
    npm install react-native-dotenv --save-dev
    
  2. 在项目根目录创建.env.dev和.env.prod文件:
    • .env.dev:
      APP_ENV=development
      SNS_TOPIC_ARN=arn:aws:sns:us-east-1:xxx:dev-topic
      
    • .env.prod:
      APP_ENV=production
      SNS_TOPIC_ARN=arn:aws:sns:us-east-1:xxx:prod-topic
      
  3. 在React Native代码中导入使用:
    import { APP_ENV, SNS_TOPIC_ARN } from '@env';
    
  4. 切换Amplify环境时,同步切换本地env文件(可写简单脚本自动处理,比如切换到dev时复制.env.dev为.env)。

步骤4:部署到对应环境

  • 切换到Dev环境后,执行amplify push将后端资源部署到AWS Dev环境;
  • 切换到Prod环境后,执行amplify push部署到AWS Prod环境;
  • 每次部署前,Amplify会对比本地配置与云端资源,自动更新差异部分,确保环境一致性。

关键注意事项

  • 不要手动修改aws-exports.js,该文件由Amplify自动生成,切换环境会自动更新;
  • 建议先在Dev环境完成所有功能开发与测试,再创建Prod环境并推送,避免重复配置;
  • 所有资源的隔离由Amplify自动管理,无需手动修改AWS控制台的资源配置,通过命令行即可完成全流程。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 01:07:28