从不同的Google App Engine应用程序调用时,ImagesService.getServingUrl()无法正常工作

时间:2013-11-01 06:43:32

标签: java google-app-engine google-cloud-storage

我有以下问题:

1)我将云存储控制台中的图像放入存储桶中 2)从应用程序引擎应用程序,我得到了ServingUrl,我收到了图像的工作URL。
二手代码:

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

到目前为止一切顺利 3)从另一个应用程序引擎应用程序我也得到相同图像上的ServingUrl,现在我得到:

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


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

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

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

1 个答案:

答案 0 :(得分:1)

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

  

如果您从Google云端存储中提供图片,则无法通过两个单独的应用投放图片。只有在图像上调用getServingUrl的第一个应用程序才能获得提供URL的URL,因为该应用程序已获得图像的所有权。因此,随后在图像上调用getServingUrl的任何其他应用程序都将失败。如果第二个应用程序需要提供图像,则应用程序需要首先复制图像,然后在副本上调用getServingUrl。 (副本在存储中被删除。)