如何升级到 AWS Elastic Beanstalk 中的最新 AMI?

如何升级到 AWS Elastic Beanstalk 中的最新 AMI?

我正在 AWS Elastic Beanstalk 上运行一个应用程序,如果我想使用最新的 AMI,似乎需要创建一个新的环境。

如果我知道最新的 AMI ID 是什么,我可以在环境配置中更新它。

有没有地方可以找到最新的 Elastic Beanstalk AMI 的 ID,或者更好的是,是否可以在推出新版本时自动用新版本替换实例?

答案1

升级 AWS Beanstalk 环境的推荐和支持方法已记录在案这里并讨论托管平台更新这里,老实说,如果您希望事情变得简单(这就是 Beanstalk 的全部意义所在),我会坚持这一点,理论上您只会获得非中断更新,而 AWS 将管理该过程,因此不会出现停机。

所以我只想重申,托管平台更新可能是您或任何其他来自 Google 的人想要的,但如果您想知道 AWS 为您的 Beanstalk 环境提供的最新 AMI,则可以使用 AWS CLI 轻松完成(感谢亚马逊在其 AMI 上的合理命名约定)。

从您环境中的实例开始,描述该实例以获取当前 AMI(如果您已经知道当前 AMI,请跳过)。

aws ec2 describe-instances --instance-ids i-0909613f35ec0ffee --query 'Reservations[*].Instances[*].ImageId' --output text

ami-35290a56

获取生成的 AMI ID 并对其进行描述。

aws ec2 describe-images --image-ids ami-35290a56 --query 'Images[*][Architecture, Hypervisor, Name, RootDeviceType, VirtualizationType]' --output json

[
    [
        "x86_64",
        "xen",
        "aws-elasticbeanstalk-amzn-2016.03.0.x86_64-python34-hvm-201603290718",
        "ebs",
        "hvm"
    ]
]

我们可以将上面的输出作为新排序的输入,但这次我们用通配符describe-images替换时间戳,如下所示:*

aws ec2 describe-images --filters 'Name=architecture,Values=x86_64' 'Name=virtualization-type,Values=hvm' 'Name=owner-alias,Values=amazon' 'Name=name,Values=aws-elasticbeanstalk-amzn-*.x86_64-python34-hvm-*' --query 'sort_by(Images[*], &Name)[-1].ImageId' --output text

ami-1be5de78

由于词汇排序和 ISO 8601 的强大功能,我们最终得到了最新的 AMI,在我的示例中是ami-1be5de78

aws ec2 describe-images --image-ids ami-1be5de78 --query 'Images[*].Name' --output text

aws-elasticbeanstalk-amzn-2016.09.0.x86_64-python34-hvm-201612200708

再次强调,我不建议您尝试手动更改此 AMI,Beanstalk 可以为您完成所有操作!

答案2

似乎即使您将 AMI 更改为 ElasticBeanstalk 使用的正确 AMI,它似乎也无法正常工作。它遗漏了所有文件。它无法正常工作。

我认为您必须启动一个具有更新的 AMI 的新 Elastic Beanstalk 环境。使一切正常运行,然后交换环境 URL。

答案3

您可以使用 eb 附带的托管更新功能,但必须为增强型健康报告付费才能执行此操作。或者使用“eb platform show”命令;在工作应用程序中有一个运行 CURRENT= eb platform show your_env_name | sed -n '5p' | cut -d: -f2- | tr -d '[[:space:]]' LATEST=的 cron eb platform show your_env_name | sed -n '6p' | cut -d: -f2- | tr -d '[[:space:]]' - 然后比较它们,如果不同,您可以使用 eb clone(默认为新版本),然后使用 cname swap。

答案4

在 Elastic Beanstalk 中选择您的服务,您将在仪表板中看到概览,在仪表板右侧,您可以看到 AMI 的配置,选择更改升级或降级您的 AMI。此时您将替换您的实例。因此请进行备份或克隆。

相关内容