我正在开发一个反应原生应用程序,该应用程序使用 Amazon Cognito Identity for JS 来管理用户注册、登录等。我的代码大部分时间都在工作,并且设置为对Cognito服务(如CognitoUser.authenticateUser((方法(的调用可以处理成功和失败。
问题是,在我研究这个问题的一周里,该服务似乎根本无法在很小的时间内工作。我将开发一个新组件,独立于 Cognito 调用(因此它不会影响它们的执行(,突然间,运行该应用程序只是在尝试登录时挂起。事实上,所有使用 API 的服务器请求在这些时间段内都会挂起,无论是登录(使用有效和无效的凭据(还是注册新用户,我都可以跟踪代码的执行,直到调用完成,然后不产生输出。我的登录功能的相关代码如下所示;
console.log('About to authenticate user');
cognitoUser.authenticateUser(authenticationDetails, {
onSuccess: function (result) { // login successfull
console.log("login successfull")
CognitoUserLogin.setUpSession(result)
callback(true, result)
},
onFailure: function(err) { // login failed
console.log(err)
callback(false, err)
}
})
如此代码所示,控制台在调用"cognitoUser.authenticateUser"之前立即记录,并且应在函数回调成功或失败后立即记录。大多数情况下可以正确观察到此预期行为,但是,当发现这些调用挂起时,控制台似乎仅输出第一行"即将对用户进行身份验证",仅此而已,表明方法调用不会因成功或失败而回调。
由于此代码似乎几乎一直都按应有的方式执行,因此我这边似乎没有问题,而是 Cognito 服务器的问题,但是,根据他们的服务运行状况仪表板 (https://status.aws.amazon.com/( 他们的服务器在所有这些身份验证失败的时间段内一直在全球范围内正常运行。
我一直找不到任何人提到这种服务下降,所以我非常厌倦它可能会继续并使我的应用程序在看似随机的时间内经常无法使用。最近还有其他人遇到过这个问题吗?我只在当天早些时候经历过它,我所有服务器呼叫的区域都是"eu-west-1",对我来说应该延迟最少(住在爱尔兰(。
具体来说,我的应用程序在 2017 年 8 月 5 日星期六(格林威治标准时间(早些时候尝试登录或注册用户时开始挂起,并在当晚晚些时候突然再次工作。当我昨天(8 月 8 日(与我的团队一起开发该应用程序时,Cognito 呼叫突然在中午左右再次开始挂起 10-20 分钟,然后再次(奇迹般地(开始工作。今天它在 15:30 左右停止为我工作,近一个小时后仍然没有响应。虽然它使开发的某些方面变得不可能,因为它们依赖于登录凭据来访问亚马逊服务,但我主要担心的是发布版本将具有相同的问题,这些问题似乎变得更加常规和痛苦(这将是新发布的应用程序的噩梦(。
任何反馈都将不胜感激,即使有人说他们在使用 Cognito 身份验证时遇到或没有遇到
这些问题事实证明,这不是AWS服务器的问题,也不是我的登录实施的问题。尝试我的代码的旧备份运行登录很好,我将其缩小到这样一个事实,即包括我仍在处理的单独脚本阻止了回调被调用。即使该脚本仅在稍后阶段引用,应用程序也会拒绝将登录结果记录到控制台。我仍然不知道为什么新脚本导致应用程序在不相关的地方失败,但我在构建和控制台输出中都没有收到任何错误,所以无论问题是什么似乎都在默默地杀死可能导致错误脚本运行的函数的执行。奇怪