如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?
Posted
技术标签:
【中文标题】如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?【英文标题】:How to upload and deploy on Elastic Beanstalk with the aws cli? 【发布时间】:2018-12-21 16:39:06 【问题描述】:我的设置: - 我的 Dockerrun.aws.json 文件中指定了一个多码头应用程序。 - 我的应用程序的图像存储在 ECR 上。
在 Elastic Beanstalk 的 AWS 控制台中,我可以“上传和部署”一个新的 Dockerrun.aws.json 文件。然后 Elastic Beanstalk 部署该版本。
是否可以通过aws elasticbeanstalk
命令行执行相同的操作(“上传和部署”)?
我找到的最接近的是aws elasticbeanstalk rebuild-environment --environment-id $ENVIRONMENT_ID
。但这只会使用现有的 Dockerrun.aws.json 文件重建现有环境。如果我想在 cli 中使用另一个版本的 Dockerrun.aws.json 文件部署我的环境怎么办?
【问题讨论】:
在 AWS 上,EBS == 弹性块存储。不是 Elastic Beanstalk。 【参考方案1】:是的,您可以使用 AWS CLI 创建一个新部署,并且正如您所想,RebuildEnvironment
不是 API 调用。您正在寻找三个调用的组合——一个到 S3,两个到 Beanstalk
-
创建应用程序代码的 zip 文件
将 zip 文件上传到 S3。记下存储桶和密钥名称(这将使 AWS 和 Beanstalk 可以使用新版本)
调用 ElasticBeanstalk 的 CreateApplicationVersion
API:
aws elasticbeanstalk create-application-version --application-name <beanstalk-app> --version-label <a unique label for this version of code> --description <description of your changes> --source-bundle S3Bucket="<bucket name previously noted",S3Key="<key name previously noted"
调用 Beanstalk 的 UpdateEnvironment
API:
aws elasticbeanstalk update-environment --environment-name <name of environment> --version-label <label of app. version created above>
显然,这很乏味,因此我还建议您考虑通过 EBCLI 进行部署,它通过一个命令为您完成所有这些事情 -- eb deploy
【讨论】:
以上是关于如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?的主要内容,如果未能解决你的问题,请参考以下文章
如何将 AWS CLI 与 Elastic Beanstalk 一起使用?
如何通过 CLI 将 zip 文件上传和部署到 AWS elastic beanstalk?
如何替换在我部署 Elastic Beanstalk 应用程序时不再工作的 AWS CLI 命令
使用 CLI 在 AWS Elastic Beanstalk 上部署 RoR 项目