Отсутствует действительный ключ Stackdriver Spring Boot

Я настраиваю приложение для весенней загрузки, в котором журналы отправляются в Google Cloud stackdriver. Я использую приложение logback для Stackdriver Logging и файл logback из их документации 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 в качестве учетной записи службы с правами администратора для записи и чтения журналов. Таким образом, файл должен работать так же, как и разрешения.

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


person Lira    schedule 04.02.2020    source источник


Ответы (2)


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

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

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

Из docs а>:

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

Вместо этого вы должны установить переменные среды GOOGLE_CLOUD_PROJECT и GOOGLE_APPLICATION_CREDENTIALS для идентификатора проекта и местоположения закрытого ключа учетных данных, соответственно. Это легко сделать, если вы используете Google Cloud SDK, используя команды gcloud config set project [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 ролями.

person narendra-choudhary    schedule 04.02.2020

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

person Lira    schedule 04.02.2020