如何使用Elastic Beanstalk搭建多环境并实现一键部署及配置?
用Elastic Beanstalk搭建多环境完整方案
嘿,刚好我之前在项目里用Elastic Beanstalk搭建过dev/stage/prod多环境,完全匹配你的需求,给你一步步拆解方案:
1. 初始化并创建多环境
首先确保你已经安装了EB CLI并配置好AWS凭证,然后在项目根目录执行:
# 初始化EB项目(跟着向导选应用、平台) eb init # 创建dev环境(默认单实例,适合开发) eb create dev # 创建stage环境(可开启基础负载均衡) eb create stage --elb-type application # 创建production环境(建议高可用配置) eb create production --elb-type application --min-instances 2
三个环境是完全独立的资源集群,互相隔离,不会互相影响。
2. 按环境配置专属环境变量
有两种灵活的方式管理不同环境的变量,按需选择:
方式一:EB CLI命令快速设置(适合临时调整)
针对每个环境单独配置变量,命令直接生效:
# 配置dev环境变量 eb setenv ENV=dev API_URL=https://dev-api.example.com DEBUG=true --environment dev # 配置stage环境变量 eb setenv ENV=stage API_URL=https://stage-api.example.com DEBUG=false --environment stage # 配置production环境变量 eb setenv ENV=production API_URL=https://api.example.com DEBUG=false --environment production
方式二:.ebextensions配置文件管理(适合版本控制)
在项目根目录创建.ebextensions文件夹,给每个环境写专属配置文件,比如env-dev.config:
option_settings: aws:elasticbeanstalk:application:environment: ENV: dev API_URL: https://dev-api.example.com DEBUG: true
部署时指定配置文件即可让对应环境加载:
eb deploy dev --config env-dev
如果想统一管理,也可以在主配置文件里用环境判断:
option_settings: aws:elasticbeanstalk:application:environment: DEBUG: 'false' API_URL: https://api.example.com commands: 01_env_specific_vars: command: | if [ "$EB_ENVIRONMENT" = "dev" ]; then eb setenv ENV=dev API_URL=https://dev-api.example.com DEBUG=true fi
3. 参照Dev环境同步定时任务
定时任务通过.ebextensions的cron配置实现,同步步骤很简单:
- 先在Dev环境调试好定时任务配置,比如创建
.ebextensions/cron-jobs.config:
files: "/etc/cron.d/daily-backup": mode: "000644" owner: root group: root content: | # 每天凌晨1点执行备份脚本 0 1 * * * root /opt/python/current/app/backup.sh $ENV commands: 01_clean_old_cron: command: "rm -f /etc/cron.d/daily-backup.bak"
- 把这个配置文件提交到Git,部署到stage/prod时会自动生效。如果不同环境的任务逻辑有差异,在脚本里用
$ENV变量判断即可:
# backup.sh示例 if [ "$ENV" = "dev" ]; then python backup.py --days 7 # Dev只备份7天数据 elif [ "$ENV" = "production" ]; then python backup.py --days 30 --upload-s3 # Prod备份30天并上传S3 fi
- 要是想快速复制Dev的所有配置到其他环境,用以下命令:
# 导出Dev环境配置 eb config save dev --cfg dev-base-config # 导入到stage环境 eb config put stage --cfg dev-base-config
4. 单条命令完成部署
EB CLI本身就支持指定环境的一键部署,只要环境已经创建好,直接运行:
# 部署到dev环境 eb deploy dev # 部署到stage环境 eb deploy stage # 部署到production环境 eb deploy production
如果要部署特定分支或版本,加参数即可:
# 部署feature分支到dev eb deploy dev --branch feature/new-function # 部署指定版本包到prod eb deploy production --version v1.2.0
额外实用技巧
- 建议用Git分支对应环境:
dev分支部署dev环境,stage分支部署stage,main分支部署prod,减少部署错误。 - 用
eb status dev查看环境状态,eb logs dev快速排查问题。 - 环境变量优先级:控制台设置的变量会覆盖配置文件,临时调整直接去控制台改更方便。
内容的提问来源于stack exchange,提问作者zivchen
相关产品推荐
相关产品推荐

