Я пытаюсь создать несколько виртуальных машин GCP, используя клиентские библиотеки API для Java, но примеры, которые я видел, кажутся старыми. Я начал с этого https://github.com/GoogleCloudPlatform/java-docs-samples/blob/master/compute/cmdline/src/main/java/ComputeEngineSample.java, но похоже, что класс GoogleCredential
устарел. После некоторых исследований я придумал этот код
JsonFactory jsonFactory = JacksonFactory.getDefaultInstance();
GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
if (credentials.createScopedRequired()) {
List<String> scopes = new ArrayList<>();
scopes.add(ComputeScopes.DEVSTORAGE_FULL_CONTROL);
scopes.add(ComputeScopes.DEVSTORAGE_READ_WRITE);
credentials = credentials.createScoped(scopes);
}
Compute compute = new Compute.Builder(httpTransport, jsonFactory, null)
.setApplicationName("et").build();
Compute.Instances.List instancesList = compute.instances().list("<GCP-PROJECT>", "us-central1-a");
InstanceList executedOperation = instancesList.execute();
Затем я установил переменную среды GOOGLE_APPLICATION_CREDENTIALS
в путь к json-файлу моей учетной записи службы и запустил свой код, но он не работает с ошибкой 401 Unauthorized
. Частичное сообщение это
"message" : "Request is missing required authentication credential. Expected OAuth 2 access token, login cookie or other valid authentication credential.
Примеры, которые я вижу, относятся к другим продуктам Google, таким как Storage, Pubsub и т. д., но я не могу найти подходящего примера того, как использовать мои учетные данные для вызова некоторых операций в службе Compute
. Любая помощь будет оценена по достоинству.
GoogleCredential
является устаревшим классом, и компилятор выдает предупреждение. Однако эта часть меня озадачивает: конструкторCompute.Builder
принимаетHttpTransport, JsonFactory, HttpRequestInitializer
, но передачаGoogleCredential
, похоже, работает. Есть идеи, почему? - person Ramesh Venkitaswaran   schedule 14.05.2020google-auth-library
. Я не очень много пишу на Java, поэтому я недостаточно знаком с библиотеками аутентификации Google на Java. - person DazWilkin   schedule 14.05.2020HttpRequestInitializer
- это недостающая часть, которая мне была нужна. Большое спасибо - person Ramesh Venkitaswaran   schedule 14.05.2020