来自App Engine的Google Cloud Storage可恢复上传网址问题

时间:2014-03-06 10:57:24

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

我们使用Google云端存储中的可恢复上传机制从App Engine上传文件,如下所述: https://developers.google.com/storage/docs/json_api/v1/how-tos/upload#resumable 一个很好的功能是可以让GCS使用uploadId从App Engine生成上传URL,从而可以直接从客户端使用此URL,而无需对URL进行签名。将GAE服务帐户添加为GCS API项目成员时,此方法有效。

这种机制很长一段时间都运行良好,但从今天起它停止了以下错误(http 403):

"domain": "usageLimits", "reason": "accessNotConfigured", "message": "Access Not Configured. Please use Google Developers Console to activate the API for your project."

所以我们现在有点迷失了。这可能与GCS事件(3月4日GCS错误率峰值事件报告)有关吗?

在下面找到我们用于制作第一个POST(之前有效)的代码的重要部分:

String url = "https://www.googleapis.com/upload/storage/v1beta2/b/"+bucketName+"/o?uploadType=resumable"; connection.setRequestMethod("POST"); connection.setRequestProperty("X-Upload-Content-Type", contentType); String json = "{\"name\":\""+objectName+"\"}"; connection.setRequestProperty("Content-Length", String.valueOf(json.getBytes("UTF-8").length)); connection.setRequestProperty("Content-Type", "application/json"); List scopes = new ArrayList<>(); scopes.add("https://www.googleapis.com/auth/devstorage.full_control"); AppIdentityService.GetAccessTokenResult accessToken = AppIdentityServiceFactory.getAppIdentityService().getAccessToken(scopes); connection.setRequestProperty("Authorization", "Bearer "+accessToken.getAccessToken());

1 个答案:

答案 0 :(得分:0)

要解决此问题,我们需要在App Engine项目本身上启用“JSON GCS API”(GCS存储桶是已启用JSON GCS API的其他项目的一部分)。 遗憾的是,我们无法启用API开关,因为App Engine项目仍然是一个没有Google Developers Console中的API菜单的“旧式”项目。

为了能够在App Engine项目上启用API,我们需要在App Engine设置页面上激活“云集成”。 (这会为此应用程序创建一个Google Cloud项目以及一个Google Cloud Storage存储桶和一个新的样式服务帐户。)

不幸的是,每次都失败了: “创建项目时出错。请重试。”

我们输入了一个错误: https://code.google.com/p/googleappengine/issues/detail?id=10906 希望谷歌的某个人能够帮助我们解决这个问题。