Google cloud firestore &引用;DatastoreException:缺少或权限不足“;在被取代的云数据存储上

Google cloud firestore &引用;DatastoreException:缺少或权限不足“;在被取代的云数据存储上,google-cloud-firestore,google-cloud-datastore,Google Cloud Firestore,Google Cloud Datastore,我们有一个基于AppEngine SDK(现已弃用)和被取代的云数据存储的旧应用程序。 在迁移到Google Cloud SDK的过程中,我们还决定从JPA/Datanucleus迁移到Objectify 考虑到云数据存储将在将来的某个时候以数据存储模式自动升级到云Firestore,我们决定按照本页底部所述测试我们的应用程序: 1) 创建一个新项目。在这个项目中,在数据存储模式数据库中创建一个云Firestore 2) 使用托管导出服务,将应用程序的一些数据导出到云存储 3) 使用托管导入服

我们有一个基于AppEngine SDK(现已弃用)和被取代的云数据存储的旧应用程序。 在迁移到Google Cloud SDK的过程中,我们还决定从JPA/Datanucleus迁移到Objectify

考虑到云数据存储将在将来的某个时候以数据存储模式自动升级到云Firestore,我们决定按照本页底部所述测试我们的应用程序:

1) 创建一个新项目。在这个项目中,在数据存储模式数据库中创建一个云Firestore

2) 使用托管导出服务,将应用程序的一些数据导出到云存储

3) 使用托管导入服务,将应用程序的数据导入到新项目中

4) 将要测试的应用程序逻辑复制到新项目,或针对新项目模拟应用程序行为

这就是我们所做的,在出现一些问题之后,我们可以在一个单独的测试项目中使用新的数据存储使应用程序的一部分正常运行

现在来看实际问题…

我们想测试更新后的应用程序是否也可以使用被取代的云数据存储运行,这样我们就不必担心自动升级何时发生(因为我们的应用程序已经准备好了)。 因此,我们将其部署为现有AppEngine项目的新版本(v2点-…):不幸的是,运行新版本会在应用程序尝试读取数据存储时抛出权限错误:

com.google.cloud.datastore.DatastoreException: Missing or insufficient permissions
因此,问题是: -这可能与我们的项目尚未在数据存储模式下升级到Cloud Firestore的云数据存储有关吗? -我们可以做些什么(可能添加特定权限)来让它正常工作吗

我们担心的是,我们需要在2020年7月之前部署新版本的应用程序(那时较旧的AppEngine SDK将停止工作),我们担心数据存储的自动升级将在稍后发生


谢谢你的帮助。

原来我们的项目没有这个项目_ID@appspot.gserviceaccount.comIAM成员

它有一个其他成员的集合(例如:PROJECT_NUMBER)-compute@developer.gserviceaccount.com,项目_NUMBER@cloudservices.gserviceaccount.com,服务项目_NUMBER@compute-system.iam.gserviceaccount.com等),我猜这是以前版本的Google App Engine中使用的遗留成员


添加项目_ID@appspot.gserviceaccount.com使用角色编辑器修复了这个问题:现在新版本可以部署到旧项目,即使数据存储尚未在数据存储模式下转换为Cloud Firestore,它也可以正常工作。

看起来像是IAM权限问题。在数据存储模式下访问云Firestore数据库时,请确保您具有正确的IAM权限。看看这个。希望对你有所帮助谢谢你的留言。该应用程序可以在数据存储模式下与CloudFireStore配合使用;权限问题发生在它连接到旧的云数据存储时。您说过您创建了一个新项目,该项目的云Firestore处于数据存储模式。您是在新项目中使用新的应用程序引擎,还是在旧项目中使用应用程序引擎?在这种情况下,您需要为新项目授予正确的权限,以便从旧项目访问云数据存储,如我前面的评论所示。但是,如果您设法让Cloud Firestore在数据存储模式下与您的应用程序引擎一起工作,为什么现在要后退?我需要将现有应用程序升级到新的SDK。但该应用程序仍然使用云数据存储,直到谷歌在数据存储模式下自动将其转换为云Firestore。因此,我在一个新的仅测试项目中测试了新版本,它运行良好,但现在我必须将其部署到旧项目中(这是我们不能使用新项目的原因)。但你是对的,问题是IAM和成员。多亏了你的建议,我找到了解决方案(见下面的答案)。我在一个运行正常的旧GAE应用程序中遇到了同样的问题,然后突然出现了错误。将此成员添加到(新)GCP仪表板下的IAM中,使项目得以恢复并运行。我很久没有接触过这个项目了,所以这真的帮助了我。万分感谢!我正试图调试一个类似的问题,但没有运气。看起来我的服务帐户部分确实列出了appspot.gserviceaccount.com。这也解决了我的问题,在一个突然出现错误的旧应用程序上也是如此。救生员,谢谢!我也很好奇你是怎么做到的。。。我查阅了很多文档,但从来没有发现过这个问题。你是如何解决这个问题的?我找到了IAM仪表板,但我无法添加它。