2

我有以下问题:

1)我将带有云存储控制台的图像放入存储桶中。
2)从应用程序引擎应用程序中,我执行 getServingUrl 并收到图像的工作 URL。
使用的代码:

ImagesServiceFactory.getImagesService().getServingUrl(ServingUrlOptions.Builder.withGoogleStorageFileName(cloudStoragePath).secureUrl(true));

到目前为止,一切都很好。
3)从其他应用程序引擎应用程序中,我也在同一图像上 getServingUrl,现在我得到:

com.google.appengine.api.images.ImagesServiceFailureException: 
    at com.google.appengine.api.images.ImagesServiceImpl.ImagesService(ImagesServiceImpl.java:284)


当我第一次让另一个应用程序执行 getServingUrl 时,它在该应用程序中运行良好,现在我在另一个应用程序中得到了异常。对于每个图像都是如此,因此可能导致某些图像的 getServingUrl 在一个应用程序中工作(并保持工作),而其他图像的 getServingUrl(在同一个存储桶中,具有所有相同的权限)在另一个应用程序中工作。这取决于哪个应用程序首先在该图像上调用 getServingUrl。

直接从云存储读取图像始终适用于两个应用程序。

我还在做错什么吗?或者这是一个错误?

4

1 回答 1

1

这是 App Engine Image API 限制。您不能从两个或多个单独的应用程序中提供图像。

如果您从 Google Cloud Storage 提供图像,则无法从两个单独的应用中提供图像。只有第一个在图像上调用 getServingUrl 的应用程序才能获取 URL 来服务它,因为该应用程序已经获得了图像的所有权。因此,随后对图像调用 getServingUrl 的任何其他应用程序都将失败。如果第二个应用需要提供图像,则应用需要先复制图像,然后在副本上调用 getServingUrl。(副本在存储中进行了重复数据删除。)

于 2014-07-08T08:02:47.223 回答