- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 App Engine 标准和灵活的数据存储在谷歌云中实现一个简单的设计。 App1 位于 GAE 标准环境中。当用户与此应用程序交互时,它会将一些数据写入数据存储并排队任务。排队任务的目标是位于 App Engine 柔性环境中的 App2(任务可能需要比标准环境允许的时间更长的时间才能完成)。 App2 的想法是从数据存储中读取数据,使用数据执行任务,完成后应将报告实体写入数据存储。我附上了一个简单的图表。
在 App1 中,我设置了一个名为 flexKey 且具有所有者权限的服务帐户,下载了 json 文件。
当我在本地运行 App2 时,我首先将路径导出到凭证 json 文件作为环境变量:
GOOGLE_APPLICATION_CREDENTIALS:“path/to/flexKey.json”
然后使用 mvn jetty:run-exploded
启动应用程序,一切正常,App2 能够使用实时数据存储(不是本地仿真)进行身份验证,并读取 App1 写入的数据。当我取消设置环境变量时,我收到“未验证”错误(预期)
为了在部署 App2 时使用相同的服务帐户,我在 App2 的 app.yaml 中添加了以下内容,以将环境变量 GOOGLE_APPLICATION_CREDENTIALS
设置为服务帐户 json 文件的路径flexKey.json(这是部署实例上文件的路径):
env: flex
env_variables:
GOOGLE_APPLICATION_CREDENTIALS: "/var/lib/jetty/webapps/root/WEB-INF/classes/flexKey.json"
runtime: java
但是,当我将 App2 部署到 App Engine 柔性环境时,在尝试执行读取查询时使用数据存储进行身份验证时出现错误(这在从本地运行的 App2 实例中使用相同凭据查询数据存储时工作正常):
com.google.cloud.datastore.DatastoreException: Missing or insufficient permissions.
at com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.translate(HttpDatastoreRpc.java:129)
at com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.translate(HttpDatastoreRpc.java:114)
at com.google.cloud.datastore.spi.v1.HttpDatastoreRpc.runQuery(HttpDatastoreRpc.java:182)
at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:178)
at com.google.cloud.datastore.DatastoreImpl$1.call(DatastoreImpl.java:174)
at com.google.api.gax.retrying.DirectRetryingExecutor.submit(DirectRetryingExecutor.java:89)
at com.google.cloud.RetryHelper.run(RetryHelper.java:74)
at com.google.cloud.RetryHelper.runWithRetries(RetryHelper.java:51)
at com.google.cloud.datastore.DatastoreImpl.runQuery(DatastoreImpl.java:173)
.....
密码是 PERMISSION_DENIED
我不明白为什么相同的凭据(使用所有者角色创建)在从应用程序的本地运行实例查询数据存储时工作正常,但在从相同的已部署版本查询数据存储时却不起作用应用程序(部署到灵活的环境)。通过 app.yaml 中的环境变量设置凭证文件的路径是文档中推荐的方法,除非我弄错了。
感谢所有帮助。
最佳答案
您的设计中存在一个阻塞问题:一个应用程序无法将任务排入以另一个应用程序的服务为目标的推送队列中。来自<target> (push queues)
Syntax
中的行两个表 queue.yaml
和 queue.xml
引用资料:
The string is prepended to the domain name of your app when constructing the HTTP request for a task. For example, if your app ID is my-app and you set the target to my-version.my-service, the URL hostname will be set to my-version.my-service.my-app.appspot.com.
如果你想使用任务队列,那么你必须让这两个服务成为同一个应用程序的一部分。作为(积极的)副作用,您不必再担心为数据存储访问设置身份验证 - 两种服务都可以直接访问应用程序的数据存储。
关于google-app-engine - App 引擎应用程序和 Datastore 的权限问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49762440/
我正在尝试用我以前的类(class)笔记填充数据存储,以便将来我可以添加评论板或留言簿等笔记。 我似乎无法在数据存储中获取以前的注释,并且一直在翻阅 GAE 文档并在网上搜索无济于事。 这是我的代码:
我得到以下异常: Exception in thread "main" com.google.cloud.datastore.DatastoreException: no matching index
我们有一个在美国和欧盟托管的应用。为了获得出色的性能,我们将在两个位置托管一个数据存储实例。 现在的问题是如何将数据从美国数据存储复制到欧盟数据存储? 或者从技术角度来看,我们将数据存储在哪里并不重要
当我调用 datastore.save 方法时,我偶尔会遇到以下错误: 错误:在/user_code/node_modules/@google-cloud/datastore/node_modules
我正在使用适用于 Datastore (google-cloud-datastore) 版本 1.4.0 的 Python 客户端 SDK。我正在尝试运行仅键查询获取: query = client.
我正在试验 Google App Engine's flexible Python 3 environment and Cloud Datastore .在本地测试时,这(通常)要求在类似 Gunic
Google Cloud Datastore 是否支持计数器等原子操作?我在文档中没有看到任何相关内容,我注意到更新基本上是获取整个对象,更新一个字段,然后将整个对象发送回去,这似乎会使原子操作变得不
我的数据存储实体将具有 embedded entity type 的属性. 在我将它们保存如下后( 我正在使用 gcloud v0.27.0 ): dataset.save([{ key: d
是com.google.cloud.datastore.Datastore线程安全?更具体地说,Datastore 的一个实例可以吗?由多个线程共享,并且它们都可以同时读取/写入云数据存储吗? 换句话
Cloud Dataflow页面暗示这是可能的,但我还没有在 Google Cloud Datastore 文档中找到观察更改事件的方法。它是如何完成的? 最佳答案 据我所知,Cloud Datast
Google Cloud Firestore 将很快取代旧的 Google Cloud Datastore。然后可以选择在“ native 模式”或“数据存储模式”下使用 Cloud Firestor
我是 Datastore 的新手,我正在尝试创建一个简单的应用程序来跟踪图书借阅情况。 我希望数据库架构如下: books: book_id name: borrowing: time
这个问题已经被回答过很多次了,但答案似乎总是在变化。 我正在使用 Java 在 Windows 中工作,并且有一个本地数据存储实例,我希望将其作为生产的副本。 之前有两个答案:- How to cre
如何通过 Google Cloud Datastore 中的 API(Python Protocol Buffer )删除整个祖先树? 例如,如果我将实体存储在此结构中:祖父/父/子,我如何删除祖父,
我想在 Google Cloud Datastore(Datastore 模式下的 Firestore)中保存一部分结构。 以电话簿和联系人为例。 type Contact struct { Ke
我正在尝试看看仅使用 Cloud Functions 与 Datastore 交互是否可行。 有没有一种方法可以仅使用 Cloud Functions 创建复合索引(如 index.yaml)?因此只
我注册了 Firebase 以使用新的 Firestore。 尝试后,我决定,对于我的用例(主要是服务器工具),我不需要 Firestore 的大部分功能,这些功能非常专注于构建用户界面,而且我发现旧
我目前正在使用一台按顺序运行并从命名空间中读取实体的机器执行迁移,这对我来说很痛苦。是否可以使用 Google Cloud Dataflow 更轻松地执行迁移? 最佳答案 您应该能够使用 Datast
我想在 MongoDB 中使用 Grails2.5 中的“ElasticSearch”插件。我的“BuildConfig.groovy”文件是: grails.servlet.version = "3
我想从 Rails 应用程序中使用 Google Cloud Datastore。任何 Ruby 库都可以让这一切变得简单? 最佳答案 您可以使用官方的 Google API Client for R
我是一名优秀的程序员,十分优秀!