Google Cloud Service Java客户端配置
问题描述:
我们正在考虑使用Google Cloud Storage作为AWS的替代方案,因此计划对GCS进行一些性能测试。我们想测试的功能之一是在特定路径上搜索文件。不幸的是,SDK无法搜索前缀。相反,我们被迫使用Java客户端API。这里是一个失败的相关代码:Google Cloud Service Java客户端配置
GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
AppIdentityService appIdentity = AppIdentityServiceFactory.getAppIdentityService();
ListOptions.Builder b = new ListOptions.Builder();
b.setRecursive(true);
b.setPrefix("folder/");
ListResult result = gcsService.list("rms-test-bucket", b.build());
具体而言,编码滑过上的呼叫以gcsService.list()
与NullPointerException
。我在IntelliJ中附加了所有源代码,遍历代码,发现原因是ApiProxy.getDelegate()
返回null
,当它应该返回非null
值时。
我们怀疑某处存在配置问题,尽管它不清楚它可能是什么。
答
你从哪里运行该代码?这应该在AE标准或AE Flexible compat中运行(因为该API是特定于App Engine的)。对于所有其他情况,您应该使用google-cloud-java client。事实上,即使在AE上,我也会建议使用该客户端,因为它在所有平台上都受支持,而且其功能更丰富。欲了解更多信息,请参阅here。
答
我不完全确定您的示例出了什么问题,但如果您的目标严格按照特定路径搜索文件来测试GCS性能,则gsutil
命令行实用程序包含该逻辑的可靠实现。你可以用它来评估性能。如果您从GCE实例进行测试,则它已经预装。