2
  1. 首先,我将图像存储:

    import cloudstorage as gcs 
    ... 
    path = '/bucket/folder/image.jpg'
    with gcs.open(path, 'w') as f:
        f.write(data)
    
  2. 然后我得到服务网址:

    url = images.get_serving_url(None, filename='/gs{}'.format(self.path),
                                 secure_url=True)
    

    服务 url 通常按预期工作,问题是我没有使用 blob_key,只有文件名(存储中的路径)。

  3. 我想知道现在如何删除 serving_url,因为 sdk 方法只接受 blob_key

    def delete_serving_url(blob_key, rpc=None):
        """Delete a serving url that was created for a blob_key using get_serving_url.
    
        Args:
        blob_key: BlobKey, BlobInfo, str, or unicode representation of BlobKey of
        blob that has an existing URL to delete.
        rpc: Optional UserRPC object.
    
        Raises:
          BlobKeyRequiredError: when no blobkey was specified.
          InvalidBlobKeyError: the blob_key supplied was invalid.
          Error: There was a generic error deleting the serving url.
        """
    

https://cloud.google.com/appengine/docs/python/refdocs/google.appengine.api.images#google.appengine.api.images.delete_serving_url

4

1 回答 1

3

Using the Blobstore API with Google Cloud Storage示例展示了如何为 GCS 获取等效的 blob_key:

blob_key = CreateFile(main.BUCKET + '/blobstore_serving_demo')

从那个链接:

注意:获得 Google Cloud Storage 对象的blobKey后,您可以传递它、序列化它,或者在任何可以将blobKey用于存储在 Blobstore 中的对象的任何地方互换使用它。这允许在应用程序将一些数据存储在 blobstore 中,而将一些数据存储在 Google Cloud Storage 中的情况下使用,但应用程序的其余部分以相同的方式处理数据。(但是,BlobInfo 对象不适用于 Google Cloud Storage 对象。)

所以你应该能够为你的文件生成一个 blobKey 并调用get_serving_urldelete_serving_url

您还可以使用 GCS 对象权限来阻止对文件的访问,请参阅设置对象权限和元数据

于 2016-08-22T14:32:20.370 回答