【问题标题】:AWS how to make ASG always use the latest AMI?AWS 如何让 ASG 始终使用最新的 AMI?
【发布时间】:2020-02-27 21:44:44
【问题描述】:

因此,我们正在尝试频繁构建映像并将它们更新到我们的启动配置,并且我们希望我们的启动配置始终使用最新的 AMI(亚马逊机器映像)。

当然,我们希望这一切都以自动化的方式发生。

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

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

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

如果可能,我们不想使用 lambda。

如果launch templates 使这成为可能。如果 AMI 出现故障,有什么建议可以回滚到以前的版本。

【问题讨论】:

    标签: amazon-web-services amazon-ec2 aws-lambda aws-sdk autoscaling


    【解决方案1】:

    launch templateslaunch configurations 都是不可变的。一旦创建它们,就无法更改它们,因此答案是否定的,您不能在任何这些中引用 variable AMI 参数,这意味着您需要构建新的启动配置/模板使用您选择的新(最新)版本的 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
    

    但这仅在您构建堆栈时才会生效。堆栈运行后,您将被困在启动期间的最新版本。

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2019-08-24
        • 1970-01-01
        • 2016-02-03
        • 2016-05-19
        • 2019-01-07
        • 1970-01-01
        • 2017-08-21
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多