我不明白何时使用SNS与SQS,为什么它们总是耦合在一起?
我正在AWS为我的android项目使用资源,我打算为我的项目添加推送通知服务AWS SNS.有几个问题困扰我.我没有发现任何关于这些的问题,除了一两个但解释不清楚.
1. AWS支持FCM吗?SNS与...合作GCM.但谷歌建议使用FCM代替GCM.我没有找到AWS支持FCM.
2. AWS即使在发送推送通知后,还是将消息(或数据)存储到他们的数据库中?
3.我试过把FCM api密钥放在SNS应用平台上,显示无效参数为什么?
android amazon-web-services amazon-sns google-cloud-messaging firebase-cloud-messaging
您是否可以使用node.js支持的AWS Lambda函数向SNS主题发布消息?
我试图通过web api将SNS messeges发送到android.从http://aws.amazon.com/developers/getting-started/php/下载并安装了SDK
运行sample.php时出现以下错误:
Fatal error: Uncaught exception 'Aws\Common\Exception\InstanceProfileCredentialsException' with message 'Error retrieving credentials from the instance profile metadata server. When you are not running inside of Amazon EC2, you must provide your AWS access key ID and secret access key in the "key" and "secret" options when creating a client or provide an instantiated Aws\Common\Credentials\CredentialsInterface object. ([curl] 28: Connection timed out after 5016 milliseconds [url] http://169.254.169.254/latest/meta-data/iam/security-credentials/)' in C:\xampp\htdocs\aws-php\vendor\aws\aws-sdk-php\src\Aws\Common\InstanceMetadata\InstanceMetadataClient.php:85 Stack trace: #0 C:\xampp\htdocs\aws-php\vendor\aws\aws-sdk-php\src\Aws\Common\Credentials\RefreshableInstanceProfileCredentials.php(52): Aws\Common\InstanceMetadata\InstanceMetadataClient->getInstanceProfileCredentials() #1 C:\xampp\htdocs\aws-php\vendor\aws\aws-sdk-php\src\Aws\Common\Credentials\AbstractRefreshableCredentials.php(54): Aws\Common\Credentials\Refreshable in …Run Code Online (Sandbox Code Playgroud) php amazon-web-services amazon-sns google-cloud-messaging aws-sdk
我正在使用Amazon SNS.通知效果很好,但有时我会收到此错误:
{
"message": "Endpoint is disabled",
"code": "EndpointDisabled",
"name": "EndpointDisabled",
"statusCode": 400,
"retryable": false
}
Run Code Online (Sandbox Code Playgroud)
也许你知道为什么.
当从SNS接收Lambda中的事件时,事件的外部结构看起来有点像:{"Records":[...]}
在我看到的所有教程中,记录字段中只有1条记录.
假设"记录" - 阵列只包含1个项目是否安全?
我很难使用基于Java的Lambda函数设置来接收来自SNS的消息.我的功能如下所示:
package com.mycompany;
import com.amazonaws.services.lambda.runtime.Context;
import com.amazonaws.services.lambda.runtime.LambdaLogger;
import com.amazonaws.services.lambda.runtime.events.SNSEvent;
public class LambdaHandler {
public void Handler(SNSEvent event, Context context) {
//Process the event
}
}
Run Code Online (Sandbox Code Playgroud)
它编译得很好,我没有任何问题上传jar文件到Lambda(通过Web控制台).
但是,当我使用表示SNSEvent模型的JSON发布它(通过SNS到订阅的Lambda函数)时,Lambda函数抛出以下异常:
在类com.mycompany.LambdaHandler上加载方法处理程序时出错:class java.lang.NoClassDefFoundError java.lang.NoClassDefFoundError:com/amazonaws/services/lambda/runtime/events/SNSEvent at
爪哇java.lang.Class.Class.AvlaredMethods(Class.java:2701)的java.lang.Class.getDeclaredMethods0(本地方法)java.lang.Class.TM中的java.lang.Class.privateGetPublicMethods(Class.java:2902) Class.java:1615)引起:java.lang.ClassNotFoundException:com.amazonaws.services.lambda.runtime.events.SNSEvent at java.net.URLClassLoader.findClass(URLClassLoader.java:381)at java.lang.ClassLoader. java.lang.ClassLoader.loadClass(ClassLoader.java:357)中的loadClass(ClassLoader.java:424)
我使用Maven + Netbeans,它是一个Maven Java Application项目.我从Lambda控制台下载了该函数并确认,该jar有一个lib /目录,其中包含所有用于导入的jar,包括aws-lambda-java-events-1.1.0.jar,它本身包含/ com/amazonaws /services/lambda/runtime/events/SNSEvent.class文件.
为什么运行时无法在jar文件中找到类?还有什么我需要做的,设置任何环境变量等吗?
任何帮助,将不胜感激!
编辑1 我尝试降级到aws-lambda-java-events 1.0.0并且它仍然报告相同的异常.根据要求,下面是我的POM文件(只更改了项目名称).我不知道如何告诉Maven将库放在树形结构中.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.app</groupId>
<artifactId>Handler</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<dependencies>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-java-sdk-lambda</artifactId>
<version>1.10.6</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-core</artifactId>
<version>1.0.0</version>
</dependency>
<dependency>
<groupId>com.amazonaws</groupId>
<artifactId>aws-lambda-java-events</artifactId>
<version>1.0.0</version>
</dependency>
</dependencies> …Run Code Online (Sandbox Code Playgroud) 我正在尝试在基于PHP的网站上实现推送通知.目标是使类似Stackoverflow和其他站点的内容类似于在获取消息时实时通知用户.
我使用mysql作为我的数据库,Apache作为我的服务器,我正在考虑使用Amazon-SNS作为这些通知的框架,因为这就是该服务似乎的目的.
我从文献中了解到如何以编程方式设置sending.php和receiving.php页面.我假设sending.php页面只涉及$_POST['message']某个页面,但从那里我真的迷失了.
如果有什么东西可以帮助我理解receiving.php推送通知页面的样子,我将非常感激.
我正在尝试删除未经证实的SNS主题(特别是电子邮件地址)的订阅,但AWS控制台不会让我这样做.它会让我删除已确认的订阅.有任何想法吗?
如果有人可以帮忙解释,我正试图了解我的工作流程中是否需要SQS.在我的应用程序中,当采取行动时,它会向SNS主题提交信息,该主题调用LAMBDA进行一些处理.这很好用.
当我在网上进行研究时,似乎人们在这个堆栈中使用SQS,而SNS会在SQS上放置信息,然后SQS会调用LAMBDA.
我想我想要了解的是需要SQS.添加什么值,或者换句话说,通过直接从SNS调用我的LAMBDA,我失去了什么?
amazon-sns ×10
aws-lambda ×4
amazon-sqs ×2
php ×2
android ×1
apache ×1
aws-sdk ×1
javascript ×1