我们使用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());
答案 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 希望谷歌的某个人能够帮助我们解决这个问题。