【问题标题】:Subscribe to SNS topic with lambda as endpoint订阅以 lambda 为端点的 SNS 主题
【发布时间】:2018-02-27 14:17:57
【问题描述】:

我正在尝试使用 lambda 函数作为端点订阅 SNS 主题。

在通过 AWS 控制台尝试时,它工作得非常好。在 SNS->Subscriptions 中添加了一个订阅,这反过来也向 Lambda->Functions->[function_name]->Triggers 中的 lambda 函数添​​加了一个触发器

通过 boto3 或 AWS cli 尝试相同的操作时,它会添加新订阅,但不会在 Lambda->Functions->[function_name]->Triggers 中添加触发器。 因此,不会为此 SNS 主题触发 lambda 函数。

import boto3
client = boto3.client('sns')
sns_topic_arn = '<sns_topic_arn>'
lambda_fn_arn = '<lambda_fn_arn>'

response = client.subscribe(TopicArn=sns_topic_arn,Protocol='lambda',
Endpoint=lambda_fn_arn)

我确保 sns_topic_arn 和 lambda_fn_arn 是正确的。 我错过了什么吗?

【问题讨论】:

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


    【解决方案1】:
    1. lambda 端点是否使用确认消息中的令牌调用 ConfirmSubscription 操作?另请注意,这些确认令牌是临时的,仅在三天内有效。你在刷新它们吗?

    2. 您能否检查来自 subscribe API 的响应,看看响应是否有效以及是否有 SubscriptionArn?

    3. 另外,您是否通过boto3客户端的add_permission API添加了足够的权限,使其可以触发lambda?

    参考:http://boto3.readthedocs.io/en/latest/reference/services/sns.html#SNS.Client.subscribe 获取 API 文档和更多详细信息

    【讨论】:

    • 我承认我对 SNS 或 lambda 了解不多。我只是想关注文档,并将一些东西放在一起。 1. 我试图在boto3 中使用confirm_subscription,但我不知道我会在哪里收到发送到lambda 函数的临时令牌。 2. 我检查了订阅 API 的响应,它是有效的。 3.如何添加足够的权限。 Boto3 文档对这个 API 没有多说。
    • 问题已获得许可。 boto3.readthedocs.io/en/latest/reference/services/… 这修复了它。
    • 太棒了。感谢您的确认。
    猜你喜欢
    • 2016-06-27
    • 2015-01-14
    • 2021-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    • 2019-09-02
    • 2016-04-03
    相关资源
    最近更新 更多