如何在本地开发环境中从 App Engine 访问 Google Cloud Storage?

How to access Google Cloud Storage from App Engine in local development environment?

我的代码在已部署的 Google App Engine 上运行良好,但在本地调试时却不行。返回的 GcsFileMetadata 为 null,gcsService.openReadChannel(gcsFilename, 0) 给出 FileNotFoundException,更多细节见下文。 综上所述,问题是本地应用引擎无法访问google云存储。我该如何解决?请问有什么解决方法吗?

代码如下

GcsFilename gcsFilename = new GcsFilename(BUCKET_NAME, progress.imageName);

GcsFileMetadata gcsFileMetadata = gcsService.getMetadata(gcsFilename);

if (gcsFileMetadata == null) throw new Exception("gcsService.getMetadata(gcsFilename) returned null");

int fileSize = (int) gcsFileMetadata.getLength();

ByteBuffer byteBuffer = ByteBuffer.allocate(5*1024*1024);
GcsInputChannel gcsInputChannel = gcsService.openReadChannel(gcsFilename, 0);
gcsInputChannel.read(byteBuffer);

gcsFileMetadata 在本地调试时为 null,但在部署时工作正常。我将其注释掉,并在这一行收到以下错误:

GcsInputChannel gcsInputChannel = gcsService.openReadChannel(gcsFilename, 0);

错误如下:

java.io.FileNotFoundException: com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService@54381103: No such file: GcsFilename(cloudimagesbucketname, image_20150105_180444)

没有访问本地主机上的 Google 云存储的解决方法。您必须在 appengine 部署代码,然后才能访问 GCS 服务。这是来自 google 的安全服务,无法在本地主机上访问。