当S3中的对象发生变化时收到SNS推送通知

时间:2017-09-06 18:56:15

标签: swift amazon-web-services amazon-s3 push-notification

我有一个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。吨。

0 个答案:

没有答案