amazon-web-services - 如何使用 aws cli 在 Elastic Beanstalk 上上传和部署?
问题描述
我的设置: - 我的 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 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
推荐阅读
- c++ - 带有 lambda 函数的函数向量
- python - 如何使用 Drive API 使用 GoogleSheet 模板将数据框设置为 GoogleSheet 工作表?
- java - 执行器线程仍显示在 CPU 中
- java - CORBA MARSHAL 1398079699/InvalidClassException 在 weblogic 12.2.1.3 升级后使用来自 swing 的枚举访问 ejb bean
- r - R:R中NPS计算的交叉表分析
- windows - 为什么 Visual Studio 构建后事件中的 xcopy 会减少一些文件大小?
- python - 创建一个单独的列的所有购买列表,除了 python pandas 数据框中的第一次出现
- javascript - 表达式插值 Javascript
- javascript - 如何使用普通的旧 javascript 获取底层 CSS 值
- c# - 如何禁用 MenuStrip MaximizeBox