如何通过AWS CLI仅上传Elastic Beanstalk应用版本而不部署?
可以!用AWS CLI单独上传Elastic Beanstalk应用版本的方法
完全可以只上传应用版本而不触发部署——你需要的是aws elasticbeanstalk create-application-version命令,而不是eb deploy(后者确实会自动关联部署流程)。下面是具体的步骤和细节:
步骤1:准备应用包并上传到S3(如果还没做)
Elastic Beanstalk的应用版本需要关联存储在S3中的应用包,所以首先把你的本地应用打包(比如zip格式),然后上传到S3:
# 上传本地包到指定S3路径 aws s3 cp ./your-app-bundle.zip s3://your-target-bucket/beanstalk-versions/v1.0.0/your-app-v1.0.0.zip
步骤2:创建Elastic Beanstalk应用版本
用create-application-version命令将S3中的包关联为应用版本,这一步不会触发任何部署:
aws elasticbeanstalk create-application-version \ --application-name "Your-ElasticBeanstalk-App-Name" \ --version-label "v1.0.0" \ --source-bundle S3Bucket="your-target-bucket",S3Key="beanstalk-versions/v1.0.0/your-app-v1.0.0.zip" \ --description "Version v1.0.0: Uploaded via AWS CLI (no deployment)"
参数说明:
--application-name:你的Elastic Beanstalk应用名称,必须和控制台里的一致--version-label:版本的唯一标识,不能和该应用下已有的版本重复--source-bundle:指定S3桶和文件路径,格式是S3Bucket="bucket-name",S3Key="file-path"--description:可选,添加版本的备注信息,方便后续识别
简化选项:用eb package快速打包上传
如果你习惯用EB CLI,也可以用eb package命令自动打包应用并上传到S3(默认会用Elastic Beanstalk的默认存储桶),它只会完成打包上传,不会创建应用版本或部署。执行后会输出S3的路径,你可以直接把这个路径用到上面的create-application-version命令里:
# 打包并上传到S3,输出路径 eb package --application-name "Your-ElasticBeanstalk-App-Name" --version-label "v1.0.0"
IAM权限配置(针对CodeBuild)
给CodeBuild的服务角色添加以下权限即可完成这两步操作,无需部署相关的权限:
elasticbeanstalk:CreateApplicationVersion:允许创建应用版本s3:PutObject:允许上传文件到目标S3桶(如果用自己的S3桶)- (可选)
elasticbeanstalk:CheckAvailability:部分场景下可能需要这个权限验证版本标签唯一性
这样配置后,CodeBuild就能安全地完成应用版本上传,完全不需要管理环境实例的私钥,避免了你担心的繁琐操作。
之后你就可以在Elastic Beanstalk控制台自由选择这个新上传的版本进行部署,完美拆分你的流程!
内容的提问来源于stack exchange,提问作者Yuki Inoue
相关产品推荐
相关产品推荐

