Bir dosya alan ve ardından Google App Engine'de çalışan Google Cloud Storage'a eklemeyi deneyen bir web uygulamasına sahibim.Google App Engine ve Depolama Alanı API'si auth hatası
com.google.apphosting.api.ApiProxy$CallNotFoundException: The API package 'memcache' or call 'Get()' was not found.
at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:173)
at com.google.apphosting.api.ApiProxy$1.get(ApiProxy.java:171)
at com.google.appengine.api.utils.FutureWrapper.get(FutureWrapper.java:88)
at com.google.appengine.api.memcache.MemcacheServiceImpl.quietGet(MemcacheServiceImpl.java:26)
at com.google.appengine.api.memcache.MemcacheServiceImpl.get(MemcacheServiceImpl.java:49)
at com.google.appengine.api.appidentity.AppIdentityServiceImpl.getAccessToken(AppIdentityServiceImpl.java:286)
at com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential.intercept(AppIdentityCredential.java:98)
at com.google.api.client.googleapis.extensions.appengine.auth.oauth2.AppIdentityCredential$AppEngineCredentialWrapper.intercept(AppIdentityCredential.java:243)
at com.google.api.client.http.HttpRequest.execute(HttpRequest.java:859)
Bu (gutil ve her şeyi kurulum) sadece iyi benim YEREL makinede çalışır: Bu alıyorum hatadır. GAE'ye dağıtıldığında yukarıdakilerle başarısız olur. İzinleri kontrol ettiniz ve tüm Google Cloud API'larına erişimi gösterir. Bu kod (https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/storage/json-api/src/main/java/StorageFactory.java)
Bütünlüğü içinprivate static Storage buildService() throws IOException, GeneralSecurityException {
HttpTransport transport = GoogleNetHttpTransport.newTrustedTransport();
JsonFactory jsonFactory = new JacksonFactory();
GoogleCredential credential = GoogleCredential.getApplicationDefault(transport, jsonFactory);
if (credential.createScopedRequired()) {
Collection<String> bigqueryScopes = StorageScopes.all();
credential = credential.createScoped(bigqueryScopes);
}
return new Storage.Builder(transport, jsonFactory, credential)
.setApplicationName("GCS Samples")
.build();
}
Google'ın örnekten doğrudan, başarısız bir parçasıdır, burada yukarıda buildService kullandığı kod
Storage client = StorageFactory.getService();
Storage.Objects.Insert insertRequest = client.objects().insert(
bucketName, objectMetadata, contentStream);
insertRequest.execute();
(yine yukarıdaki github örnek bağlantısından) pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.2.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.google.appengine.tools</groupId>
<artifactId>appengine-gcs-client</artifactId>
<version>RELEASE</version>
</dependency>
ait deps bölümleri GAE'nin konsolu GAE'nin v1.9.35 kullanarak bulunuyor gösterir. Burada alt
YineModule & version
Module: default
Version: 20160405t155800
App Engine version: 1.9.35
Managed by
Google
Availability
...
GAE managed VM for module: default, version: 20160405t155800
Tags
None
Machine type
g1-small (1 vCPU, 1.7 GB memory)
CPU platform
Intel Haswell
Zone
us-central1-c
IP forwarding
off
Boot disk and local disks
Name Size (GB) Type Mode
redacted
10
Standard persistent disk
Boot, read/write
Delete boot disk when instance is deleted
Additional disks
Preemptibility
Off (recommended)
Automatic restart
Off
On host maintenance
Terminate VM instance
Service account
-----
Cloud API access scopes
This instance has full API access to all Google Cloud services.
mevcut perma gösteren örneğinden redacted bilgi, var app lokal çalışır ve Google Cloud Storage dosya yüklemeleri gönderir. Uygulamayı herhangi bir şans olmadan GAE'ye yüklemek için birkaç kez denedim. GcsService lib farklı bir şekilde başarısız kullanarak, aynı zamanda
latest: Pulling from google_appengine/openjdk8
ama nedense benim uygulama düzgün tanınmaz, çünkü şüpheli: Bu uygulama GAE'nin Esnek sürümleri konuşlandırılmışsa, bu gösteriyor GAE üzerinde uygun yetkilendirme ile GAE'nin uygulaması olarak:
Caused by: java.io.IOException: java.lang.NullPointerException
at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.getInstance(LocalRawGcsService.java:186)
at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService$BlobStorageAdapter.access$000(LocalRawGcsService.java:109)
at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.ensureInitialized(LocalRawGcsService.java:194)
at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.beginObjectCreation(LocalRawGcsService.java:249)
at com.google.appengine.tools.cloudstorage.dev.LocalRawGcsService.beginObjectCreation(LocalRawGcsService.java:92)
at com.google.appengine.tools.cloudstorage.GcsServiceImpl$1.call(GcsServiceImpl.java:74)
at com.google.appengine.tools.cloudstorage.GcsServiceImpl$1.call(GcsServiceImpl.java:70)
kodu:
GcsOutputChannel outputChannel = gcsService.createOrReplace(fileName, GcsFileOptions.getDefaultInstance());
InputStream inputStream = uploadfile.getInputStream();
copy(inputStream, Channels.newOutputStream(outputChannel));