Идиоматический клиент Java для сервисов Google Cloud Platform.
Библиотеки доступны на GitHub и Maven Central для разработки приложений Java, которые взаимодействуют с отдельными сервисами Google Cloud:
Клиент | Уровень выпуска | Версия |
---|---|---|
Ноутбуки с платформой искусственного интеллекта | ||
API-шлюз | ||
API-ключи API | ||
Разрешение доступа | ||
API консультационных уведомлений | ||
AlloyDB | ||
Разъемы AlloyDB | ||
API Центра аналитики | ||
Апиджи Коннект | ||
API администратора App Engine | ||
Реестр артефактов | ||
Инвентаризация активов | ||
Гарантированные рабочие нагрузки для правительства | ||
Авто МЛ | ||
API службы резервного копирования и аварийного восстановления | ||
Большой запрос | ||
Подключение к BigQuery | ||
Служба передачи данных BigQuery | ||
Резервирование BigQuery | ||
Хранилище BigQuery | ||
Большой стол | ||
Клиент Bigtable Hbase | ||
Биллинг | ||
Бюджеты выставления счетов | ||
Бинарная авторизация | ||
Строить | ||
Информация CCAI | ||
Служба центра сертификации | ||
Канальные услуги | ||
Композитор | ||
Вычислительный двигатель | ||
API подключения шлюза | ||
Анализ контейнеров | ||
Управляет партнерским API | ||
DNS | ||
Каталог данных | ||
Объединение данных | ||
Происхождение данных | ||
Предотвращение потери данных | ||
Служба миграции баз данных | ||
Датаплекс | ||
Датапрок | ||
Метахранилище данных | ||
хранилище данных | ||
Поток данных | ||
Отладчик | ||
Развертывать | ||
API диалогового потока | ||
API механизма обнаружения | ||
Распределенная периферия | ||
API распределенной пограничной сети | ||
Документ ИИ | ||
Домены | ||
API основных контактов | ||
Эвентарк | ||
API хранилища файлов | ||
Пожарная лавка | ||
Маршрут флота | ||
Функции | ||
API-интерфейс GKE-концентратора | ||
Я | ||
API-интерфейс администратора IAM | ||
API устранения неполадок политики IAM | ||
API учетных данных сервисной учетной записи IAM | ||
Менеджер контекста доступа к идентификационным данным | ||
API прокси-сервера с учетом личных данных | ||
API менеджера инфраструктуры | ||
Ядро Интернета вещей (IoT) | ||
Система обнаружения вторжений | ||
Служба управления ключами | ||
Кубернетес Движок | ||
Ведение журнала | ||
Управляемая служба для Microsoft Active Directory | ||
Кэш памяти | ||
Панели мониторинга | ||
Естественный язык | ||
Центр сетевых подключений | ||
API управления сетью | ||
API сетевой безопасности | ||
API конфигурации ОС | ||
Вход в ОС | ||
Политика организации | ||
Профилировщик | ||
Паб/Саб | ||
Группа паб/подписка Kafka Connector | ||
Паб/Саб Лайт | ||
Паб/саб Lite Kafka Shim | ||
Разъем Pub/Sub Lite Spark | ||
API общедоступного центра сертификации | ||
API квот | ||
Рекомендатель | ||
Редис | ||
API менеджера ресурсов | ||
API настроек ресурсов | ||
Розничная торговля | ||
API маршрутов | ||
Планировщик | ||
Секретное управление | ||
API диспетчера безопасного исходного кода | ||
API управления центром безопасности | ||
Командный центр безопасности | ||
API состояния безопасности | ||
Сканер безопасности | ||
Бессерверный доступ к VPC | ||
API управления услугами | ||
Каталог услуг | ||
API управления услугами | ||
Использование сервиса | ||
Оболочка | ||
Гаечный ключ | ||
Ключ JDBC | ||
Речь | ||
Мониторинг стека | ||
Трассировка стека | ||
Хранилище | ||
Служба передачи хранилища | ||
ТПУ | ||
Талантливое решение | ||
Задачи | ||
API автоматизации телекоммуникационных компаний | ||
Преобразование текста в речь | ||
Перевод | ||
Миграция ВМ | ||
Вертексный ИИ | ||
ВертексИИ API | ||
Видео разведка | ||
API сшивателя видео | ||
Видео Транскодер | ||
Зрение | ||
Веб-риск | ||
Выполнение рабочего процесса | ||
Рабочие процессы | ||
API надстроек рабочей области | ||
Рабочие станции | ||
reCAPTCHA Предприятие | ||
API-концентратор API | ||
API Менеджера рекламы | ||
API проверки адреса | ||
Администратор аналитики | ||
Аналитические данные | ||
Аналитический центр | ||
Антос Мультиклауд | ||
Управляемая служба для API Apache Kafka | ||
API хаба приложений | ||
Столы Зона 120 | ||
Бэкап для GKE | ||
Решение «голый металл» | ||
Партия | ||
Приложение BeyondCorpConnections | ||
BeyondCorp AppConnectors | ||
BeyondCorp AppGateways | ||
BeyondCorp ClientConnectorServices | ||
Клиентские шлюзы BeyondCorp | ||
БольшоеОзеро | ||
API политики данных BigQuery | ||
Миграция BigQuery | ||
CSS API | ||
Менеджер сертификатов | ||
API чата | ||
Коммерческие потребительские закупки | ||
API конфиденциальных вычислений | ||
API подключения шлюза | ||
Маркировка данных | ||
Поток данных | ||
Форма данных | ||
API подключения разработчиков | ||
Диалоговый поток CX | ||
Хранилище документов AI | ||
График корпоративных знаний | ||
Отчеты об ошибках | ||
Издательство Eventarc | ||
API управления оборудованием GDC | ||
API инвентаризации KMS | ||
Науки о жизни | ||
API прямой трансляции | ||
Приложение Logback Appender | ||
Инициализатор сервлета журналирования | ||
API наборов данных платформы Карт | ||
API администратора маркетинговой платформы | ||
API перевода мультимедиа | ||
Знакомство с API | ||
Хранилище памяти для Redis API | ||
Торговый API | ||
Торговый API | ||
Торговый API | ||
Торговый API | ||
Торговый API | ||
Торговый API | ||
API конверсий для продавцов | ||
API LFP для торговцев | ||
API уведомлений для продавцов | ||
API торговых квот | ||
API Миграционного центра | ||
Мониторинг областей метрик | ||
Поставщик файловой системы NIO для хранения данных | ||
API NetApp | ||
API сетевых служб | ||
База данных Oracle@API | ||
API параллельного магазина | ||
Защита от фишинга | ||
API мест (новое) | ||
API-интерфейс Places Insights | ||
API симулятора политики | ||
Частный каталог | ||
API диспетчера привилегированного доступа | ||
Коннектор Pub/Sub Lite Flink | ||
API быстрой оценки миграции | ||
Рекомендации ИИ | ||
API реестра | ||
API оптимизации маршрутов | ||
Бегать | ||
API настроек Центра управления безопасностью | ||
API работоспособности службы | ||
Солнечный API | ||
API аналитики хранилища | ||
Поддержка API | ||
VMware Движок | ||
Видение AI API | ||
API событий рабочей области |
Если служба не указана в списке, google-api-java-client взаимодействует с дополнительными API Google Cloud, используя устаревший интерфейс REST.
При построении Java-приложений предпочтение следует отдавать библиотекам, указанным в таблице.
Большинству google-cloud
требуется идентификатор проекта. Существует несколько способов указать этот идентификатор проекта.
google-cloud
из Compute/App Engine нет необходимости указывать идентификатор проекта. Это автоматически выводится из производственной среды.google-cloud
где-либо еще вы можете выполнить одно из следующих действий:Укажите идентификатор проекта при создании вариантов обслуживания. Например, чтобы использовать хранилище данных из проекта с идентификатором «PROJECT_ID», вы можете написать:
Datastore datastore = DatastoreOptions . newBuilder (). setProjectId ( "PROJECT_ID" ). build (). getService ();
Укажите переменную среды GOOGLE_CLOUD_PROJECT
в качестве желаемого идентификатора проекта.
Установите идентификатор проекта с помощью Google Cloud SDK. Чтобы использовать SDK, загрузите SDK, если вы еще этого не сделали, и установите идентификатор проекта из командной строки. Например:
gcloud config set project PROJECT_ID
google-cloud
определяет идентификатор проекта из следующих источников в указанном порядке и останавливается, как только находит значение:
GOOGLE_CLOUD_PROJECT
GOOGLE_APPLICATION_CREDENTIALS
В тех случаях, когда библиотека может явно ожидать идентификатор проекта, мы предоставляем помощник, который может предоставить предполагаемый идентификатор проекта:
import com . google . cloud . ServiceOptions ;
...
String projectId = ServiceOptions . getDefaultProjectId ();
google-cloud-java
использует https://github.com/googleapis/google-auth-library-java для аутентификации запросов. google-auth-library-java
поддерживает широкий спектр типов аутентификации; дополнительные сведения см. в README проекта и javadoc.
При использовании библиотек Google Cloud из среды Google Cloud Platform, такой как Compute Engine, Kubernetes Engine или App Engine, никаких дополнительных шагов аутентификации не требуется.
Например:
Storage storage = StorageOptions . getDefaultInstance (). getService ();
или:
CloudTasksClient cloudTasksClient = CloudTasksClient . create ();
Создайте ключ учетной записи службы JSON.
После загрузки этого ключа вам необходимо выполнить одно из следующих действий:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/my/key.json
Storage storage = StorageOptions . newBuilder ()
. setCredentials ( ServiceAccountCredentials . fromStream ( new FileInputStream ( "/path/to/my/key.json" )))
. build ()
. getService ();
Если вы работаете локально для разработки/тестирования, вы можете использовать Google Cloud SDK. Создайте учетные данные приложения по умолчанию с помощью gcloud auth application-default login
, а затем google-cloud
автоматически обнаружит такие учетные данные.
Если у вас уже есть токен доступа OAuth2, вы можете использовать его для аутентификации (обратите внимание, что в этом случае токен доступа не будет обновляться автоматически):
Credentials credentials = GoogleCredentials . create ( new AccessToken ( accessToken , expirationTime ));
Storage storage = StorageOptions . newBuilder ()
. setCredentials ( credentials )
. build ()
. getService ();
или:
Credentials credentials = GoogleCredentials . create ( new AccessToken ( accessToken , expirationTime ));
CloudTasksSettings cloudTasksSettings = CloudTasksSettings . newBuilder ()
. setCredentialProvider ( FixedCredentialsProvider . create ( credentials ))
. build ();
CloudTasksClient cloudTasksClient = CloudTasksClient . create ( cloudTasksSettings );
Если учетные данные не предоставлены, google-cloud
попытается обнаружить их из среды с помощью GoogleCredentials.getApplicationDefault()
, который будет искать учетные данные приложения по умолчанию в следующих местах (по порядку):
GOOGLE_APPLICATION_CREDENTIALS
gcloud auth application-default login
Аутентификация с помощью ключей API поддерживается несколькими API Google Cloud.
Мы активно изучаем способы улучшения работы с ключами API. В настоящее время, чтобы использовать ключ API с клиентской библиотекой Java, вам необходимо вручную установить заголовок для соответствующего клиента службы.
Например, чтобы установить ключ API с помощью языковой службы:
public LanguageServiceClient createGrpcClientWithApiKey ( String apiKey ) throws Exception {
// Manually set the api key via the header
Map < String , String > header = new HashMap < String , String >() { { put ( "x-goog-api-key" , apiKey );}};
FixedHeaderProvider headerProvider = FixedHeaderProvider . create ( header );
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingGrpcChannelProvider . newBuilder (). setHeaderProvider ( headerProvider ). build ();
LanguageServiceSettings settings = LanguageServiceSettings . newBuilder (). setTransportChannelProvider ( transportChannelProvider ). build ();
LanguageServiceClient client = LanguageServiceClient . create ( settings );
return client ;
}
Пример создания экземпляра языкового клиента с использованием rest:
public LanguageServiceClient createRestClientWithApiKey ( String apiKey ) throws Exception {
// Manually set the api key header
Map < String , String > header = new HashMap < String , String >() { { put ( "x-goog-api-key" , apiKey );}};
FixedHeaderProvider headerProvider = FixedHeaderProvider . create ( header );
// Create the client
TransportChannelProvider transportChannelProvider = InstantiatingHttpJsonChannelProvider . newBuilder (). setHeaderProvider ( headerProvider ). build ();
LanguageServiceSettings settings = LanguageServiceSettings . newBuilder (). setTransportChannelProvider ( transportChannelProvider ). build ();
LanguageServiceClient client = LanguageServiceClient . create ( settings );
return client ;
}
Чтобы получить помощь, следуйте инструкциям в документе «Устранение неполадок».
Клиентские библиотеки Google Cloud используют HTTPS и gRPC для базового взаимодействия со службами. В обоих протоколах вы можете настроить прокси-сервер, используя свойства https.proxyHost
и (необязательно) https.proxyPort
.
Для более индивидуального прокси-сервера с gRPC вам потребуется предоставить ProxyDetector
в ManagedChannelBuilder
:
import com . google . api . core . ApiFunction ;
import com . google . api . gax . rpc . TransportChannelProvider ;
import com . google . cloud . tasks . v2 . CloudTasksClient ;
import com . google . cloud . tasks . v2 . CloudTasksSettings ;
import com . google . cloud . tasks . v2 . stub . CloudTasksStubSettings ;
import io . grpc . HttpConnectProxiedSocketAddress ;
import io . grpc . ManagedChannelBuilder ;
import io . grpc . ProxiedSocketAddress ;
import io . grpc . ProxyDetector ;
import javax . annotation . Nullable ;
import java . io . IOException ;
import java . net . InetSocketAddress ;
import java . net . SocketAddress ;
public CloudTasksClient getService () throws IOException {
TransportChannelProvider transportChannelProvider =
CloudTasksStubSettings . defaultGrpcTransportProviderBuilder ()
. setChannelConfigurator (
new ApiFunction < ManagedChannelBuilder , ManagedChannelBuilder >() {
@ Override
public ManagedChannelBuilder apply ( ManagedChannelBuilder managedChannelBuilder ) {
return managedChannelBuilder . proxyDetector (
new ProxyDetector () {
@ Nullable
@ Override
public ProxiedSocketAddress proxyFor ( SocketAddress socketAddress )
throws IOException {
return HttpConnectProxiedSocketAddress . newBuilder ()
. setUsername ( PROXY_USERNAME )
. setPassword ( PROXY_PASSWORD )
. setProxyAddress ( new InetSocketAddress ( PROXY_HOST , PROXY_PORT ))
. setTargetAddress (( InetSocketAddress ) socketAddress )
. build ();
}
});
}
})
. build ();
CloudTasksSettings cloudTasksSettings =
CloudTasksSettings . newBuilder ()
. setTransportChannelProvider ( transportChannelProvider )
. build ();
return CloudTasksClient . create ( cloudTasksSettings );
}
Длительные операции (LRO) часто используются для вызовов API, выполнение которых, как ожидается, займет много времени (например, подготовка экземпляра GCE или конвейера потока данных). Первоначальный вызов API создает «операцию» на сервере и возвращает идентификатор операции для отслеживания ее хода. LRO RPC имеют суффикс Async
, добавленный к имени вызова (т.е.usterControllerClient.createClusterAsync clusterControllerClient.createClusterAsync()
).
Наши сгенерированные клиенты предоставляют удобный интерфейс для запуска операции и последующего ожидания ее завершения. Это достигается путем возврата OperationFuture
. При вызове get()
для OperationFuture
клиентская библиотека опрашивает операцию, чтобы проверить ее статус.
Например, возьмем пример операции createCluster
в google-cloud-dataproc v4.20.0:
try ( ClusterControllerClient clusterControllerClient = ClusterControllerClient . create ()) {
CreateClusterRequest request =
CreateClusterRequest . newBuilder ()
. setProjectId ( "{PROJECT_ID}" )
. setRegion ( "{REGION}" )
. setCluster ( Cluster . newBuilder (). build ())
. setRequestId ( "{REQUEST_ID}" )
. setActionOnFailedPrimaryWorkers ( FailureAction . forNumber ( 0 ))
. build ();
OperationFuture < Cluster , ClusterOperationMetadata > future =
clusterControllerClient . createClusterOperationCallable (). futureCall ( request );
// Do something.
Cluster response = future . get ();
} catch ( CancellationException e ) {
// Exceeded the default RPC timeout without the Operation completing.
// Library is no longer polling for the Operation status. Consider
// increasing the timeout.
}
Операции опроса имеют тайм-аут по умолчанию, который варьируется от службы к службе. Библиотека выдаст исключение java.util.concurrent.CancellationException
с сообщением: Task was cancelled.
если тайм-аут превышает операцию. Исключение CancellationException
не означает, что серверная операция GCP была отменена. Это исключение генерируется клиентской библиотекой, когда превышено общее время ожидания без получения статуса успешного выполнения операции. Наши клиентские библиотеки учитывают настроенные значения, установленные в OperationTimedPollAlgorithm для каждого RPC.
Примечание. Клиентская библиотека управляет механизмом опроса Операции. По умолчанию нет необходимости вручную опрашивать статус самостоятельно.
Каждый LRO RPC имеет набор предварительно настроенных значений по умолчанию. Вы можете найти эти значения, выполнив поиск в классе StubSettings
каждого клиента. Настройки LRO по умолчанию инициализируются внутри метода initDefaults()
во вложенном классе Builder.
Например, в google-cloud-aiplatform v3.24.0 стандартный OperationTimedPollAlgorithm имеет следующие значения по умолчанию:
OperationTimedPollAlgorithm . create (
RetrySettings . newBuilder ()
. setInitialRetryDelay ( Duration . ofMillis ( 5000L ))
. setRetryDelayMultiplier ( 1.5 )
. setMaxRetryDelay ( Duration . ofMillis ( 45000L ))
. setInitialRpcTimeout ( Duration . ZERO )
. setRpcTimeoutMultiplier ( 1.0 )
. setMaxRpcTimeout ( Duration . ZERO )
. setTotalTimeout ( Duration . ofMillis ( 300000L ))
. build ())
И повторные попытки, и LRO используют один и тот же класс RetrySettings. Обратите внимание на соответствующую ссылку:
Значения таймаута RPC не используются в LRO и могут быть опущены или установлены значения по умолчанию ( Duration.ZERO
для таймаутов или 1.0
для множителя).
Чтобы настроить значения LRO, создайте объект OperationTimedPollAlgorithm и обновите алгоритм опроса RPC. Например:
ClusterControllerSettings . Builder settingsBuilder = ClusterControllerSettings . newBuilder ();
TimedRetryAlgorithm timedRetryAlgorithm = OperationTimedPollAlgorithm . create (
RetrySettings . newBuilder ()
. setInitialRetryDelay ( Duration . ofMillis ( 500L ))
. setRetryDelayMultiplier ( 1.5 )
. setMaxRetryDelay ( Duration . ofMillis ( 5000L ))
. setInitialRpcTimeout ( Duration . ZERO ) // ignored
. setRpcTimeoutMultiplier ( 1.0 ) // ignored
. setMaxRpcTimeout ( Duration . ZERO ) // ignored
. setTotalTimeout ( Duration . ofHours ( 24L )) // set polling timeout to 24 hours
. build ());
settingsBuilder . createClusterOperationSettings ()
. setPollingAlgorithm ( timedRetryAlgorithm );
ClusterControllerClient clusterControllerClient = ClusterControllerClient . create ( settingsBuilder . build ());
Примечание. Приведенная выше конфигурация изменяет только значения LRO для RPC createClusterOperation
. Другие RPC в клиенте по-прежнему будут использовать предварительно настроенные значения LRO каждого RPC.
Если вы используете более одной клиентской библиотеки Google Cloud, мы рекомендуем вам использовать один из наших артефактов спецификации (BOM), чтобы облегчить управление версиями зависимостей. Дополнительную информацию см. в разделе «Использование облачных клиентских библиотек».
Для использования клиентов в этом репозитории требуется Java 8 или более поздняя версия.
Клиенты в этом репозитории используют HTTP или gRPC для транспортного уровня. Все клиенты на основе HTTP должны работать во всех средах.
Для клиентов, использующих gRPC, поддерживаемые платформы ограничены платформами, которые поддерживает Forked Tomcat Native, что для архитектур означает только x86_64, а для операционных систем — Mac OS X, Windows и Linux. Кроме того, gRPC ограничивает использование платформ с ограничениями на многопоточность.
Таким образом, не поддерживаются:
Следующие среды должны работать (среди прочих):
Эта библиотека предоставляет инструменты, помогающие писать тесты для кода, использующего облачные сервисы Google.
См. ТЕСТИРОВАНИЕ, чтобы узнать больше об использовании наших помощников по тестированию.
Эта библиотека соответствует семантическому управлению версиями с некоторыми дополнительными уточнениями:
Компоненты, отмеченные @BetaApi
или @Experimental
считаются функциями «0.x» внутри библиотеки «1.x». Это означает, что они могут переключаться между второстепенными выпусками и выпусками исправлений несовместимыми способами. Эти функции не должны использоваться какой-либо библиотекой «B», у которой есть потребители, если только компоненты библиотеки B, использующие функции @BetaApi
также не помечены @BetaApi
. Функции, отмеченные как @BetaApi
, в конечном итоге станут функциями «1.x» после удаления маркера.
Особое исключение для google-cloud-java : google-cloud-java может зависеть от функций @BetaApi
в gax-java без объявления потребляющего кода @BetaApi
, поскольку gax-java и google-cloud-java движутся синхронно друг с другом. . По этой причине gax-java не следует использовать отдельно от google-cloud-java.
Компоненты, отмеченные @InternalApi
, технически являются общедоступными, но только из-за ограничений модификаторов доступа Java. Для целей semver их следует считать частными.
Интерфейсы, отмеченные @InternalExtensionOnly
, являются общедоступными, но должны реализовываться только внутренними классами. Для целей semver мы оставляем за собой право добавлять к этим интерфейсам без реализаций по умолчанию (для Java 7).
Обратите внимание, что эти клиенты в настоящее время находятся в стадии активной разработки. В любой выпуск версии 0.xy в любое время могут быть внесены обратно несовместимые изменения.
Ожидается, что библиотеки, определенные на уровне качества «Стабильный», будут стабильными, и все обновления в библиотеках гарантированно будут обратно совместимы. Любые обратно несовместимые изменения приведут к увеличению основной версии (1.xy -> 2.0.0).
Библиотеки, определенные на уровне качества Preview, все еще находятся в стадии разработки и с большей вероятностью получат обратно несовместимые обновления. Кроме того, библиотеки предварительной версии могут быть признаны устаревшими и удалены еще до того, как они будут повышены до уровня предварительной или стабильной версии.
Если вы используете IntelliJ или Eclipse, вы можете добавить клиентские библиотеки в свой проект с помощью этих плагинов IDE:
Помимо добавления клиентских библиотек, плагины предоставляют дополнительные функции, такие как управление ключами учетной записи службы. Более подробную информацию можно найти в документации каждого плагина.
Эти клиентские библиотеки можно использовать в стандартной среде App Engine для среды выполнения Java 8 и в гибкой среде App Engine (включая среду выполнения Compat). Большинство библиотек не работают со стандартом App Engine для среды выполнения Java 7. Однако Datastore, Storage и Bigquery должны работать.
Вклад в эту библиотеку всегда приветствуется и поощряется.
Дополнительную информацию о том, как начать, см. в документации google-cloud
CONTRIBUTING и в общей документации.
Обратите внимание, что этот проект выпущен с Кодексом поведения участников. Участвуя в этом проекте, вы соглашаетесь соблюдать его условия. Дополнительную информацию см. в Кодексе поведения.
Apache 2.0 — дополнительную информацию см. в разделе «ЛИЦЕНЗИЯ».