我正在尝试集成 fcm 以进行推送通知,并且我们还使用一些 aws 服务进行开发。我想了解\xe2\x80\x99s 将 aws sns 与 fcm 结合使用,因为我做了一些研究,发现我们可以使用 fcm 发送推送通知而不需要 aws sns 那么使用 aws sns 有什么优势。
\namazon-web-services amazon-sns firebase firebase-cloud-messaging
我正在开发一个使用亚马逊aws服务的应用程序,它是一个信使.
我想使用IOS推送通知服务和亚马逊SNS来实现2个用户之间的通信.我可以通过向名为endpoint的目标发布消息来从SNS控制台发送消息.
但是,我无法通过IOS的amazon SDK从一个手机向另一个手机发送消息.我可以通过亚马逊的API以这种方式做到吗?
我想将名为messageDict的NSDictionary发送到目标endPoint.我可以不使用服务器实现这一目标吗?
NSDictionary *messageDict = [[NSDictionary alloc]init];
messageDict = @{ @"Name" : @"HelloWrold" ,@"Id" :@"GoodBye",};
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:messageDict options:NSJSONWritingPrettyPrinted error:nil];
NSString *jsonString = [[NSString alloc]initWithData:jsonData encoding:NSUTF8StringEncoding];
NSLog(@"Jsonstring %@",jsonString);
AWSSNS *publishCall = [AWSSNS new];
AWSSNSPublishInput *message = [AWSSNSPublishInput new];
message.subject = @"My First Message";
//This is the ending point
message.topicArn = @"arn:aws:sns:us-east-1:012345678912:endpoint/APNS_SANDBOX/appTesting/201sjad-XXXX-XXXX-XXXX-c34sdfdsf1d9c";
message.messageAttributes = messageDict;
message.messageStructure = jsonString;
[[publishCall publish:message]continueWithExecutor:[BFExecutor mainThreadExecutor] withBlock:^id(BFTask *task){
if (task.error != nil) {
NSLog(@"Error %@",task.error);
}
else{
NSLog(@"Successful");
}
return nil; …Run Code Online (Sandbox Code Playgroud) 这可能不是最好的问题,但我真的迷失在这里
我在欧盟(爱尔兰)区。我想配置 aws ses 以接收我的电子邮件并将它们转发到 SNS 主题并将它们保存在 S3 存储桶中。我使用 route53 作为我的名称服务器。
到目前为止我所做的
当我向 user86@example.com 发送电子邮件时,什么也没有发生。S3 中没有邮件,也没有 SNS 消息。如果我将收件人更改为 info@example.com 并将邮件发送到 user86@example.com,则邮件会退回。
我用 …
我正在将最新的PHP SDK(V3)用于Amazon SNS。我在尝试为平台创建端点(将用户设备注册到平台)时遇到问题。该错误表明我有一个“ InvalidArgumentException”,但我对该文档进行了仔细检查,并传递了正确的参数。请在下面找到我的代码。
try {
$credentials = new Credentials($SNS_ACCESS_KEY, $SNS_SECRET_KEY);
$s3Client = new S3Client([
'version' => 'latest',
'region' => 'us-west-2',
'credentials' => $credentials
]);
$SNSEndPointData = $s3Client->createPlatformEndpoint([
'PlatformApplicationArn' => $SNS_APP_ARN,
'Token' => $device_token
]);
}
catch(exception $e) {
print $e->__toString();
}
Run Code Online (Sandbox Code Playgroud)
如果有人可以帮助或指出正确的方向,我们将不胜感激。
我有一个存储桶,我已经从与该存储桶相同的区域中配置了sns主题作为通知,是否有任何方法可以配置其他区域中的sns主题以在发生s3事件时调用
我正在从SNS主题接收JSON,我认为这是不正确的
{
"Type":"Notification",
"MessageId":"message-id-is-this",
"TopicArn":"bouncer.topic.name.here",
"Message":"{\"notificationType\":\"Bounce\",\"bounce\":{\"bounceType\":\"Permanent\",\"bounceSubType\":\"General\",\"bouncedRecipients\":[{\"emailAddress\":\"bounce@simulator.amazonses.com\",\"action\":\"failed\",\"status\":\"5.1.1\",\"diagnosticCode\":\"smtp; 550 5.1.1 user unknown\"}],\"timestamp\":\"2017-04-24T12:58:05.716Z\",\"feedbackId\":\"feedback.id.is.here\",\"remoteMtaIp\":\"192.168.10.1\",\"reportingMTA\":\"dsn; smtp.link.here\"},\"mail\":{\"timestamp\":\"2017-04-24T12:58:05.000Z\",\"source\":\"senderEmail@domainname.com\",\"sourceArn\":\"arn:aws:ses:us-east-1:someid:identity/some@domain.org\",\"sourceIp\":\"127.0.0.1\",\"sendingAccountId\":\"sending.account.id.is.this\",\"messageId\":\"message-id-is-this\",\"destination\":[\"bounce@simulator.amazonses.com\"]}}",
"Timestamp":"2017-04-24T12:58:05.757Z",
"SignatureVersion":"1",
"Signature":"signature.link",
"SigningCertURL":"certificate.link.here",
"UnsubscribeURL":"un.subscribe.link"
}
Run Code Online (Sandbox Code Playgroud)
问题出在“消息”属性,而不是持有对象,而是引用对象的字符串
包含
"Message":"{\"key\":\"value\"}"
Run Code Online (Sandbox Code Playgroud)
代替
"Message":{"key":"value"}"
Run Code Online (Sandbox Code Playgroud)
因此没有映射到Message类
我暂时通过接收到字符串变量来解决此问题,然后将其转换
private String Message;
private Message objMessage;
Run Code Online (Sandbox Code Playgroud)
然后
Notification noti = toObject(jsonString, Notification.class);
Message msg = toObject(noti.getMessage(), Message.class);
noti.setObjMessage(msg);
Run Code Online (Sandbox Code Playgroud)
为了进行转换,我正在使用ObjectMapper.readValue(...)
解决此问题的正确方法是什么?
我按照/sf/answers/2703847891/中的说明将SNS与FCM连接到Android应用。部署到模拟器后,该应用程序会初始化,但不会收到任何消息。同一款应用在我的实际Nexus 6设备上可以正常运行并收到消息。为什么会有这种差异?
android amazon-web-services amazon-sns firebase google-cloud-messaging
我希望允许多个客户端可以将文件上传到S3存储桶(或存储桶).S3创建事件将触发将向SNS主题添加消息的通知.这有效,但我在确定如何识别哪个客户端上传文件时遇到问题.我可以通过显式检查上传文件的子文件夹/ S3名称来实现此功能,但我更愿意自动将客户端标识符添加为SNS消息的属性.
这可能吗?我的另一个想法是使用Lambda函数作为中间人来添加属性并将其传递给SNS主题,但是如果可能的话我还想在没有Lambda函数的情况下这样做.
我让 Lambda 订阅了 SNS 主题并将并发限制设置为 5。
一旦推送了 20 条 SNS 消息,Lambda 将运行 5 个实例并处理前 5 条 SNS 消息,这完全没问题。根据文档,其他消息将被视为受到限制并发送重试。再次似乎是预期的行为。
在这个阶段,我有 5 个 lambda 实例的 CloudWatch 日志,每个实例处理 1 条消息。还可以。
重试时间一到,我就会看到这 5 个实例进一步处理另一条消息,但是现在 5 个 lambda 实例中的每一个都有大约 8 个处理过的消息(应该有大约 4 个以导致 5 个实例处理总共 20 个消息)。实例处理了一些重试消息两次,两次都成功并且在不同的请求 ID 下。
似乎有时 SNS 消息可以传递两次,但鉴于上面的数字,看起来几乎每条消息都会传递和处理两次。
可以以某种方式避免这些吗?
Lambda 并发限制为 5,因为如果我推送 500 条消息,它将触发 500 个实例并在 lambda 创建连接时关闭我的 RDS。
所以再次提问 - 如果第一次处理成功结束,为什么重试消息会被处理两次。检测重复也很困难,因为它们每次都由不同的实例处理
amazon-sns ×10
amazon-s3 ×3
amazon-ses ×2
aws-lambda ×2
firebase ×2
amazon-sqs ×1
android ×1
concurrency ×1
ios ×1
java ×1
json ×1
objectmapper ×1
php ×1