如何仅通过AWS CLI实现eb deploy的等效部署操作?
使用AWS CLI替代EB CLI执行
eb deploy的等效操作方法 没问题!既然EB CLI安装遇到了麻烦,咱们直接用AWS CLI来实现和eb deploy一样的效果就行。其实eb deploy背后就是做了两件事:把你的代码打包成Elastic Beanstalk应用版本,然后把这个版本部署到目标环境。咱们拆开来一步步操作:
第一步:打包代码并创建应用版本
首先得把你的应用代码打包成zip包(注意排除掉不需要的文件,比如.git目录、虚拟环境文件夹这些,避免增大包体积),然后用AWS CLI创建对应的应用版本:
- 先打包本地代码(根据你的项目结构调整排除规则):
zip -r app.zip . -x ".git/*" "venv/*" "node_modules/*"
- 创建Elastic Beanstalk应用版本,这里有两种方式:
- 方式一:让AWS CLI自动把zip包上传到EB默认的S3桶(无需手动操作S3):
aws elasticbeanstalk create-application-version \ --application-name 你的应用名称 \ --version-label v1.0.0 # 自定义版本标签,比如用日期或commit号 --source-bundle fileb://app.zip \ --auto-create-application # 如果应用还没创建的话加这个参数,已创建可以去掉- 方式二:先手动把zip包上传到你自己的S3桶,再指定S3路径:
# 先上传到S3 aws s3 cp app.zip s3://你的S3桶名/apps/v1.0.0.zip # 创建应用版本 aws elasticbeanstalk create-application-version \ --application-name 你的应用名称 \ --version-label v1.0.0 \ --source-bundle S3Bucket=你的S3桶名,S3Key=apps/v1.0.0.zip
第二步:将应用版本部署到EB环境
创建好应用版本后,就可以把它部署到目标Elastic Beanstalk环境了:
aws elasticbeanstalk update-environment \ --environment-name 你的EB环境名称 \ --version-label v1.0.0 # 和上面创建版本时用的标签保持一致
额外的小提示
- 权限配置:确保你的AWS CLI配置的IAM用户拥有足够的权限,至少需要
elasticbeanstalk:CreateApplicationVersion和elasticbeanstalk:UpdateEnvironment权限,如果是用S3上传的话还需要s3:PutObject权限。 - 同步环境变量:如果
eb deploy之前会同步本地的环境变量配置,用AWS CLI可以通过--option-settings参数来设置,比如:
aws elasticbeanstalk update-environment \ --environment-name 你的EB环境名称 \ --option-settings Namespace=aws:elasticbeanstalk:application:environment,OptionName=DB_HOST,Value=your-db-host
- 一键脚本:可以把打包、创建版本、部署的命令写成一个shell脚本,这样下次部署直接运行脚本就行,省得重复输入命令。
内容的提问来源于stack exchange,提问作者Vinnie James
相关产品推荐
相关产品推荐

