全,
我真的被困住了,几乎什么都试过了。有人能帮忙吗。
我在创建自动缩放组时提供了2个实例.我触发一个Lambda (操纵标记),它将实例名更改为唯一的名称。
所需的状态,我希望Lambda的第一个实例给第一个实例命名为"web-1“,那么第二个就会运行得很好,以指定一个名称"web-2”。
Current State I首先对运行的实例进行搜索,以查看"web-1“是否存在。因此,在本例中,我的Lambda执行两次并创建两个名称相同的实例( web-1,web-1)。
我怎么才能避开这一切?我知道问题是因为Lambda在听云观察事件。ASG的启动在同一时间创建了两个事件,在我的情况下,导致了我的问题。
谢谢。
发布于 2017-06-26 18:59:13
您正遇到一个经典的多线程问题。两个lambda函数同时执行,查看相同的“未使用”web-1并用相同的函数标记这两个函数。
您需要的是一个原子操作,它允许每个Lambda执行“允许”继续执行。您可以尝试使用助手DynamoDB表来序列化标记尝试。
attribute_not_exists或其他DynamoDB条件,以确保只有一个同时这样的写入成功。创建时间戳的原因是允许终止"web-1“,然后启动一个新的EC2实例,并将其标记为"web-1”。
上面的逻辑没有被证明是有效的,但是希望能够给出足够的指导来开发一个有效的解决方案。
https://stackoverflow.com/questions/44763317
复制相似问题