【问题标题】:aws-cli equivalent of eb deploy?aws-cli 相当于 eb 部署?
【发布时间】:2018-02-09 03:11:06
【问题描述】:

我正在尝试将应用程序从一个 ElasticBeanstalk 实例部署到另一个实例。由于某些奇怪的原因,在 EC2 机器上运行 pip install awsebcli --upgrade --user 不会安装 eb cli 工具。

有谁知道仅使用aws cli 选项的eb deploy 等效项?

【问题讨论】:

    标签: amazon-web-services amazon-ec2 amazon-elastic-beanstalk aws-cli ebcli


    【解决方案1】:

    这个问题有点令人困惑。您是否尝试在 Beanstalk 环境中的 EC2 实例之间移动代码?

    如果我的假设正确,您已经在一台 Beanstalk 主机上提取/更改了代码。现在您正尝试使用 EB CLI 将该更改传播到其他实例。 这不是最佳做法。 Beanstalk 有一种机制可以将您的代码部署到所有实例。

    EB CLI 旨在从您的工作站运行,以将代码从您的 IDE/编辑器推送到 AWS 中的 Beanstalk 主机。

    Beanstalk 在 S3 中保留该代码修订的副本。如果 Beanstalk 环境是负载平衡的,那么在发生扩展事件或部署时,所有实例都将运行相同的应用程序版本,因为它会从公共源中提取您的代码。

    但要回答你的问题:

    有谁知道仅使用 aws cli 选项的 eb deploy 等效项?

    您需要压缩并将您的代码上传到 S3,并记下它所在位置的 S3 键和存储桶值。

    然后创建一个新的应用程序版本。

    % aws elasticbeanstalk create-application-version --application-name="<APPLICATION_NAME>" --version-label="<NEW_VERSION_LABEL>" --source-bundle="{\"S3Bucket\": \"<S3_BUCKET_NAME>\",\"S3Key\": \"<S3_KEY>\"}"
    

    然后将您的新应用程序版本部署到运行环境。

    % aws elasticbeanstalk update-environment --environment-id="<ENVIRONMENT_ID>" --version-label="<NEW_VERSION_LABEL>"
    

    【讨论】:

    • 是的,正是我想要的。但出于稍微不同的目的。我计划让一个实例充当主构建服务器,使用第二个应用程序(多台机器)为构建提供代码。单个 webhook 会将新代码推送到 master,然后部署到另一个 EB 应用程序中的 slave
    • 您是否研究过 AWS CodeBuild 和 CodePipelines?此外,当您创建应用程序版本时,您可以指定构建配置参数并设置一个处理标志,这将告诉 Beanstalk 使用 CodeBuild 构建您的应用程序代码,以生成已编译源的工件以推送到实例。
    • 是的,我昨天做了一些阅读。由于我们已经对当前的 ELB 设置进行了大量投资,因此我们当前的方法目前运行良好。您知道有关配置 CodeBuild/Pipelines 的任何好的博客文章吗?
    • 如何将已编译的 WAR/JAR 文件部署到现有的 Elastic Beanstalk 实例(使用 aws)?我不需要上传整个源代码树。
    【解决方案2】:

    阅读很难......

    Linux 要求您"[a]dd the path to the executable file to your PATH variable"

    export PATH=~/.local/bin:$PATH

    eb --version 现在可以使用了

    【讨论】:

      猜你喜欢
      • 2019-02-14
      • 2018-05-09
      • 2021-12-25
      • 2019-02-23
      • 1970-01-01
      • 2015-07-20
      • 2015-11-22
      • 2016-11-18
      • 2015-06-17
      相关资源
      最近更新 更多