Я разрабатываю приложение Go в проекте GCP и использую службу облачного ведения журналов Google. У меня проблемы с запуском приложения, так как оно говорит, что у меня неверные учетные данные для аутентификации, когда я использую ключ json учетной записи службы.
Вот фрагмент кода с ошибкой:
c, cErr := Load(".env")
if cErr != nil {
log.Fatalf("could not load config: %s", cErr)
return
}
// initializes logger which writes to stdout
ctx := context.Background()
opt := option.WithCredentialsFile(c.GoogleApplicationCredentials);
loggerClient, clientErr := logging.NewClient(ctx, "poc-projects-01", opt)
if clientErr != nil {
log.Fatal(clientErr)
}
А вот определение функции Load()
:
func Load(file string) (*Config, error) {
viper.SetConfigFile(file)
viper.AddConfigPath(".")
viper.AutomaticEnv()
if err := viper.ReadInConfig(); err != nil {
return nil, err
}
c := &Config{
GoogleApplicationCredentials: viper.GetString("GOOGLE_APPLICATION_CREDENTIALS"),
}
return c, nil
}
У меня есть файл .env
со следующим содержимым:
GOOGLE_APPLICATION_CREDENTIALS=json/path-to-json.json
Я не знаю, почему он говорит, что срок действия токена истек, хотя это единственный ключ json служебной учетной записи, который у меня есть на GCP и на моем локальном компьютере.
Это на моем компьютере
Поэтому не используйте файл ключа сервисной учетной записи, это не очень безопасно. Предпочитаю первую строку ответа.
Можете ли вы запустить gcloud auth application-logon по умолчанию и убедиться, что вы установили правильный проект.
Проверьте, установлен ли GOOGLEAPPLICATIONSCREDENTALS
с допустимым ключом JSON и правильно ли установлена переменная среды, для проверки выполните приведенную ниже команду.
echo $GOOGLE_APPLICATION_CREDENTIALS
Если команда не возвращает правильный путь к ключу JSON, вы можете установить переменную среды с помощью этой команды:
export GOOGLE_APPLICATION_CREDENTIALS=/path/to/json/key.json
После того, как вы убедились, что ключ JSON действителен, а переменная среды установлена правильно, вы сможете запустить свое приложение. В качестве альтернативы вы можете попытаться удалить файл .env, а затем воссоздать его с ключом json сервисной учетной записи . , который должен повторно сгенерировать токен и сделать его действительным.
Прикрепляю документацию по устранению неполадок для справки.
Где работает ваше приложение? В облаке Google? На твоем компьютере?