【问题标题】:AWS APIGateway & Lambda - How to call function right before iOS App terminates?AWS APIGateway & Lambda - 如何在 iOS 应用程序终止之前调用函数?
【发布时间】:2017-08-13 16:57:30
【问题描述】:

我已经使用 AWS 工作了一段时间,并且开始掌握 APIGateway 和 Lambda 的窍门。我刚刚制作了一个 Lambda 函数,它接收用户输入的用户名,然后使用 AdminDeleteUser 函数从用户池中删除该用户,它工作正常。我什至用 APIGateway 设置了它以在 XCode 中使用,它也可以正常工作。

问题
我的问题是,我试图让 Lambda 函数在用户终止 iOS 应用程序时正确运行。我正在使用 NotificationCenter 观察者来观察应用程序何时终止,除了我相信 Lambda 函数的调用在应用程序完全终止后被取消这一事实之外,一切正常,这意味着它无法完成完整的请求。我的 lambda 函数本质上检查正在接收的用户名是否是未确认的用户,如果未确认,则将其从用户池中删除。我在屏幕上执行此操作,用户必须确认通过 SMS 发送的确认代码

问题
所以我想我的问题是,

  1. 是否可以在应用程序终止时调用 Lambda 函数?
  2. 如果没有,如果当前用户没有被确认,是否可以在应用退出之前从用户池中删除当前用户?

在此先感谢您。

【问题讨论】:

    标签: swift amazon-web-services aws-lambda aws-api-gateway aws-cognito


    【解决方案1】:

    听起来正在发生的事情正是您上面所描述的。应用程序在与服务建立连接之前退出。

    更好的设计可能是让进程以 X 间隔 (using a Lambda scheduled event) 运行,以自动从您的数据存储中删除任何未经确认的用户。

    编辑:

    在搜索未确认的用户时,您应该能够使用UserCreateDate 字段来检查用户是否在您指定的时间内注册。如果“createDate”在该时间范围内,则忽略该用户。

    ListUsers API

    【讨论】:

    • 感谢您的回复。您是否建议我运行一个 Lambda 函数,假设每 24 小时循环一次我的用户列表,删除所有未确认的用户?
    • 是的,或者更频繁地说 1 到 2 小时(取决于您的用户群)这样您在处理应用程序退出时不必担心时间或竞争条件。另外,我不知道我是否会循环,因为它们是昂贵的操作。如果设置得当,您可以运行一个简单的查询: (psudeo) delete * where unconfirmed = 1
    • 在对此进行一些测试后,此解决方案可能会出现问题,因为在注册过程中,创建帐户的用户被设置为未确认。这意味着如果 lambda 函数恰好在用户注册时运行,它将删除该用户并在用户尝试完成时返回错误。尽管如此,感谢您的意见。
    • 在这种情况下,您可以只添加另一列来指定用户已注册(未确认)但是新用户(少于一定的小时数/天数)以防止此类事情发生
    • 您可以使用 AWS Cognito 用户池做到这一点吗?如果您有时间,您能否将我链接到相关文档?
    猜你喜欢
    • 1970-01-01
    • 2016-05-27
    • 2021-12-12
    • 1970-01-01
    • 1970-01-01
    • 2018-11-24
    • 1970-01-01
    • 2023-03-28
    • 2014-02-19
    相关资源
    最近更新 更多