Il mio obiettivo è testare l'orchestratore di google e l'API del motore di calcolo recuperando innanzitutto un elenco di istanze attive. file di servlet viene memorizzato in un barattolo.L'errore "progetti/<my project>" non trovato "durante il tentativo di ottenere l'elenco delle istanze in esecuzione
sto cercando di testare il client API del motore di calcolo Java google. ho un lavoro cron, che invita la servlet orchestratore. l'obiettivo per il cron è un backend. da quale cerco di ottenere l'elenco di istanze:
...
AppIdentityCredential credential = getCredential(computeScope);
String appName = ConfigProperties.getInstance().getGceConfigProperties().get("projectId");
try {
httpTransport = GoogleNetHttpTransport.newTrustedTransport();
final Compute compute = new Compute.Builder(
httpTransport, JSON_FACTORY, credential).setApplicationName(appName)
.build();
logger.info("================== Listing Compute Engine Instances ==================");
Compute.Instances.List instances = compute.instances().list(projectId, zone);
InstanceList list = instances.execute();
if (list.getItems() == null) {
logger.info("No instances found. Sign in to the Google APIs Console and create "
+ "an instance at: code.google.com/apis/console");
} else {
for (Instance instance : list.getItems()) {
logger.info(instance.toPrettyString());
}
}
...
ci risposta di errore ottengo è (ho omesso il mio progetto nome f ROM la risposta, ho confermato che sto usando l'id corretto progetto nel mio codice):
com.google.cloud.solutions.sampleapps.orchestration.orchestrator.server.GceClientApiUtils
getInstances: com.google.api.client.googleapis.json.GoogleJsonResponseException: 404 OK
{
"code" : 404,
"errors" : [ {
"domain" : "global",
"message" : "The resource 'projects/<project-name-here>' was not found",
"reason" : "notFound"
} ],
"message" : "The resource 'projects/<project-name_here>' was not found"
}
Ho anche tentato questa recuperando un token di accesso e di effettuare una chiamata RESTful per ottenere l'elenco delle istanze e ho ricevuto la stessa identica risposta. Ho confermato che l'Url costruito era corretto confrontandolo con una query di successo delle istanze usando l'API explorer.
EDIT: ho determinato la soluzione al problema con l'aiuto di un altro post: sono stato finalmente in grado di trovare la soluzione nel post Compute Engine API call fails with http 404
avevo bisogno di aggiungere il mio account di servizio del motore app come un membro del team con modificare le funzionalità, che non ha per impostazione predefinita. Una volta fatto questo, il codice ha funzionato come previsto. Ho dovuto farlo attraverso cloud.google.com/console, come se fosse stato fatto tramite appengine.google.com, uno stato in sospeso verrà assegnato all'account del servizio e non avrà accesso.
Sono finalmente riuscito a trovare la soluzione nel post http://stackoverflow.com/questions/21062286/compute-engine-api-call-fails-with-http-404. Avevo bisogno di aggiungere l'account del servizio motore dell'app come membro del team con funzionalità di modifica, che non ha per impostazione predefinita. Una volta fatto questo, il codice ha funzionato come previsto. Dovevo farlo tramite http://cloud.google.com/console, come se fosse stato fatto tramite appengine.google.com, uno stato in sospeso verrà assegnato all'account del servizio e non avrà accesso. – jKimo