Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 通过Amazon Lambda触发Amazon SNS消息_Amazon Web Services_Amazon Sns_Aws Lambda - Fatal编程技术网

Amazon web services 通过Amazon Lambda触发Amazon SNS消息

Amazon web services 通过Amazon Lambda触发Amazon SNS消息,amazon-web-services,amazon-sns,aws-lambda,Amazon Web Services,Amazon Sns,Aws Lambda,我有一个Amazon Lambda实例和一个Amazon SNS实例。Lambda代码监视我们数据库中的变化,我希望它打电话给Amazon SNS,向我们的用户发送推送。例如: 当我们论坛上的用户收到新消息时,Lambda代码会在每次运行(每10分钟一次)时识别此更改,并应通过SNS向用户的智能手机发送推送 当涉及到文档时,我遇到了麻烦;亚马逊的文档只讨论如何通过SNS触发Lambda代码,而不是相反。有人举过我如何做到这一点的例子吗?在Lambda上下文中推送SNS通知没有什么特别之处。我会把

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

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


当涉及到文档时,我遇到了麻烦;亚马逊的文档只讨论如何通过SNS触发Lambda代码,而不是相反。有人举过我如何做到这一点的例子吗?

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


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

是的,您可以使用
AWS Lambda
实现您想要的功能。您还需要给予适当的
IAM权限
允许您的
Lambda IAM角色
向您发布消息
SNS主题

示例
SNS发布IAM策略

{
    "Statement":[ {
        "Effect":"Allow",
        "Action":"sns:Publish",
        "Resource":"arn:aws:sns:*:<your account id>:<your topic id>"
    } ]
}
{
“声明”:[{
“效果”:“允许”,
“行动”:“sns:发布”,
“资源”:“arn:aws:sns::”
} ]
}

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

var AWS=require('AWS-sdk');
var sns=新的AWS.sns({apiVersion:'2010-03-31'});
exports.handler=(事件、上下文、回调)=>{
log(JSON.stringify(事件))
var有效载荷={
“默认值”:“消息字符串”,
“GCM”:“{”+
“\”通知\“:{”+
“\”正文\“:\”将通知正文放在此处\“,”+
“\”标题“:\”将通知标题放在此处“+
"}"+
"}"
};
payload=JSON.stringify(payload);
变量参数={
Targetran:“将端点ARN放在这里”,
主题:“foo2”,
MessageStructure:'json',
信息:有效载荷
}
sns.publish(参数、函数(错误、数据){
if(err)console.log(err,err.stack);//发生错误
else console.log(数据);//响应成功
});

};你能找到这个问题的答案吗?我现在也遇到了同样的问题,文档仍然局限于这个特定的操作'