我正在尝试使用GAE图像服务,但我遇到了一个问题。
我有两个项目。项目A具有GAE,项目B具有GCS桶。 这是因为创建项目后无法更改GAE区域。
当从GAE调用get_serving_url到GCS存储桶的对象时,会发生以下异常。
Traceback (most recent call last):
...
File "/base/data/home/apps/b~[PROJECT_NAME]/20161215t131056.397760967541775314/main.py", line 125, in _get_serving_url
return get_serving_url(blob_key)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1868, in get_serving_url
return rpc.get_result()
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/apiproxy_stub_map.py", line 613, in get_result
return self.__get_result_hook(self)
File "/base/data/home/runtimes/python27/python27_lib/versions/1/google/appengine/api/images/__init__.py", line 1972, in get_serving_url_hook
raise _ToImagesError(e, readable_blob_key)
TransformationError
将它们放在同一个项目中时,不会抛出此异常。 GAE的服务帐户和项目A可以完全访问存储桶和对象。
还有什么我需要尝试的吗?
我在the docs of Image API in GAE/Java找到了原因。
重要提示:如果您通过Google云端存储提供图片,则无法通过两个单独的应用提供图片。只有在图像上调用getServingUrl的第一个应用程序才能获得提供URL的URL,因为该应用程序已获得图像的所有权。因此,随后在图像上调用getServingUrl的任何其他应用程序都将失败。如果第二个应用程序需要提供图像,则应用程序需要先复制图像,然后在副本上调用getServingUrl。
我同时使用了另一个项目中的桶的对象。
因此,我已正确验证了get_serving_url。
答案 0 :(得分:0)
您不必使用服务网址。您可以为grom GCS提供文件:
https://storage.googleapis.com/your_bucket/your_filename
或SDK http://localhost:8080/_ah/gcs/your_bucket/your_filename