AWS 如何让 ASG 始终使用最新的 AMI?
Posted
技术标签:
【中文标题】AWS 如何让 ASG 始终使用最新的 AMI?【英文标题】:AWS how to make ASG always use the latest AMI? 【发布时间】:2020-02-27 21:44:44 【问题描述】:因此,我们正在尝试频繁构建映像并将它们更新到我们的启动配置,并且我们希望我们的启动配置始终使用最新的 AMI(亚马逊机器映像)。
当然,我们希望这一切都以自动化的方式发生。
我们正在尝试找出如何最好地实现自动化,以便 ASG(Auto Sacking Group)使用最新的 AMI。
这里的一种有效方法是让 Lambda 将最新的 AMI 应用于启动配置。
有没有一种方法可以让我们的启动配置自动知道使用最新的 AMI,launch templates
会让这成为可能吗?
如果可能,我们不想使用 lambda。
如果launch templates
使这成为可能。如果 AMI 出现故障,有什么建议可以回滚到以前的版本。
【问题讨论】:
【参考方案1】:launch templates
和 launch 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 标记提交,所以......理论上......也许......这对我们有用。
【讨论】:
以上是关于AWS 如何让 ASG 始终使用最新的 AMI?的主要内容,如果未能解决你的问题,请参考以下文章