Amazon web services 自动删除SQS队列
是否有一种方法可以完全自动删除SQS队列。我有一个解决方案,服务器在启动时创建一个SQS并订阅SNS主题 但是,可能存在服务器崩溃且无法恢复的情况。在这种情况下,我将用另一台服务器替换服务器,该服务器将在启动时创建自己的队列。现在,前面的队列将不再使用Amazon web services 自动删除SQS队列,amazon-web-services,amazon-sqs,Amazon Web Services,Amazon Sqs,是否有一种方法可以完全自动删除SQS队列。我有一个解决方案,服务器在启动时创建一个SQS并订阅SNS主题 但是,可能存在服务器崩溃且无法恢复的情况。在这种情况下,我将用另一台服务器替换服务器,该服务器将在启动时创建自己的队列。现在,前面的队列将不再使用 有没有一种方法可以让队列自动删除,同时我去显式删除它(可能像队列保持空5天,它会自动删除或其他替代方法)?目前,AWS SQS没有提供一种机制,在队列空了一定天数时自动删除队列。甚至我都觉得这是一个必要的功能。但有办法解决这个问题 下面提到的是根
有没有一种方法可以让队列自动删除,同时我去显式删除它(可能像队列保持空5天,它会自动删除或其他替代方法)?目前,AWS SQS没有提供一种机制,在队列空了一定天数时自动删除队列。甚至我都觉得这是一个必要的功能。但有办法解决这个问题 下面提到的是根据您问题中的场景删除AWS SQ的几种方法。你可以选择最适合你的
没有自动删除队列的方法。您可以使用标记来标记已连接的资源(即,在创建时标记队列或具有各自实例id的其他资源),并使用一个简单的脚本来读取所述标记,如果该实例id不存在,则将其删除 以下是如何在cli上执行此操作:
(我假设服务器指的是EC2实例。也可以使用Ip)考虑使用CloudFormation部署SQS队列、SNS主题、EC2实例以及此工作负载所需的任何其他内容。当您决定启动新服务器时,因为您已检测到旧服务器存在问题,只需删除旧的CloudFormation堆栈并创建一个新的堆栈。如果我正确理解了您的答案:在这种情况下,我甚至不需要手动删除旧的CloudFormation堆栈。您已指示必须替换现有服务器。这大概是一个有人工干预的明确决定。我的意思是用一个删除旧堆栈并创建新堆栈的过程(在一个步骤中)替换该过程。如果你真的不想这样做,那么你可以在新的EC2实例上放置一个启动时脚本(在userdata中),它可以删除旧部署的剩余部分(基于标记,或者其他一些确定需要删除的内容的方法)。另一种选择是使用自动缩放来确保你总是有一个,并且只有一个,健康的服务器。正确设置运行状况检查,自动伸缩将杀死不健康的服务器,并启动一个新服务器(使用相同的SQS队列和SNS主题)。将其包装在CloudFormation模板中以便于部署。不确定为什么每次启动EC2实例时都要创建一个新队列——难道不会有丢失消息的风险吗?自动集成测试就是一个队列清理有用的例子。我的测试希望在自己的沙箱中工作,但由于各种原因,测试结束时的清理代码并不总是运行。理想情况下,队列的配置会导致它们在一段合理的时间后过期,正如OP所建议的那样。