我使用的.NET SDK,并试图创建后立即标记一个新的实例后 - RunInstances后立即CreateTags。AWS,EC2 - CreateTags RunInstances
大多数它只是工作时间,但偶尔我会得到一个错误,该实例ID是无效的(在控制台随后检查或再次尝试,它是有效的)。我明白,与SQS,SDB等他们是'最终一致',它可能是必要的重试电话(尽管我相信SDK为你做到这一点) - 但一般来说,创建实例我没有认为这是必要的。更重要的是,我认为这不是一件好事;寻找一个特定的例外,并重试几乎无限,直到它的工作。
如果创建一个实例,并标记它必须进入一个分布式工作流与轮询和重试多余的集中式系统的过程中,我认为这是一个糟糕的情况!
我似乎无法找到这个文档中任何相关信息。我想如果我调用RunInstances并获得带有实例ID的响应,那么该实例ID应该立即对标记有效。
我对可能的解决方案的想法至今:几秒钟RunInstances(坏,任意延迟)
- 固定延迟立即尝试,否则,延迟5秒,然后重试,到“N”次(OK,但任意)
- 创建分布式工作流处理的任何链接的API调用这样,就需要EC2实例的中央多余的农场管理是可靠的(坏,大量过度设计)
- 寻找一些其他的解释,我可以打电话另一种API方法或设置一些请求,要么打电话让它工作
有没有其他人经历过这方面的知识,在该领域等?
(我在AWS社区论坛线程这里,还没有:https://forums.aws.amazon.com/thread.jspa?threadID=80489&tstart=0)
好吧,但只是为了确认 - 呼叫立即返回一个实例ID,但一会儿,该实例ID是无效和无用的? (我不需要实例正在运行,我只想标记它) –
您获得的InstanceID是有效的,因为它是已分配给您的新实例的真实ID。然而,Xen Hipervisor在后台异步构建虚拟机并将其设置为正在运行,因此,在给予该ID之后的很短一段时间内,该实例还没有实际存在,只要涉及API的其余部分并且调用到其他使用该ID的方法失败。 –
好吧,虽然我有点困惑:系统必须在某处记录实例ID *,例如跟踪它将要使用的AMI。 CreateTags会通过实例ID存储标签信息,所以我无法想象为什么标签与VM的状态,管理程序或其他任何东西有关。我不认为你有什么可以引用这一切,我希望找到一些文档? –