我正在尝试发布到SNS主题,然后通知Lambda函数以及SQS队列.我的Lambda函数会被调用,但CloudWatch会记录我的"event"对象是None.boto3文档声明使用kwarg MessageStructure ='json'但会抛出ClientError.
希望我已经提供了足够的信息.
示例代码:
import json
import boto3
message = {"foo": "bar"}
client = boto3.client('sns')
response = client.publish(
TargetArn=arn,
Message=json.dumps(message)
)
Run Code Online (Sandbox Code Playgroud) 该文件建议使用该消息属性,但我似乎无法找出什么属性名称使用.
这项工作到目前为止:
sns = boto3.client('sns', region_name='eu-west-1')
sns.publish(
PhoneNumber='+491701234567',
Message='hi there',
MessageAttributes={
'AWS.SNS.SMS.SenderID': {
'DataType': 'String',
'StringValue': 'MySenderID'
}
}
)
Run Code Online (Sandbox Code Playgroud)
SMS已发送,但发件人ID字段中包含一些(随机?)值.所以我的消息属性设置似乎被忽略了.设置自定义发件人ID的正确方法是什么?
我知道在rails和/或node.js和PubNuB上使用ruby的一些选项,这是一种具有许多API的服务,因此您可以在(几乎)任何平台之间发送/接收通知.
我现在如何从PHP发送消息以及如何使用Amazon SNS在那里接收它们,但是如何在JS/jQuery脚本上接收推送通知(SNS消息)?
谢谢.
我一直在网上搜索,没有任何明确的答案来确认亚马逊SNS的订阅请求.我已经将订阅从亚马逊控制台发送到我的网站,但下一步是什么?我使用amazon EC2作为我的PHP服务器.
我想使用AWS javascript sdk发送带有验证码的短信.
var AWS = require('aws-sdk');
AWS.config.region = 'us-east-1';
var sns = new AWS.SNS();
var params = {
Message: 'this is a test message',
MessageStructure: 'string',
PhoneNumber: '+12346759845'
};
sns.publish(params, function(err, data) {
if (err) console.log(err, err.stack); // an error occurred
else console.log(data); // successful response
});
Run Code Online (Sandbox Code Playgroud)
我一直在"params"中找到"意外的密钥\'PhoneNumber".
我已经按照文档中的示例进行了操作,据我所知,我所拥有的内容似乎是有效的.显然,我不需要创建一个主题来发送单个短信.
像许多公司一样,我工作的那个公司不习惯使用Apple的APNS:没有官方图书馆,随机截断的流等等...... Android的推送系统也是如此:限于小批量,完全不同于Apple的APNS ...这就是为什么我们正在寻找替代方案,当亚马逊声称能够几乎免费发送数百万推送通知时,我们认为SNS将是完美的解决方案.
问题是我们经常有超过一百万台设备需要解决,显然我们的推送活动很少针对相同的设备.就我们挖掘而言,唯一的解决方案是使用AWS API,它只提供一种方法来一次创建一个端点!这对我们来说是一件大事,因为经过一些测试,我们认为为了创建1 000 000个端点,需要大约15小时(约17个呼叫/秒).
即使在创建了所有端点之后,为了立即发送所有推送,需要将端点添加到主题中,并且再次,这必须一次完成一个端点(因此再多15个小时).事件,如果我们多线程我们的电话让我们说30个线程,它仍然需要一个小时!
那么,有人能告诉我们是否有任何错过的东西吗?亚马逊是否真的希望我们在30小时内充斥他们的网络服务以创建一个推送活动?如果花费数小时准备,他们怎么能假装一秒钟发送一百万次?他们是否正在为SNS开发批处理API?是否可以插入包含令牌的Amazon DB来提供SNS主题?
performance push-notification amazon-web-services apple-push-notifications amazon-sns
我正在使用AWS SNS(简单通知服务)发送电子邮件通知.在电子邮件的内容中,我必须以表格形式表示数据.目前我使用简单的文本字符串来打印表格,但是当通过移动设备和平板电脑等较小的屏幕设备访问电子邮件时会出现格式问题,而且表格数据无法解释.我希望使用html表而不是简单的字符串表,因为html可以被所有大小的设备更充分地呈现.所以我想在html表中表示我的数据,并希望这个表由电子邮件客户端呈现,无论它是什么.可以使用AWS SNS完成吗?
I have a issue with publishing sns to a specific endpoint.
我的代码:
var AWS = require('aws-sdk');
AWS.config.loadFromPath('/web/config.json');
var sns = new AWS.SNS();
sns.publish({
// TopicArn:'arn:aws:sns:us-west-2:302467918846:MyTestTopik',
TargetArn: 'arn:aws:sns:us-west-2:302467918846:MyTestTopik:613ee49c-d4dc-4354-a7e6-c1d9d8277c56',
Message: "Success!!! ",
Subject: "TestSNS"
}, function(err, data) {
if (err) {
console.log("Error sending a message " + err);
} else {
console.log("Sent message: " + data.MessageId);
}
});
Run Code Online (Sandbox Code Playgroud)
当我使用时TopicArn,一切都很好.但是当我尝试向特定端点发送通知时,我会收到错误:
发送消息时出错InvalidParameter:参数无效:主题名称
我不知道它是什么样的参数,从哪里来.
我正在创建一个iOS应用程序,而对于我们的推送通知,我们正在使用亚马逊的简单通知服务(SNS).
SNS很精彩,但文档很少.我正在使用亚马逊的Python库boto,我已经找到了如何发送纯文本推送通知:
device_arn = 'MY ENDPOINT ARN GOES HERE'
plain_text_message = 'a plaintext message'
sns.publish(message=plain_text_message,target_arn=device_arn)
Run Code Online (Sandbox Code Playgroud)
但是,文档中不清楚的是如何创建Apple推送通知服务(APNS)消息.我需要发送声音和徽章以及推送通知,但无法弄清楚如何格式化消息的JSON.
到目前为止,这是我最好的猜测:
message = {'default':'default message', 'message':{'APNS_SANDBOX':{'aps':{'alert':'inner message','sound':'mySound.caf'}}}}
messageJSON = json.dumps(message,ensure_ascii=False)
sns.publish(message=messageJSON,target_arn=device_arn,message_structure='json')
Run Code Online (Sandbox Code Playgroud)
但是,当我运行此代码时,我在通知上看到的只是"默认消息" - 这意味着Amazon SNS拒绝了我的消息格式,default而是显示了该消息.
如何正确格式化此JSON?
python json amazon-web-services apple-push-notifications amazon-sns
这是与我的问题相关的Cloudformation模板代码:
"SNSTopic": {
"Type": "AWS::SNS::Topic",
"Properties": {
"TopicName": "JumpboxPresenceTopic",
"DisplayName": "Jumpbox Presence Topic",
"Subscription": [
{
"Endpoint": {
"Fn::GetAtt": [
"Lambda",
"Arn"
]
},
"Protocol": "lambda"
}
]
}
},
"Lambda": {
"Type": "AWS::Lambda::Function",
"Properties": [...]
Run Code Online (Sandbox Code Playgroud)
但它不会显示在lambda函数Event Sources面板中:
关于这一点的奇怪之处在于,如果我从SNS仪表板为同一个lambda函数创建一个新订阅,则不会创建新的订阅,因为它将完全重复.但是,现在,如果我检查Lambda仪表板中的Event Sources面板,我可以看到以下新条目:
SNS: JumpboxPresenceTopic
我觉得这在亚马逊方面是一个问题,但我可能是错的.我的方法有问题还是AWS的限制?
amazon-web-services amazon-sns aws-cloudformation aws-lambda
amazon-sns ×10
aws-lambda ×2
boto3 ×2
javascript ×2
node.js ×2
python ×2
json ×1
performance ×1
python-2.7 ×1
sms ×1