自动递增EC2实例名称

时间:2019-06-13 20:09:56

标签: powershell amazon-ec2 autoscaling

我在Stackoverflow上看到了许多问题,询问是否存在一种自动增加实例名称的方法。例如:

foo1
foo2
fooN

我正在尝试查看Powershell中是否有这样做的方法。我正在使用AutoLaunchConfiguration / ASG启动实例。有自动编程实例方式的编程方式吗?到目前为止,我所见过的每一种资源都说有可能,但没有一种提供这样做的方法。这是我正在查看的一些资源:

有人使用AutoLaunchConfiguration和ASG进行此操作的示例吗?如果是这样,您能否提供可以向我提供此信息的链接/文章?

1 个答案:

答案 0 :(得分:1)

第一件事是确定“自动递增”的含义

例如,如果这些实例已经存在:

  • foo1
  • foo2

那么显然下一个实例将是foo3

但是,我们可以说一个实例先前由于负载减少而被终止,而当前正在运行的实例是:

  • foo1
  • foo3

然后,问题是下一个实例是foo2还是foo4

如果答案为foo4,请考虑一下foo4后来终止并启动另一个实例的情况。应该是foo4还是foo5(因为以前有foo4)。

这实际上归结为确定为什么您要自动递增的名称

原因通常是:

  • 需要一个唯一名称
  • 需要一个人性化的名称
  • 需要提示启动实例的顺序

如果需要一个唯一名称,则实例ID 可以完全满足此需求,而无需其他名称。

让我们假设您想使用一个人性化的名称,并且可以重新使用以前使用的名称(例如,如果foo1foo3存在,则使用{{1} } 下一个)。在这种情况下,您需要在逻辑上检查现有实例并找到第一个未使用的编号的东西。

另一方面,如果您不想再使用名称,那么您将需要某个位置来存储“当前”编号,以便在下一个实例中可以递增该编号。

然后,最后出现了一个问题:如何分配自动递增的名称(这是您的原始问题,但是上面的内容对于理解也是很重要的)。我的建议是:

  • 向通过用户数据触发的每个实例添加一些代码,以使其在实例启动时运行(例如PowerShell)
  • 该代码将使用describe-instances或保留计数的位置检查现有实例,然后为其分配下一个数字
  • 然后代码可以自行调用create-tags,并添加一个具有适当名称的foo2标签