Я использую Google Cloud Function для Go / Golang (Http-триггер) и настраиваю данные для хранения данных в базе данных Firestore.Но клиент всегда терпит неудачу с
"rpc error: code = Unavailable desc = все SubConn находятся в TransientFailure, последняя ошибка соединения: ошибка соединения: desc = transport: аутентификация не прошла: аутентификация по контексту превышена».
База данных была создана через консоль администратора Firebase (https://console.firebase.google.com) со следующими правилами
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Я работаю по плану Pay-as-you-Go.
«важный» импорт
import (
"context"
...
firebase "firebase.google.com/go"
)
код для сохранения
func saveValues(registration shared.Registration) error {
ctx := context.Background()
conf := &firebase.Config{ProjectID: projectID}
app, err := firebase.NewApp(ctx, conf)
if err != nil {
return fmt.Errorf("error creating client %v", err)
}
client, err := app.Firestore(ctx)
if err != nil {
return fmt.Errorf("Failed to create client %v", err)
}
defer client.Close()
t := time.Now()
documentName := "registration"
_, err = client.Collection("registration").Doc(documentName).Set(ctx, registration)
if err != nil {
return fmt.Errorf("Failed adding registration: %v", err)
}
return nil
}
go.mod файл:
module githib.com/kkoehler/<my-project>
require (
cloud.google.com/go v0.37.4
firebase.google.com/go v3.7.0+incompatible
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/sirupsen/logrus v1.4.1
golang.org/x/oauth2 v0.0.0-20190402181905-9f3314589c9a // indirect
google.golang.org/api v0.3.2 // indirect
)
Последний вызов (client.Collection("registration").Doc(documentName).Set(ctx, registration)
) происходит сбой с данным сообщением об ошибке.
Можно ли получить дополнительную информацию об этой проблеме? Любое предложение?
Спасибо, Кристиан
Решение
Это проблема с разрешениями в пожарном хранилище. Если я изменяю разрешения для базы данных пожарного хранилища, она работает. Временно изменено, чтобы писать для всех; -)