首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Amazon触发Amazon消息

通过Amazon触发Amazon消息
EN

Stack Overflow用户
提问于 2015-07-22 15:23:22
回答 3查看 2.7K关注 0票数 2

我有一个Amazon实例和一个Amazon实例。Lambda代码监视我们数据库中的变化,我希望它打个电话给Amazon,向我们的用户发送推送。例如:

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

在文档方面,我遇到了麻烦;Amazon的文档只讨论如何通过SNS触发Lambda代码,而不是相反。有人有我如何做到这一点的例子吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-07-22 16:39:27

是的,你可以使用AWS Lambda来实现你想要的。您还需要提供适当的IAM Permissions,允许Lambda IAM RoleSNS Topic发布消息。

示例SNS Publish IAM Policy

代码语言:javascript
复制
{
    "Statement":[ {
        "Effect":"Allow",
        "Action":"sns:Publish",
        "Resource":"arn:aws:sns:*:<your account id>:<your topic id>"
    } ]
}
票数 1
EN

Stack Overflow用户

发布于 2015-07-22 16:25:54

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

您可以做的是在lambda代码中插入AWS,然后使用代码进行SNS调用。您需要注入正确的凭据才能调用Amazon (但是,如果您正在与数据库交谈,则可能在获取数据库端点和凭据方面做类似的事情)。

票数 2
EN

Stack Overflow用户

发布于 2017-11-14 21:12:40

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

代码语言:javascript
复制
var AWS = require('aws-sdk');
var sns = new AWS.SNS({apiVersion: '2010-03-31'});

exports.handler = (event, context, callback) => {

    console.log(JSON.stringify(event))

var payload = {
"default": "The message string.",
"GCM":"{"+
   "\"notification\":{"+
       "\"body\":\"PUT NOTIFICATION BODY HERE\","+
       "\"title\":\"PUT NOTIFICATION TITLE HERE\""+
   "}"+
"}"
};

  payload = JSON.stringify(payload);

    var params = {
      TargetArn: 'PUT THE ENDPOINT ARN HERE',
      Subject: 'foo2',
      MessageStructure: 'json',
      Message: payload
    }
    sns.publish(params, function(err, data) {
      if (err) console.log(err, err.stack); // an error occurred
      else     console.log(data);           // successful response
    });

};

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31567437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档