通过Amazon Lambda触发Amazon SNS消息

时间:2015-07-22 15:23:23

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

我有一个Amazon Lambda实例和一个Amazon SNS实例。 Lambda代码监视我们数据库的变化,我希望它能够调用Amazon SNS向我们的用户发送推送。例如:

当我们其中一个论坛上的用户收到新消息时,Lambda代码会在每次运行时识别此更改(每10分钟一次),并应通过SNS向用户的智能手机发送推送。

当涉及到文档时,我正在碰壁;亚马逊的文档只讨论如何通过SNS触发Lambda代码,但反之则不然。有没有人有一个如何实现这个目标的例子?

3 个答案:

答案 0 :(得分:2)

在Lambda的上下文中推送SNS通知没有什么特别之处。我认为它只是您与之交互的另一种外部服务。

您可以做的是在您的lambda代码中引入AWS SDK,然后使用代码进行SNS调用。您需要注入正确的凭据才能调用Amazon SNS API(但如果您正在与数据库通信,则可能会执行类似的操作以获取数据库端点和凭据)

答案 1 :(得分:1)

是的,您可以使用AWS Lambda来实现您的目标。您还需要正确IAM Permissions允许Lambda IAM Role向您SNS Topic发布消息。

示例SNS Publish IAM Policy

{
    "Statement":[ {
        "Effect":"Allow",
        "Action":"sns:Publish",
        "Resource":"arn:aws:sns:*:<your account id>:<your topic id>"
    } ]
}

答案 2 :(得分:0)

您可以使用下面的lambda将SNS消息推送给用户,但您必须知道该用户的端点ARN是什么。例如,如果在Android应用中,当用户登录时,您将让应用向您的后端发送GCM(Google云消息传递)令牌(例如,通过触发lambda的API调用)。您的后端(已连接到GCM)可以使用此令牌查找哪个端点ARN对应于此类用户并将其放在下面的lambda中。或者,您可以让应用程序将端点ARN直接发送到您的后端,但我认为它可能不那么安全。确保您授予IAM权限,以便通过SNS发布到您的应用。您可以使用下面的lambda来推送消息:

sleep()