我有一个macos应用程序,用户可以将文件上传到他/她的S3存储桶。我希望当存储桶内容发生变化时,使用AWS SNS通过应用程序通过推送通知来通知用户。我不知道该怎么做。我的想法是(在应用程序中以编程方式):
1. create a SNS platform application ARN (e.g. arn:aws:sns:us-east-1:379221688515:app/MACOS_SANDBOX/Testapp)
2. create a SNS topic
3. edit the topic policy to include : s3:ObjectCreated:Put
4. put notification with topic on s3 (putBucketNotificationConfiguration)
5. subscribe to the topic to receive push notifications
首先,我不确定我的方法是否有效,因为我在沙盒下并且允许用户为平台创建他/她自己的推送通知似乎很乐观。相反,我可以将我使用AWS控制台创建的平台ARN用于我的应用程序吗?只要我订阅了他们自己的主题和存储桶,这是否会使用户能够收到有关他们自己的S3存储桶更改的通知?
为了测试这一点,我遇到了第一步的问题,我不明白如何设置平台创建的属性。我目前的代码是:
func createPlatformApplicationARN() -> AWSTask<AnyObject> {
let sns = AWSSNS(forKey: self.snskey)
let request = AWSSNSCreatePlatformApplicationInput()
request?.platform = "APNS_SANDBOX"
request?.name = "Testapp"
request?.attributes=[]
return sns.createPlatformApplication(request!).continueWith { ( task ) -> Any? in
DDLogVerbose("SNS==> result : \(String(describing: task.error))")
return task
}
}
我也不确定如何设置通知政策( s3:ObjectCreated:Put )。当我使用Console生成的平台ARN时,我的其余代码适用于创建和订阅主题。
希望有人可以提供帮助。我正在使用AWS SDK iOS v2.5修改为macos。吨。