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 adddev),Amplify会自动为该环境创建独立的后端配置。 - 同理添加Prod环境:
输入环境名amplify env addprod即可。 - 切换环境使用:
切换后,本地的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的多环境配置文件:
- 安装依赖:
npm install react-native-dotenv --save-dev - 在项目根目录创建
.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
- 在React Native代码中导入使用:
import { APP_ENV, SNS_TOPIC_ARN } from '@env'; - 切换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
相关产品推荐
相关产品推荐

