【发布时间】:2021-05-14 22:47:27
【问题描述】:
我想向 SNS 主题发送取消订阅电子邮件的请求,由于我是 Lambda 新手,请告诉我这里可以使用什么功能,我有电子邮件地址和主题 arn 作为传入参数。我正在使用 python 3.8 boto 3 。
提前致谢。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sns
我想向 SNS 主题发送取消订阅电子邮件的请求,由于我是 Lambda 新手,请告诉我这里可以使用什么功能,我有电子邮件地址和主题 arn 作为传入参数。我正在使用 python 3.8 boto 3 。
提前致谢。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-sns
要取消订阅某个主题,您需要订阅 ARN。然后你可以使用sns.unsubscribe。示例:
response = client.unsubscribe(
SubscriptionArn='string'
)
如果您只有订阅者的主题 ARN 和电子邮件地址,那么您需要找到订阅 ARN。您可以为此使用sns.list_subscriptions_by_topic。示例:
response = client.list_subscriptions_by_topic(
TopicArn='string',
)
然后您可以获取响应(订阅列表)并遍历它以查找与您给定电子邮件地址的匹配项,并使用订阅 ARN 调用上述unsubscribe 方法。如果响应不包含您的电子邮件地址,但由于响应中的NextToken 不为空而可能有更多订阅,那么您需要使用NextToken 值并将其提供给您的下一个sns.list_subscriptions_by_topic 请求。示例:
response = client.list_subscriptions_by_topic(
TopicArn='string',
NextToken='string'
)
但是,如果有数千个订阅,请注意可能需要一段时间才能找到正确的订阅 ARN。在这种情况下,我强烈建议您将订阅 ARN 存储在电子邮件地址旁边的某个位置,这样可以更轻松地取消订阅,并且您无需遍历所有订阅。
【讨论】:
subscribe 请求中添加returnSubscriptionArn。在此处查看文档:boto3.amazonaws.com/v1/documentation/api/latest/reference/…
subscribe 的响应中获得 ARN,但电子邮件地址的所有者仍需要确认他们拥有此电子邮件地址。