自动删除 SQS 队列
Auto Delete SQS queue
有没有办法完全自动删除 SQS 队列。我有一个解决方案,其中服务器在启动时创建一个 SQS 并订阅 SNS 主题。
不过也有可能出现服务器崩溃无法恢复的情况。在这种情况下,我会用另一个服务器替换服务器,该服务器会在启动时创建自己的队列。现在不会再使用之前的队列了。
有没有办法让队列随着我的前进而自动删除并明确删除它(可能就像如果队列保持空 5 天,它会被自动删除或其他一些替代方法)?
目前,AWS SQS 不提供当队列空了一定天数时自动删除队列的机制。即使我觉得这是一个必需的功能。但是有办法解决这个问题。
下面提到了几种删除AWS SQS的方法,根据您提问的场景。你可以select最适合你的。
- 维护一个小型 数据库 Table,它保持服务器 IP 和队列 URL 之间的 映射。当服务器自行启动时,您可以将值插入此 table。维护一个 Cloudwatch 规则,该规则将调用 Lambda,它将遍历 table 中的值以查看服务器是否 运行 或不(可能是心跳)。如果特定服务器不是 运行,只需获取相关的 SQS URL 并 删除该特定队列 。 (我在这里推荐了 Lambda,因为它很便宜)
sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl));
每当服务器启动时,它可以使用 社交网络。使用 CloudWatch Rule,不时调用 Lambda,并获取所有实例,并检查是否有任何实例已关闭。如果某个实例宕机,请使用 SNS 向相关人员发送电子邮件,告知该服务器已宕机。它是半自动的,用户可以在看到邮件后手动删除队列。
简单地让空队列独立存在。 AWS 中可以创建多少个队列没有限制。那么,如果这个过程很困难,为什么还要费心删除它们。只需在进行时创建新的队列。 (参见:No Max number of SQS Queue Limitation)
没有 auto-delete 队列的方法。您可以使用标签来标记已连接的资源(即在创建时使用各自的 instance-id 标记队列或其他资源),并使用一个简单的脚本来读取所述标签并在 instance-id 不存在时删除.
以下是如何在 cli 上执行此操作:
https://docs.aws.amazon.com/cli/latest/reference/sqs/tag-queue.html
(我假设服务器是指 EC2 实例。也可以使用 Ip)
有没有办法完全自动删除 SQS 队列。我有一个解决方案,其中服务器在启动时创建一个 SQS 并订阅 SNS 主题。
不过也有可能出现服务器崩溃无法恢复的情况。在这种情况下,我会用另一个服务器替换服务器,该服务器会在启动时创建自己的队列。现在不会再使用之前的队列了。
有没有办法让队列随着我的前进而自动删除并明确删除它(可能就像如果队列保持空 5 天,它会被自动删除或其他一些替代方法)?
目前,AWS SQS 不提供当队列空了一定天数时自动删除队列的机制。即使我觉得这是一个必需的功能。但是有办法解决这个问题。
下面提到了几种删除AWS SQS的方法,根据您提问的场景。你可以select最适合你的。
- 维护一个小型 数据库 Table,它保持服务器 IP 和队列 URL 之间的 映射。当服务器自行启动时,您可以将值插入此 table。维护一个 Cloudwatch 规则,该规则将调用 Lambda,它将遍历 table 中的值以查看服务器是否 运行 或不(可能是心跳)。如果特定服务器不是 运行,只需获取相关的 SQS URL 并 删除该特定队列 。 (我在这里推荐了 Lambda,因为它很便宜)
sqs.deleteQueue(new DeleteQueueRequest(myQueueUrl));
每当服务器启动时,它可以使用 社交网络。使用 CloudWatch Rule,不时调用 Lambda,并获取所有实例,并检查是否有任何实例已关闭。如果某个实例宕机,请使用 SNS 向相关人员发送电子邮件,告知该服务器已宕机。它是半自动的,用户可以在看到邮件后手动删除队列。
简单地让空队列独立存在。 AWS 中可以创建多少个队列没有限制。那么,如果这个过程很困难,为什么还要费心删除它们。只需在进行时创建新的队列。 (参见:No Max number of SQS Queue Limitation)
没有 auto-delete 队列的方法。您可以使用标签来标记已连接的资源(即在创建时使用各自的 instance-id 标记队列或其他资源),并使用一个简单的脚本来读取所述标签并在 instance-id 不存在时删除.
以下是如何在 cli 上执行此操作: https://docs.aws.amazon.com/cli/latest/reference/sqs/tag-queue.html
(我假设服务器是指 EC2 实例。也可以使用 Ip)