简单的问题,但我怀疑它没有一个简单或简单的答案。仍然值得一提。
我们正在使用AWS创建推送通知的实现,我们的Web服务器在EC2上运行,将消息发送到SQS上的队列,该队列使用Lambda处理,最终发送到SNS以传送到iOS / Android应用。
我的问题是:有没有办法根据您在创建时提供的自定义用户数据来查询SNS端点?到目前为止,我看到这样做的唯一方法是列出给定平台应用程序中的所有端点,然后在该列表中搜索我正在寻找的用户数据......但是,更直接的方法会更好
为什么我想这样做很简单:如果我可以将用户标识符附加到这些设备端点,并基于此进行查询,我可以避免完全将ARN保存到DynamoDB数据库中。这将节省大量的实施时间和复杂性。
让我知道你们的想法,即使你认为这个想法是不切实际和愚蠢的,或者搜索所有这些想法是最好的方法!
干杯!
答案 0 :(得分:1)
ListTopics中没有“where”子句的能力。我看到两种可能性:
答案 1 :(得分:0)
根据[AWS documentation][1]
,如果您尝试使用相同的用户数据创建新的平台端点,则应获得一个包含与现有PlatformEndpoint关联的ARN的响应。
这绝对不是理想的,但它将通过异常查询用户数据端点属性。
//Query CustomUserData by exception
CreatePlatformEndpointRequest cpeReq = new CreatePlatformEndpointRequest().withPlatformApplicationArn(applicationArn).withToken("dummyToken").withCustomUserData("username");
CreatePlatformEndpointResult cpeRes = client.createPlatformEndpoint(cpeReq);
如果存在具有相同withCustomUserData
的端点,则应该与ARN发生异常。
然后你只需使用那个ARN就可以了。