AWS 如何让 ASG 始终使用最新的 AMI?

AWS how to make ASG always use the latest AMI?

因此我们尝试经常构建映像并将它们更新到我们的启动配置,我们希望我们的启动配置始终使用最新的 AMI(Amazon 机器映像)。

当然,我们希望所有这些都以自动化的方式发生。

我们正在努力找出如何最好地实现自动化,以便 ASG(Auto Sacling Group)使用最新的 AMI。

这里的一种有效方法是让 Lambda 将最新的 AMI 应用到启动配置。

有没有一种方法可以让我们的启动配置自动知道使用最新的 AMI,launch templates 可以做到这一点吗?

我们不想尽可能使用 lambda。

而且如果 launch templates 让这成为可能。如果 AMI 出现问题,有什么建议可以回滚到以前的版本。

launch templateslaunch configurations 都是不可变的。一旦创建它们,就无法更改它们,所以答案是否定的,您不能在其中任何一个中引用 variable AMI 参数,这意味着您需要构建一个新的启动configuration/template 使用您选择的新(最新)版本的 AMI。

有多种方法可以从 SSM 中提取此信息,例如,在 CF 模板中引用它而不需要 Lambda 函数。

Parameters:
  LatestAmiId:
    Type: 'AWS::SSM::Parameter::Value<AWS::EC2::Image::Id>'
    Default: '/aws/service/ami-amazon-linux-latest/amzn2-ami-hvm-x86_64-gp2'

Resources:
 Instance:
    Type: 'AWS::EC2::Instance'
    Properties:
      ImageId: !Ref LatestAmiId

但这只有在构建堆栈时才会生效。一旦堆栈为 运行,您将在启动期间使用最新版本。

我们打算评估的一种方法是从构建管道中获取 AMI ID,并将其注入到具有自己的管道的部署存储库中。

我们已经使用构建 ID 标记提交,所以......理论上......也许......这对我们有用。