Ich benutze GCSService zum Schreiben von Datei in einem GoogleCloudStorage Bucket, alles funktioniert gut mit Online-Instanz, aber wenn ich meinen Code auf meinem lokalen Dev-Server testen möchte Es ist nicht möglich, in einen Bucket zu schreiben (einen lokalen Bucket wie für den Datenspeicher zu emulieren). Zusätzliche Schwierigkeit, die ich versuche, auf meinem lokalen Server mit Remote-API von Fat-Client zu schreiben, suche ich im ganzen Web Ich finde meine Antwort nicht. Wenn ich meine createOrUpdate() -Methode aufrufe, habe ich diese Ausnahme:Google App-Engine Java-API im Bucket auf lokalen Dev-Server funktioniert nicht
com.google.appengine.tools.cloudstorage.NonRetriableException: java.lang.RuntimeException: Server replied with 403, verify ACLs are set correctly on the object and bucket: Request: POST https://storage.googleapis.com/InstanceName/FileInfos
Es scheint zu versuchen, auf meinem Online-Eimer zu schreiben ...
GcsService gcsService = GcsServiceFactory.createGcsService(RetryParams.getDefaultInstance());
...
RemoteApiOptions destination = RemoteConnection.connect(destinationServer);
RemoteApiInstaller destinationInstaller = new RemoteApiInstaller();
destinationInstaller.install(destination);
try
{
GcsOutputChannel outputChannel = gcsService.createOrReplace(new GcsFilename(destinationBucketServer, fileInfo.getFilename()),
GcsFileOptions.getDefaultInstance());
outputChannel.write(ByteBuffer.wrap(data));
outputChannel.close();
}
catch (Exception e)
{
....
}
finally
{
buffer.flush();
destinationInstaller.uninstall();
}
mit gleichem Code, den ich in Datastor schreiben kann, ohne jedes Problem, es ist nur ein Speicherprobleme.
Ja, ich weiß, was 403 bedeutet, aber wo ich lokale ACL für lokale Bucket konfigurieren kann, finde ich nichts über diese Konfiguration. In der Ausnahme gibt es eine entfernte URL POST https://storage.googleapis.com/InstanceName/FileInfos, wie es versuchen, online hochzuladen. Danke für die Beantwortung – Benjyyyyy
Zusätzlich dazu verwende ich Development Server Credential für die Verbindung zu meinem lokalen Server, was ich hier verpasst habe? Warum bietet dieser Code keinen Zugriff? neuer RemoteApiOptions() .server (server.getAddress(), server.getPort()). UseDevelopmentServerCredential(); – Benjyyyyy