【问题标题】:UnSubscribe an Amazon SNS topic using AWS Lambda fn with Topic ARN and Email address使用带有主题 ARN 和电子邮件地址的 AWS Lambda fn 取消订阅 Amazon SNS 主题
【发布时间】:2021-05-14 22:47:27
【问题描述】:

我想向 SNS 主题发送取消订阅电子邮件的请求,由于我是 Lambda 新手,请告诉我这里可以使用什么功能,我有电子邮件地址和主题 arn 作为传入参数。我正在使用 python 3.8 boto 3 。

提前致谢。

【问题讨论】:

    标签: amazon-web-services aws-lambda amazon-sns


    【解决方案1】:

    要取消订阅某个主题,您需要订阅 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 存储在电子邮件地址旁边的某个位置,这样可以更轻松地取消订阅,并且您无需遍历所有订阅。

    【讨论】:

    • 感谢您的详细回答,创建订阅时需要存储 SubscriptionArn。
    • 嗨 S.hesse,有没有办法在发送订阅请求时获得 SubscriptionArn 作为响应,因为到目前为止我得到了这个“SubscriptionArn”:“等待确认”。只有当用户通过电子邮件订阅中的给定链接确认订阅时才会形成。
    • 是的:您需要在您的subscribe 请求中添加returnSubscriptionArn。在此处查看文档:boto3.amazonaws.com/v1/documentation/api/latest/reference/…
    • 这是否意味着我们不必等待用户点击电子邮件链接来确认订阅?响应订阅请求,我们将获得 arn?还有一种方法可以仅通过 lambda 自己确认订阅
    • 您仍然需要等待用户确认订阅。但您可以在订阅仍处于挂起状态时检索订阅 ARN。您当然可以编写一个 Lambda 函数来订阅某人的电子邮件 -> 然后您会在 subscribe 的响应中获得 ARN,但电子邮件地址的所有者仍需要确认他们拥有此电子邮件地址。
    猜你喜欢
    • 1970-01-01
    • 2023-01-29
    • 2016-04-08
    • 2015-09-26
    • 1970-01-01
    • 2015-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多