首页 > 解决方案 > 如何使用 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 文件部署我的环境怎么办?

标签: amazon-web-servicesamazon-elastic-beanstalkaws-cli

解决方案


是的,您可以使用 AWS CLI 创建一个新部署,并且如您所想,RebuildEnvironment这不是 API 调用。您正在寻找三个调用的组合——一个到 S3,两个到 Beanstalk

  1. 创建应用程序代码的 zip 文件
  2. 将 zip 文件上传到 S3。记下存储桶和密钥名称(这将使 AWS 和 Beanstalk 可以使用新版本)
  3. 调用 ElasticBeanstalk 的CreateApplicationVersionAPI:

    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"
    
  4. 执行对 Beanstalk 的UpdateEnvironmentAPI 的调用:

    aws elasticbeanstalk update-environment --environment-name <name of environment> --version-label <label of app. version created above>
    

显然,这很乏味,所以我还建议您考虑通过 EBCLI 进行部署,它通过一个命令为您完成所有这些事情——eb deploy


推荐阅读