AWS EC2 预留 ID 到底是什么以及它代表什么?

AWS EC2 预留 ID 到底是什么以及它代表什么?

我编写了一个脚本来创建 EC2 卷的快照。该脚本会查看哪些实例正在运行、哪些卷连接到这些实例,然后为这些卷创建快照,而忽略其余卷。

使用describe-instances,我得到的是预留 ID,而不是实例 ID。这很令人困惑,但事实就是如此。启动实例时,会为该实例创建预留。

我对预订的概念仍然感到困惑。

附注:我知道什么是预留实例,这与我在这里描述的不同。“预留实例”意味着您租用一个实例一年、两年或三年,并因此获得折扣。因此,您可以预留 t2.medium 一年,如果您不使用它,您仍然需要付费,但如果您使用它,则比平时便宜。

现在回到“预留 ID”。AWS FAQ 中写道:

EC2 启动的每个实例都有一个预留 ID。预留 ID 与实例启动请求具有一对一关系,但如果您使用同一启动请求启动多个实例,则预留 ID 可以与多个实例相关联。

然后是这个SE问题:Amazon EC2 中的“预留”有什么用途

目前还不清楚预订 ID 到底代表什么

如果您一次启动一个实例,则每个实例都有自己唯一的预留 ID。

  • 何时或如何将单个预订 ID 链接到多个实例?
  • 它可以链接到几个不相关的实例吗?假设我有一个 Web 服务器和一个数据库服务器。我可以在一个预订 ID 下启动它们吗?
  • 或者,预订 ID 是否只能链接到多次启动的一个实例,例如出于负载平衡目的。

在我们的情形下,所有实例都有一个唯一的预留 ID,但我想知道对于我正在运行的脚本来说,在什么情况下这个 ID 会改变describe-instances

答案1

与预留实例无关ResearvationId。它是一个唯一值,表示启动 EC2 实例的请求。启动请求可能来自 CLI、AutoScaling 或 AWS 管理控制台。

每个请求aws ec2 run-instances将返回零个或多个实例预留。通常,如果成功,则返回一个实例预留,但文档中说的是“零个或多个”(1),因此单个启动请求可能会被拆分为多个实例预留。

通常,同时启动的实例会得到相同的值ReservationId,但这可能不是硬性规定。但在两个不同时间启动两个实例很可能会得到不同的ReservationId值。

例如,作为aws ec2 run-instances命令的一部分,您可以指示同时启动的最小和最大实例数。很多时候,这将是 min = max = 1,但只要 1 <= min <= max,它可以更多和/或不同。您还可以从 AWS 管理控制台启动新实例时指定要运行的实例数。这可以在“步骤 3:配置实例详细信息”页面上看到。

执行时,您的结果将根据其启动方式aws ec2 describe-instances按值分组。ReservationId

一般来说,您不需要担心这个ReservationId值,除非您想知道它们是否同时启动,此时AmiLaunchIndex实例上的值将与预留中的实例不同(0、1、2 等)。

参考:

答案2

将预订 ID 视为交易 ID。例如,如果您一次购买 5 张票。您有一个交易 ID,但有五个预订 ID。

同样的,如果你使用以下命令一次启动一个实例aws ec2 运行实例,您将拥有一个预订ID和一个实例ID。

但如果你同时启动 10 个实例aws ec2 运行实例,您将拥有 1 个预留 ID 和 10 个实例 ID。

相关内容