AWS Step / Lambda - 在运行

时间:2017-06-28 02:10:43

标签: node.js amazon-web-services amazon-s3 aws-lambda

在我第一次涉足云中的任何计算时,我能够跟随Mark West的instructions了解如何使用AWS Rekognition处理来自安全摄像头的图像,这些图像被转储到S3存储桶并提供通知如果有人被发现他的代码是为Raspberry Pi摄像机设置的,但我能够通过将触发的图像FTP到我的Synology NAS并使用CloudSync将其镜像到S3存储桶来使其适应我的IP摄像机。步进函数根据下图调用Lambda函数,我在15秒内收到一封电子邮件,其中包含检测到的标签列表和附加的图像。

Step functions

问题是,只要触发条件,相机就会每秒上传一张图像,如果相机前面有很多活动,我可以快速收集几百封电子邮件。

我想在make-alert-decision和nodemailer-send-notification之间插入一个函数,该函数将检查是否在最后一分钟内发送了电子邮件通知,如果没有,请继续执行nodemailer-send-notification权限如果是这样,请将标签列表和附件路径存储在一个数组中,然后在60秒后发送一封包含所有附件的电子邮件。

我知道我必须在外部存储数据并遇到this article解释不同缓存数据方法的好处,我还认为我可以检查上传到S3的文件的时间戳来比较已经过去的时间在最近上传的两个文件之间,决定是继续还是批量处理该文件。

作为AWS的新手,我正在寻找从复杂性和成本角度来看哪种方法最有意义的建议。我可以忍受文章中讨论的任何方法所涉及的滞后,只是不知道如何继续,因为我从未使用或甚至没有听说过任何服务。

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用make-alert-decision lambda nodemailer-send-notification向每个标签和附件路径发送消息的SQS queue

lambda struct data { let text : String! let pic : UIImage! } class ResultsTableViewController: UITableViewController { var cellData = [data]() override func viewDidLoad() { cellData = [data(text: "first", pic: #imageLiteral(resourceName: "Screen Shot 2017-06-28 at 1.55.48 PM")), data(text: "second", pic: #imageLiteral(resourceName: "Screen Shot 2017-06-28 at 1.55.48 PM")), data(text: "third", pic: #imageLiteral(resourceName: "Screen Shot 2017-06-28 at 1.55.48 PM"))] } override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return cellData.count } override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = Bundle.main.loadNibNamed( "resultsVOiew", owner: self, options: nil)?.first as! ResultsViewCell cell.imageView1.image = cellData[indexPath.row].pic cell.OrganizationName.text = cellData[indexPath.row].text return cell } override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return 91 } } 将成为该队列的使用者,但是executed on a regular schedule

您可以指定要每1分钟执行一次的lambda,读取队列中的所有消息 - 并立即从队列中删除它们或设置适合的可见时间并在之后删除 - 以获取附件列表并发送单个电子邮件我们每隔60秒就会收到一封包含所有附件的电子邮件。