如何使用 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 项目

AWS:使用 Elastic Beanstalk 命令行界面 (EB CLI) 3.x SSH 到 EC2

AWS Elastic Beanstalk 使用 CLI 部署时出现 Botocore 错误