如何为另一个 AWS 账户中的 Amazon SQS 队列重新创建“已删除”的 Amazon SNS 主题订阅?

1 分钟阅读
0

我想要为另一个 AWS 账户中的 Amazon SQS 队列重新创建已删除的 Amazon SNS 主题订阅。

如果您从没有订阅的账户调用 Amazon SNS Unsubscribe API,则订阅将进入已删除状态,持续 72 小时。当 SNS 主题订阅处于已删除状态时,拥有该订阅的账户无法为同一端点重新订阅该主题。

72 小时后,Amazon SNS 会清除已删除的订阅,拥有该订阅的账户可以为同一端点重新订阅该主题。

如果您不想等待 72 小时才重新订阅,则可以通过执行以下任一操作手动重新创建订阅。

**注意:**最佳实践是从同一 AWS 账户运行 SubscribeUnsubscribe API 调用。当您调用 Subscribe API 时,您用于进行调用的 AWS 账户将成为订阅所有者。

解决方法

**重要事项:**以下过程适用于 HTTP 和 HTTPS 端点订阅用户。它不适用于 AWS Lambda 函数订阅用户

向收到的 UnsubscribeConfirmation 消息中的 SubscribeURL 发送 HTTP GET 方法请求

  1. 在删除订阅后发送到 SQS 队列的 UnsubscribeConfirmation 消息中,找到 SubscribeURL。然后,将该 URL 复制并粘贴到文本文档中。

  2. SubscribeURL 发送 HTTP GET 方法请求

    HTTP GET 方法请求示例

    curl -X GET "https://sns.us-west-2.amazonaws.com/?Action=ConfirmSubscription&TopicArn=arn:aws:sns:us-west-2:123456789012:MyTopic&Token=<token>"

从拥有 SNS 主题的 AWS 账户调用 Amazon SNS Subscribe API,然后确认订阅

  1. 从拥有 SNS 主题的 AWS 账户调用 Amazon SNS Subscribe API
  2. 让有权从 SQS 队列读取消息的 AWS 用户确认订阅

创建新的 Amazon SNS 主题以替换当前主题,然后订阅该新主题

  1. 创建新的 SNS 主题以替换当前主题。
  2. 为 SQS 队列订阅新主题

相关信息

删除 Amazon SNS 订阅和主题

将 Amazon SNS 消息发送到其他账户中的 Amazon SQS 队列

Amazon SQS 队列的扇出

AWS 官方
AWS 官方已更新 9 个月前