Отсутствует действительный ключ Stackdriver Spring Boot - PullRequest
0 голосов
/ 04 февраля 2020

Я настраиваю приложение с весенней загрузкой, в котором логи отправляются в google cloud stackdriver. Я использую приложение обратного входа для ведения журнала Stackdriver и файл журнала из их документации https://cloud.google.com/logging/docs/setup/java.

Я добавил GOOGLE_CLOUD_PROJECT и GOOGLE_APPLICATION_CREDENTIALS в Intellij к переменным среды. Далее, я также установил их как переменные окружения в windows. Когда я запускаю приложение, я всегда получаю: PERMISSION_DENIED: The request is missing a valid API key.

Я установил gcloud, и там я могу использовать файл cred в качестве служебной учетной записи с правами администратора для записи и чтения журналов. Таким образом, файл должен работать так же, как и права доступа.

Я также пытался установить ключ в качестве переменной среды, но это тоже не помогло. Что мне не хватает, что это не работает?

Ответы [ 2 ]

1 голос
/ 04 февраля 2020

Я добавил GOOGLE_CLOUD_PROJECT и GOOGLE_APPLICATION_CREDENTIALS в Intellij к переменным среды.

Вы уверены, что переменные среды выбираются из IntelliJ? Проверяли ли вы, что переменные среды задаются с помощью CLI?

Если вы используете библиотеку spring-cloud-gcp-starter-logging для интеграции с Stackdriver, тогда установка переменных среды должна работать нормально.

From docs :

В связи с тем, как настроено ведение журнала, идентификатор проекта GCP и учетные данные, определенные в application.properties, игнорируются.

Вместо этого вы должны установить переменные окружения GOOGLE_CLOUD_PROJECT и GOOGLE_APPLICATION_CREDENTIALS для идентификатора проекта и расположения личного ключа учетных данных соответственно. Это легко сделать, если вы используете Google Cloud SDK, используя команды набора настроек проекта gcloud [YOUR_PROJECT_ID] и команды входа по умолчанию для приложения gcloud auth, соответственно.

Для работы приложения Spring Boot при ведении журнала Stackdriver вы можете установить переменные окружения GOOGLE_CLOUD_PROJECT и GOOGLE_APPLICATION_CREDENTIALS следующим образом:

export GOOGLE_CLOUD_PROJECT=`gcloud config get-value core.project`
export GOOGLE_APPLICATION_CREDENTIALS=`gcloud auth application-default login`

Я установил gcloud, и там я могу использовать файл cred в качестве учетной записи службы с правами администратора для писать и читать журналы.

Вы не должны использовать права администратора. Вы должны использовать служебную учетную запись с roles/logging.logWriter и (при необходимости) roles/logging.viewer ролями.

1 голос
/ 04 февраля 2020

Я нашел проблему. Файл GOOGLE_APPLICATION_CREDENTIALS должен быть установлен через logback. xml с тегом credentialsFile.

...